diff options
author | Luc Verhaegen <libv@skynet.be> | 2010-03-08 07:39:43 +0100 |
---|---|---|
committer | Luc Verhaegen <libv@skynet.be> | 2010-03-08 07:39:43 +0100 |
commit | c670a69782e6391910331c32cfe33059bb7f4d83 (patch) | |
tree | a04baa81b4032b7494fb4cd42cd53d6b149505f9 /progs | |
parent | f0e99179bcf95f39ce7c4d2c2270e8a4357eaf19 (diff) |
Import debian's mesa-7.7-4 release.debian-7.7-4
Diffstat (limited to 'progs')
562 files changed, 0 insertions, 94192 deletions
diff --git a/progs/demos/Windows/all.dsp b/progs/demos/Windows/all.dsp deleted file mode 100644 index 5c9b3450da..0000000000 --- a/progs/demos/Windows/all.dsp +++ /dev/null @@ -1,101 +0,0 @@ -# Microsoft Developer Studio Project File - Name="all" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Application" 0x0101 - -CFG=all - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "all.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "all.mak" CFG="all - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "all - Win32 Release" (based on "Win32 (x86) Application") -!MESSAGE "all - Win32 Debug" (based on "Win32 (x86) Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "all - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386 - -!ELSEIF "$(CFG)" == "all - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "all - Win32 Release" -# Name "all - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/progs/demos/Windows/bounce.dsp b/progs/demos/Windows/bounce.dsp deleted file mode 100644 index ff33ba6e13..0000000000 --- a/progs/demos/Windows/bounce.dsp +++ /dev/null @@ -1,112 +0,0 @@ -# Microsoft Developer Studio Project File - Name="bounce" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=bounce - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "bounce.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "bounce.mak" CFG="bounce - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "bounce - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "bounce - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "bounce - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../bounce.exe" -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ELSEIF "$(CFG)" == "bounce - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../bounce.exe" /pdbtype:sept -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "bounce - Win32 Release" -# Name "bounce - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\bounce.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/progs/demos/Windows/clearspd.dsp b/progs/demos/Windows/clearspd.dsp deleted file mode 100644 index 58fadcca2d..0000000000 --- a/progs/demos/Windows/clearspd.dsp +++ /dev/null @@ -1,112 +0,0 @@ -# Microsoft Developer Studio Project File - Name="clearspd" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=clearspd - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "clearspd.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "clearspd.mak" CFG="clearspd - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "clearspd - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "clearspd - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "clearspd - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../clearspd.exe" -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ELSEIF "$(CFG)" == "clearspd - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../clearspd.exe" /pdbtype:sept -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "clearspd - Win32 Release" -# Name "clearspd - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\clearspd.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/progs/demos/Windows/cubemap.dsp b/progs/demos/Windows/cubemap.dsp deleted file mode 100644 index 7c37b1b3ea..0000000000 --- a/progs/demos/Windows/cubemap.dsp +++ /dev/null @@ -1,112 +0,0 @@ -# Microsoft Developer Studio Project File - Name="cubemap" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=cubemap - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "cubemap.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "cubemap.mak" CFG="cubemap - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "cubemap - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "cubemap - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "cubemap - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../cubemap.exe" -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ELSEIF "$(CFG)" == "cubemap - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../cubemap.exe" /pdbtype:sept -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "cubemap - Win32 Release" -# Name "cubemap - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\cubemap.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/progs/demos/Windows/demos.dsw b/progs/demos/Windows/demos.dsw deleted file mode 100644 index d989e736de..0000000000 --- a/progs/demos/Windows/demos.dsw +++ /dev/null @@ -1,782 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "all"=".\all.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name bounce - End Project Dependency - Begin Project Dependency - Project_Dep_Name clearspd - End Project Dependency - Begin Project Dependency - Project_Dep_Name cubemap - End Project Dependency - Begin Project Dependency - Project_Dep_Name drawpix - End Project Dependency - Begin Project Dependency - Project_Dep_Name fire - End Project Dependency - Begin Project Dependency - Project_Dep_Name gears - End Project Dependency - Begin Project Dependency - Project_Dep_Name geartrain - End Project Dependency - Begin Project Dependency - Project_Dep_Name glinfo - End Project Dependency - Begin Project Dependency - Project_Dep_Name gloss - End Project Dependency - Begin Project Dependency - Project_Dep_Name gltestperf - End Project Dependency - Begin Project Dependency - Project_Dep_Name glutfx - End Project Dependency - Begin Project Dependency - Project_Dep_Name ipers - End Project Dependency - Begin Project Dependency - Project_Dep_Name isosurf - End Project Dependency - Begin Project Dependency - Project_Dep_Name lodbias - End Project Dependency - Begin Project Dependency - Project_Dep_Name morph3d - End Project Dependency - Begin Project Dependency - Project_Dep_Name multiarb - End Project Dependency - Begin Project Dependency - Project_Dep_Name occlude - End Project Dependency - Begin Project Dependency - Project_Dep_Name osdemo - End Project Dependency - Begin Project Dependency - Project_Dep_Name paltex - End Project Dependency - Begin Project Dependency - Project_Dep_Name pixeltex - End Project Dependency - Begin Project Dependency - Project_Dep_Name pointblast - End Project Dependency - Begin Project Dependency - Project_Dep_Name rain - End Project Dependency - Begin Project Dependency - Project_Dep_Name ray - End Project Dependency - Begin Project Dependency - Project_Dep_Name readpix - End Project Dependency - Begin Project Dependency - Project_Dep_Name reflect - End Project Dependency - Begin Project Dependency - Project_Dep_Name renormal - End Project Dependency - Begin Project Dependency - Project_Dep_Name shadowtex - End Project Dependency - Begin Project Dependency - Project_Dep_Name spectex - End Project Dependency - Begin Project Dependency - Project_Dep_Name stex3d - End Project Dependency - Begin Project Dependency - Project_Dep_Name teapot - End Project Dependency - Begin Project Dependency - Project_Dep_Name terrain - End Project Dependency - Begin Project Dependency - Project_Dep_Name tessdemo - End Project Dependency - Begin Project Dependency - Project_Dep_Name texcyl - End Project Dependency - Begin Project Dependency - Project_Dep_Name texdown - End Project Dependency - Begin Project Dependency - Project_Dep_Name texenv - End Project Dependency - Begin Project Dependency - Project_Dep_Name texobj - End Project Dependency - Begin Project Dependency - Project_Dep_Name trispd - End Project Dependency - Begin Project Dependency - Project_Dep_Name tunnel - End Project Dependency - Begin Project Dependency - Project_Dep_Name tunnel2 - End Project Dependency - Begin Project Dependency - Project_Dep_Name winpos - End Project Dependency - Begin Project Dependency - Project_Dep_Name spriteblast - End Project Dependency - Begin Project Dependency - Project_Dep_Name glut - End Project Dependency -}}} - -############################################################################### - -Project: "bounce"=".\bounce.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut - End Project Dependency -}}} - -############################################################################### - -Project: "clearspd"=".\clearspd.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut - End Project Dependency -}}} - -############################################################################### - -Project: "cubemap"=".\cubemap.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut - End Project Dependency -}}} - -############################################################################### - -Project: "drawpix"=".\drawpix.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut - End Project Dependency -}}} - -############################################################################### - -Project: "fire"=".\fire.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut - End Project Dependency -}}} - -############################################################################### - -Project: "gears"=".\gears.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut - End Project Dependency -}}} - -############################################################################### - -Project: "geartrain"=".\geartrain.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut - End Project Dependency -}}} - -############################################################################### - -Project: "glinfo"=".\glinfo.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut - End Project Dependency -}}} - -############################################################################### - -Project: "gloss"=".\gloss.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut - End Project Dependency -}}} - -############################################################################### - -Project: "gltestperf"=".\gltestperf.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut - End Project Dependency -}}} - -############################################################################### - -Project: "glut"="..\..\..\src\glut\glx\glut.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "glutfx"=".\glutfx.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut - End Project Dependency -}}} - -############################################################################### - -Project: "ipers"=".\ipers.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut - End Project Dependency -}}} - -############################################################################### - -Project: "isosurf"=".\isosurf.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut - End Project Dependency -}}} - -############################################################################### - -Project: "lodbias"=".\loadbias.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut - End Project Dependency -}}} - -############################################################################### - -Project: "morph3d"=".\morph3d.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut - End Project Dependency -}}} - -############################################################################### - -Project: "multiarb"=".\multiarb.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut - End Project Dependency -}}} - -############################################################################### - -Project: "occlude"=".\occlude.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut - End Project Dependency -}}} - -############################################################################### - -Project: "osdemo"=".\osdemo.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut - End Project Dependency -}}} - -############################################################################### - -Project: "paltex"=".\paltex.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut - End Project Dependency -}}} - -############################################################################### - -Project: "pixeltex"=".\pixeltex.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut - End Project Dependency -}}} - -############################################################################### - -Project: "pointblast"=".\pointblast.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut - End Project Dependency -}}} - -############################################################################### - -Project: "rain"=".\rain.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut - End Project Dependency -}}} - -############################################################################### - -Project: "ray"=".\ray.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut - End Project Dependency -}}} - -############################################################################### - -Project: "readpix"=".\readpix.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut - End Project Dependency -}}} - -############################################################################### - -Project: "reflect"=".\reflect.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut - End Project Dependency -}}} - -############################################################################### - -Project: "renormal"=".\renormal.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut - End Project Dependency -}}} - -############################################################################### - -Project: "shadowtex"=".\shadowtex.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut - End Project Dependency -}}} - -############################################################################### - -Project: "spectex"=".\spectex.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut - End Project Dependency -}}} - -############################################################################### - -Project: "spriteblast"=".\spriteblast.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut - End Project Dependency -}}} - -############################################################################### - -Project: "stex3d"=".\stex3d.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut - End Project Dependency -}}} - -############################################################################### - -Project: "teapot"=".\teapot.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut - End Project Dependency -}}} - -############################################################################### - -Project: "terrain"=".\terrain.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut - End Project Dependency -}}} - -############################################################################### - -Project: "tessdemo"=".\tessdemo.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut - End Project Dependency -}}} - -############################################################################### - -Project: "texcyl"=".\texcyl.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut - End Project Dependency -}}} - -############################################################################### - -Project: "texdown"=".\texdown.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut - End Project Dependency -}}} - -############################################################################### - -Project: "texenv"=".\texenv.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut - End Project Dependency -}}} - -############################################################################### - -Project: "texobj"=".\texobj.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut - End Project Dependency -}}} - -############################################################################### - -Project: "trispd"=".\trispd.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut - End Project Dependency -}}} - -############################################################################### - -Project: "tunnel"=".\tunnel.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut - End Project Dependency -}}} - -############################################################################### - -Project: "tunnel2"=".\tunnel2.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut - End Project Dependency -}}} - -############################################################################### - -Project: "winpos"=".\winpos.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name glut - End Project Dependency -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/progs/demos/Windows/drawpix.dsp b/progs/demos/Windows/drawpix.dsp deleted file mode 100644 index f21be17792..0000000000 --- a/progs/demos/Windows/drawpix.dsp +++ /dev/null @@ -1,112 +0,0 @@ -# Microsoft Developer Studio Project File - Name="drawpix" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=drawpix - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "drawpix.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "drawpix.mak" CFG="drawpix - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "drawpix - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "drawpix - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "drawpix - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../" /I "../../../include" /I "../../util" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../drawpix.exe" -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ELSEIF "$(CFG)" == "drawpix - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../util" /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../drawpix.exe" /pdbtype:sept -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "drawpix - Win32 Release" -# Name "drawpix - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\drawpix.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/progs/demos/Windows/fire.dsp b/progs/demos/Windows/fire.dsp deleted file mode 100644 index 9d046a4c6e..0000000000 --- a/progs/demos/Windows/fire.dsp +++ /dev/null @@ -1,112 +0,0 @@ -# Microsoft Developer Studio Project File - Name="fire" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=fire - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "fire.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "fire.mak" CFG="fire - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "fire - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "fire - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "fire - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../util" /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../fire.exe" -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ELSEIF "$(CFG)" == "fire - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../util" /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../fire.exe" /pdbtype:sept -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "fire - Win32 Release" -# Name "fire - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\fire.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/progs/demos/Windows/gears.dsp b/progs/demos/Windows/gears.dsp deleted file mode 100644 index 2cf6b1a826..0000000000 --- a/progs/demos/Windows/gears.dsp +++ /dev/null @@ -1,112 +0,0 @@ -# Microsoft Developer Studio Project File - Name="gears" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=gears - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "gears.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "gears.mak" CFG="gears - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "gears - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "gears - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "gears - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../gears.exe" -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ELSEIF "$(CFG)" == "gears - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../gears.exe" /pdbtype:sept -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "gears - Win32 Release" -# Name "gears - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\gears.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/progs/demos/Windows/geartrain.dsp b/progs/demos/Windows/geartrain.dsp deleted file mode 100644 index f3e499fea0..0000000000 --- a/progs/demos/Windows/geartrain.dsp +++ /dev/null @@ -1,112 +0,0 @@ -# Microsoft Developer Studio Project File - Name="geartrain" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=geartrain - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "geartrain.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "geartrain.mak" CFG="geartrain - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "geartrain - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "geartrain - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "geartrain - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../geartrain.exe" -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ELSEIF "$(CFG)" == "geartrain - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../geartrain.exe" /pdbtype:sept -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "geartrain - Win32 Release" -# Name "geartrain - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\geartrain.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/progs/demos/Windows/glinfo.dsp b/progs/demos/Windows/glinfo.dsp deleted file mode 100644 index 7a2c65a0d1..0000000000 --- a/progs/demos/Windows/glinfo.dsp +++ /dev/null @@ -1,112 +0,0 @@ -# Microsoft Developer Studio Project File - Name="glinfo" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=glinfo - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "glinfo.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "glinfo.mak" CFG="glinfo - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "glinfo - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "glinfo - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "glinfo - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../glinfo.exe" -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ELSEIF "$(CFG)" == "glinfo - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../glinfo.exe" /pdbtype:sept -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "glinfo - Win32 Release" -# Name "glinfo - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\glinfo.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/progs/demos/Windows/gloss.dsp b/progs/demos/Windows/gloss.dsp deleted file mode 100644 index 9a6edd79b1..0000000000 --- a/progs/demos/Windows/gloss.dsp +++ /dev/null @@ -1,112 +0,0 @@ -# Microsoft Developer Studio Project File - Name="gloss" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=gloss - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "gloss.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "gloss.mak" CFG="gloss - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "gloss - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "gloss - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "gloss - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../util" /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../gloss.exe" -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ELSEIF "$(CFG)" == "gloss - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../util" /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../gloss.exe" /pdbtype:sept -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "gloss - Win32 Release" -# Name "gloss - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\gloss.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/progs/demos/Windows/gltestperf.dsp b/progs/demos/Windows/gltestperf.dsp deleted file mode 100644 index e3d8df6b98..0000000000 --- a/progs/demos/Windows/gltestperf.dsp +++ /dev/null @@ -1,112 +0,0 @@ -# Microsoft Developer Studio Project File - Name="gltestperf" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=gltestperf - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "gltestperf.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "gltestperf.mak" CFG="gltestperf - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "gltestperf - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "gltestperf - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "gltestperf - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../gltestperf.exe" -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ELSEIF "$(CFG)" == "gltestperf - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../gltestperf.exe" /pdbtype:sept -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "gltestperf - Win32 Release" -# Name "gltestperf - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\gltestperf.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/progs/demos/Windows/glutfx.dsp b/progs/demos/Windows/glutfx.dsp deleted file mode 100644 index 39bc8574af..0000000000 --- a/progs/demos/Windows/glutfx.dsp +++ /dev/null @@ -1,112 +0,0 @@ -# Microsoft Developer Studio Project File - Name="glutfx" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=glutfx - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "glutfx.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "glutfx.mak" CFG="glutfx - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "glutfx - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "glutfx - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "glutfx - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../glutfx.exe" -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ELSEIF "$(CFG)" == "glutfx - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../glutfx.exe" /pdbtype:sept -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "glutfx - Win32 Release" -# Name "glutfx - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\glutfx.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/progs/demos/Windows/ipers.dsp b/progs/demos/Windows/ipers.dsp deleted file mode 100644 index b5ccb82afb..0000000000 --- a/progs/demos/Windows/ipers.dsp +++ /dev/null @@ -1,112 +0,0 @@ -# Microsoft Developer Studio Project File - Name="ipers" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=ipers - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "ipers.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "ipers.mak" CFG="ipers - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "ipers - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "ipers - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "ipers - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../util" /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../ipers.exe" -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ELSEIF "$(CFG)" == "ipers - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../util" /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../ipers.exe" /pdbtype:sept -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "ipers - Win32 Release" -# Name "ipers - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\ipers.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/progs/demos/Windows/isosurf.dsp b/progs/demos/Windows/isosurf.dsp deleted file mode 100644 index 5a112d457b..0000000000 --- a/progs/demos/Windows/isosurf.dsp +++ /dev/null @@ -1,112 +0,0 @@ -# Microsoft Developer Studio Project File - Name="isosurf" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=isosurf - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "isosurf.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "isosurf.mak" CFG="isosurf - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "isosurf - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "isosurf - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "isosurf - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../util" /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../isosurf.exe" -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ELSEIF "$(CFG)" == "isosurf - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../util" /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../isosurf.exe" /pdbtype:sept -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "isosurf - Win32 Release" -# Name "isosurf - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\isosurf.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/progs/demos/Windows/loadbias.dsp b/progs/demos/Windows/loadbias.dsp deleted file mode 100644 index b7cfb5efcb..0000000000 --- a/progs/demos/Windows/loadbias.dsp +++ /dev/null @@ -1,112 +0,0 @@ -# Microsoft Developer Studio Project File - Name="lodbias" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=lodbias - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "lodbias.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "lodbias.mak" CFG="lodbias - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "lodbias - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "lodbias - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "lodbias - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../util" /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../lodbias.exe" -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ELSEIF "$(CFG)" == "lodbias - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../util" /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../lodbias.exe" /pdbtype:sept -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "lodbias - Win32 Release" -# Name "lodbias - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\lodbias.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/progs/demos/Windows/morph3d.dsp b/progs/demos/Windows/morph3d.dsp deleted file mode 100644 index 05f7fea51a..0000000000 --- a/progs/demos/Windows/morph3d.dsp +++ /dev/null @@ -1,112 +0,0 @@ -# Microsoft Developer Studio Project File - Name="morph3d" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=morph3d - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "morph3d.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "morph3d.mak" CFG="morph3d - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "morph3d - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "morph3d - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "morph3d - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../morph3d.exe" -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ELSEIF "$(CFG)" == "morph3d - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../morph3d.exe" /pdbtype:sept -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "morph3d - Win32 Release" -# Name "morph3d - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\morph3d.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/progs/demos/Windows/multiarb.dsp b/progs/demos/Windows/multiarb.dsp deleted file mode 100644 index ff13579a41..0000000000 --- a/progs/demos/Windows/multiarb.dsp +++ /dev/null @@ -1,112 +0,0 @@ -# Microsoft Developer Studio Project File - Name="multiarb" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=multiarb - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "multiarb.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "multiarb.mak" CFG="multiarb - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "multiarb - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "multiarb - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "multiarb - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../util" /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../multiarb.exe" -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ELSEIF "$(CFG)" == "multiarb - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../util" /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../multiarb.exe" /pdbtype:sept -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "multiarb - Win32 Release" -# Name "multiarb - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\multiarb.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/progs/demos/Windows/occlude.dsp b/progs/demos/Windows/occlude.dsp deleted file mode 100644 index 98723303d9..0000000000 --- a/progs/demos/Windows/occlude.dsp +++ /dev/null @@ -1,112 +0,0 @@ -# Microsoft Developer Studio Project File - Name="occlude" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=occlude - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "occlude.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "occlude.mak" CFG="occlude - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "occlude - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "occlude - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "occlude - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../occlude.exe" -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ELSEIF "$(CFG)" == "occlude - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../occlude.exe" /pdbtype:sept -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "occlude - Win32 Release" -# Name "occlude - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\occlude.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/progs/demos/Windows/osdemo.dsp b/progs/demos/Windows/osdemo.dsp deleted file mode 100644 index 2d1d437f71..0000000000 --- a/progs/demos/Windows/osdemo.dsp +++ /dev/null @@ -1,112 +0,0 @@ -# Microsoft Developer Studio Project File - Name="osdemo" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=osdemo - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "osdemo.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "osdemo.mak" CFG="osdemo - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "osdemo - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "osdemo - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "osdemo - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB ../../../lib/OSMESA32.LIB /nologo /subsystem:console /machine:I386 /out:"../osdemo.exe" -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ELSEIF "$(CFG)" == "osdemo - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB ../../../lib/OSMESA32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../osdemo.exe" /pdbtype:sept -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "osdemo - Win32 Release" -# Name "osdemo - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\osdemo.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/progs/demos/Windows/paltex.dsp b/progs/demos/Windows/paltex.dsp deleted file mode 100644 index 6f43ff97cd..0000000000 --- a/progs/demos/Windows/paltex.dsp +++ /dev/null @@ -1,112 +0,0 @@ -# Microsoft Developer Studio Project File - Name="paltex" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=paltex - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "paltex.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "paltex.mak" CFG="paltex - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "paltex - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "paltex - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "paltex - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../paltex.exe" -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ELSEIF "$(CFG)" == "paltex - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../paltex.exe" /pdbtype:sept -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "paltex - Win32 Release" -# Name "paltex - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\paltex.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/progs/demos/Windows/pixeltex.dsp b/progs/demos/Windows/pixeltex.dsp deleted file mode 100644 index d6e66c821a..0000000000 --- a/progs/demos/Windows/pixeltex.dsp +++ /dev/null @@ -1,112 +0,0 @@ -# Microsoft Developer Studio Project File - Name="pixeltex" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=pixeltex - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "pixeltex.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "pixeltex.mak" CFG="pixeltex - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "pixeltex - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "pixeltex - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "pixeltex - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../util" /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../pixeltex.exe" -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ELSEIF "$(CFG)" == "pixeltex - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../util" /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../pixeltex.exe" /pdbtype:sept -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "pixeltex - Win32 Release" -# Name "pixeltex - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\pixeltex.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/progs/demos/Windows/pointblast.dsp b/progs/demos/Windows/pointblast.dsp deleted file mode 100644 index 0c6f26ca02..0000000000 --- a/progs/demos/Windows/pointblast.dsp +++ /dev/null @@ -1,112 +0,0 @@ -# Microsoft Developer Studio Project File - Name="pointblast" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=pointblast - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "pointblast.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "pointblast.mak" CFG="pointblast - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "pointblast - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "pointblast - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "pointblast - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../pointblast.exe" -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ELSEIF "$(CFG)" == "pointblast - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../pointblast.exe" /pdbtype:sept -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "pointblast - Win32 Release" -# Name "pointblast - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\pointblast.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/progs/demos/Windows/rain.dsp b/progs/demos/Windows/rain.dsp deleted file mode 100644 index 63102f13a5..0000000000 --- a/progs/demos/Windows/rain.dsp +++ /dev/null @@ -1,112 +0,0 @@ -# Microsoft Developer Studio Project File - Name="rain" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=rain - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "rain.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "rain.mak" CFG="rain - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "rain - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "rain - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "rain - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../util" /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../rain.exe" -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ELSEIF "$(CFG)" == "rain - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../util" /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../rain.exe" /pdbtype:sept -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "rain - Win32 Release" -# Name "rain - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\rain.cxx -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/progs/demos/Windows/ray.dsp b/progs/demos/Windows/ray.dsp deleted file mode 100644 index 425d4eb258..0000000000 --- a/progs/demos/Windows/ray.dsp +++ /dev/null @@ -1,112 +0,0 @@ -# Microsoft Developer Studio Project File - Name="ray" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=ray - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "ray.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "ray.mak" CFG="ray - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "ray - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "ray - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "ray - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../ray.exe" -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ELSEIF "$(CFG)" == "ray - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../ray.exe" /pdbtype:sept -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "ray - Win32 Release" -# Name "ray - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\ray.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/progs/demos/Windows/readpix.dsp b/progs/demos/Windows/readpix.dsp deleted file mode 100644 index ca0b30b604..0000000000 --- a/progs/demos/Windows/readpix.dsp +++ /dev/null @@ -1,112 +0,0 @@ -# Microsoft Developer Studio Project File - Name="readpix" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=readpix - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "readpix.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "readpix.mak" CFG="readpix - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "readpix - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "readpix - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "readpix - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../util" /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../readpix.exe" -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ELSEIF "$(CFG)" == "readpix - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../util" /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../readpix.exe" /pdbtype:sept -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "readpix - Win32 Release" -# Name "readpix - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\readpix.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/progs/demos/Windows/reflect.dsp b/progs/demos/Windows/reflect.dsp deleted file mode 100644 index 74f411a47e..0000000000 --- a/progs/demos/Windows/reflect.dsp +++ /dev/null @@ -1,112 +0,0 @@ -# Microsoft Developer Studio Project File - Name="reflect" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=reflect - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "reflect.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "reflect.mak" CFG="reflect - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "reflect - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "reflect - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "reflect - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../util" /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../reflect.exe" -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ELSEIF "$(CFG)" == "reflect - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../util" /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../reflect.exe" /pdbtype:sept -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "reflect - Win32 Release" -# Name "reflect - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\reflect.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/progs/demos/Windows/renormal.dsp b/progs/demos/Windows/renormal.dsp deleted file mode 100644 index e0059002b3..0000000000 --- a/progs/demos/Windows/renormal.dsp +++ /dev/null @@ -1,112 +0,0 @@ -# Microsoft Developer Studio Project File - Name="renormal" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=renormal - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "renormal.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "renormal.mak" CFG="bounce - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "renormal - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "renormal - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "renormal - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../renormal.exe" -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ELSEIF "$(CFG)" == "renormal - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../renormal.exe" /pdbtype:sept -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "renormal - Win32 Release" -# Name "renormal - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\renormal.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/progs/demos/Windows/shadowtex.dsp b/progs/demos/Windows/shadowtex.dsp deleted file mode 100644 index 2618431ae1..0000000000 --- a/progs/demos/Windows/shadowtex.dsp +++ /dev/null @@ -1,112 +0,0 @@ -# Microsoft Developer Studio Project File - Name="shadowtex" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=shadowtex - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "shadowtex.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "shadowtex.mak" CFG="bounce - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "shadowtex - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "shadowtex - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "shadowtex - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../shadowtex.exe" -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ELSEIF "$(CFG)" == "shadowtex - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../shadowtex.exe" /pdbtype:sept -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "shadowtex - Win32 Release" -# Name "shadowtex - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\shadowtex.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/progs/demos/Windows/spectex.dsp b/progs/demos/Windows/spectex.dsp deleted file mode 100644 index 9d385b2dc7..0000000000 --- a/progs/demos/Windows/spectex.dsp +++ /dev/null @@ -1,112 +0,0 @@ -# Microsoft Developer Studio Project File - Name="spectex" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=spectex - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "spectex.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "spectex.mak" CFG="bounce - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "spectex - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "spectex - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "spectex - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../spectex.exe" -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ELSEIF "$(CFG)" == "spectex - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../spectex.exe" /pdbtype:sept -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "spectex - Win32 Release" -# Name "spectex - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\spectex.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/progs/demos/Windows/spriteblast.dsp b/progs/demos/Windows/spriteblast.dsp deleted file mode 100644 index 0a8ea1af5b..0000000000 --- a/progs/demos/Windows/spriteblast.dsp +++ /dev/null @@ -1,112 +0,0 @@ -# Microsoft Developer Studio Project File - Name="spriteblast" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=spriteblast - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "spriteblast.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "spriteblast.mak" CFG="bounce - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "spriteblast - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "spriteblast - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "spriteblast - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../spriteblast.exe" -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ELSEIF "$(CFG)" == "spriteblast - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../spriteblast.exe" /pdbtype:sept -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "spriteblast - Win32 Release" -# Name "spriteblast - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\spriteblast.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/progs/demos/Windows/stex3d.dsp b/progs/demos/Windows/stex3d.dsp deleted file mode 100644 index 5d8c93b9e4..0000000000 --- a/progs/demos/Windows/stex3d.dsp +++ /dev/null @@ -1,112 +0,0 @@ -# Microsoft Developer Studio Project File - Name="stex3d" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=stex3d - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "stex3d.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "stex3d.mak" CFG="bounce - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "stex3d - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "stex3d - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "stex3d - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../stex3d.exe" -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ELSEIF "$(CFG)" == "stex3d - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../stex3d.exe" /pdbtype:sept -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "stex3d - Win32 Release" -# Name "stex3d - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\stex3d.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/progs/demos/Windows/teapot.dsp b/progs/demos/Windows/teapot.dsp deleted file mode 100644 index 63cea20504..0000000000 --- a/progs/demos/Windows/teapot.dsp +++ /dev/null @@ -1,112 +0,0 @@ -# Microsoft Developer Studio Project File - Name="teapot" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=teapot - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "teapot.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "teapot.mak" CFG="gloss - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "teapot - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "teapot - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "teapot - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../util" /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../teapot.exe" -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ELSEIF "$(CFG)" == "teapot - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../util" /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../teapot.exe" /pdbtype:sept -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "teapot - Win32 Release" -# Name "teapot - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\teapot.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/progs/demos/Windows/terrain.dsp b/progs/demos/Windows/terrain.dsp deleted file mode 100644 index 35c67a5f94..0000000000 --- a/progs/demos/Windows/terrain.dsp +++ /dev/null @@ -1,112 +0,0 @@ -# Microsoft Developer Studio Project File - Name="terrain" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=terrain - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "terrain.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "terrain.mak" CFG="bounce - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "terrain - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "terrain - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "terrain - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../terrain.exe" -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ELSEIF "$(CFG)" == "terrain - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../terrain.exe" /pdbtype:sept -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "terrain - Win32 Release" -# Name "terrain - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\terrain.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/progs/demos/Windows/tessdemo.dsp b/progs/demos/Windows/tessdemo.dsp deleted file mode 100644 index 62815ea8ac..0000000000 --- a/progs/demos/Windows/tessdemo.dsp +++ /dev/null @@ -1,112 +0,0 @@ -# Microsoft Developer Studio Project File - Name="tessdemo" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=tessdemo - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "tessdemo.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "tessdemo.mak" CFG="bounce - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "tessdemo - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "tessdemo - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "tessdemo - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../tessdemo.exe" -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ELSEIF "$(CFG)" == "tessdemo - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../tessdemo.exe" /pdbtype:sept -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "tessdemo - Win32 Release" -# Name "tessdemo - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\tessdemo.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/progs/demos/Windows/texcyl.dsp b/progs/demos/Windows/texcyl.dsp deleted file mode 100644 index 326a2728eb..0000000000 --- a/progs/demos/Windows/texcyl.dsp +++ /dev/null @@ -1,112 +0,0 @@ -# Microsoft Developer Studio Project File - Name="texcyl" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=texcyl - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "texcyl.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "texcyl.mak" CFG="gloss - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "texcyl - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "texcyl - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "texcyl - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../util" /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../texcyl.exe" -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ELSEIF "$(CFG)" == "texcyl - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../util" /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../texcyl.exe" /pdbtype:sept -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "texcyl - Win32 Release" -# Name "texcyl - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\texcyl.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/progs/demos/Windows/texdown.dsp b/progs/demos/Windows/texdown.dsp deleted file mode 100644 index 926e72408b..0000000000 --- a/progs/demos/Windows/texdown.dsp +++ /dev/null @@ -1,112 +0,0 @@ -# Microsoft Developer Studio Project File - Name="texdown" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=texdown - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "texdown.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "texdown.mak" CFG="bounce - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "texdown - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "texdown - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "texdown - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../texdown.exe" -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ELSEIF "$(CFG)" == "texdown - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../texdown.exe" /pdbtype:sept -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "texdown - Win32 Release" -# Name "texdown - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\texdown.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/progs/demos/Windows/texenv.dsp b/progs/demos/Windows/texenv.dsp deleted file mode 100644 index 964c6d207e..0000000000 --- a/progs/demos/Windows/texenv.dsp +++ /dev/null @@ -1,112 +0,0 @@ -# Microsoft Developer Studio Project File - Name="texenv" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=texenv - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "texenv.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "texenv.mak" CFG="bounce - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "texenv - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "texenv - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "texenv - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../texenv.exe" -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ELSEIF "$(CFG)" == "texenv - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../texenv.exe" /pdbtype:sept -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "texenv - Win32 Release" -# Name "texenv - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\texenv.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/progs/demos/Windows/texobj.dsp b/progs/demos/Windows/texobj.dsp deleted file mode 100644 index 2a44dffd36..0000000000 --- a/progs/demos/Windows/texobj.dsp +++ /dev/null @@ -1,112 +0,0 @@ -# Microsoft Developer Studio Project File - Name="texobj" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=texobj - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "texobj.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "texobj.mak" CFG="bounce - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "texobj - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "texobj - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "texobj - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../texobj.exe" -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ELSEIF "$(CFG)" == "texobj - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../texobj.exe" /pdbtype:sept -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "texobj - Win32 Release" -# Name "texobj - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\texobj.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/progs/demos/Windows/trispd.dsp b/progs/demos/Windows/trispd.dsp deleted file mode 100644 index 2ba95dc634..0000000000 --- a/progs/demos/Windows/trispd.dsp +++ /dev/null @@ -1,112 +0,0 @@ -# Microsoft Developer Studio Project File - Name="trispd" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=trispd - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "trispd.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "trispd.mak" CFG="bounce - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "trispd - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "trispd - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "trispd - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../trispd.exe" -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ELSEIF "$(CFG)" == "trispd - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../trispd.exe" /pdbtype:sept -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "trispd - Win32 Release" -# Name "trispd - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\trispd.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/progs/demos/Windows/tunnel.dsp b/progs/demos/Windows/tunnel.dsp deleted file mode 100644 index 218d372866..0000000000 --- a/progs/demos/Windows/tunnel.dsp +++ /dev/null @@ -1,112 +0,0 @@ -# Microsoft Developer Studio Project File - Name="tunnel" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=tunnel - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "tunnel.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "tunnel.mak" CFG="gloss - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "tunnel - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "tunnel - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "tunnel - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../util" /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../tunnel.exe" -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ELSEIF "$(CFG)" == "tunnel - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../util" /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../tunnel.exe" /pdbtype:sept -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "tunnel - Win32 Release" -# Name "tunnel - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\tunnel.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/progs/demos/Windows/tunnel2.dsp b/progs/demos/Windows/tunnel2.dsp deleted file mode 100644 index bd2b6c07f2..0000000000 --- a/progs/demos/Windows/tunnel2.dsp +++ /dev/null @@ -1,112 +0,0 @@ -# Microsoft Developer Studio Project File - Name="tunnel2" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=tunnel2 - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "tunnel2.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "tunnel2.mak" CFG="gloss - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "tunnel2 - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "tunnel2 - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "tunnel2 - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../util" /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../tunnel2.exe" -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ELSEIF "$(CFG)" == "tunnel2 - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../util" /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../tunnel2.exe" /pdbtype:sept -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "tunnel2 - Win32 Release" -# Name "tunnel2 - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\tunnel2.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/progs/demos/Windows/winpos.dsp b/progs/demos/Windows/winpos.dsp deleted file mode 100644 index a388a425e9..0000000000 --- a/progs/demos/Windows/winpos.dsp +++ /dev/null @@ -1,112 +0,0 @@ -# Microsoft Developer Studio Project File - Name="winpos" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=winpos - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "winpos.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "winpos.mak" CFG="gloss - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "winpos - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "winpos - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "winpos - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../util" /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../winpos.exe" -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ELSEIF "$(CFG)" == "winpos - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../util" /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../winpos.exe" /pdbtype:sept -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "winpos - Win32 Release" -# Name "winpos - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\winpos.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/progs/directfb/Makefile b/progs/directfb/Makefile deleted file mode 100644 index 93c2a7df14..0000000000 --- a/progs/directfb/Makefile +++ /dev/null @@ -1,38 +0,0 @@ -# progs/directfb/Makefile - -TOP = ../.. -include $(TOP)/configs/current - - -INCDIR = $(TOP)/include -I$(TOP)/progs - -LIB_DEP = $(TOP)/$(LIB_DIR)/$(GL_LIB_NAME) $(TOP)/$(LIB_DIR)/$(GLU_LIB_NAME) - -CFLAGS += $(shell pkg-config --cflags directfb) -APP_LIB_DEPS += $(shell pkg-config --libs directfb) - -LIBS = -L$(TOP)/$(LIB_DIR) -l$(GLU_LIB) -l$(GL_LIB) $(APP_LIB_DEPS) - -PROGS = df_gears \ - df_reflect \ - df_morph3d \ - multi_window - -##### RULES ##### - -.SUFFIXES: -.SUFFIXES: .c - -.c: $(LIB_DEP) - $(CC) -I$(INCDIR) $(CFLAGS) $(LDFLAGS) $< $(LIBS) -o $@ - - -##### TARGETS ##### - -default: $(PROGS) - - -clean: - -rm -f $(PROGS) - -rm -f *.o *~ - diff --git a/progs/directfb/df_gears.c b/progs/directfb/df_gears.c deleted file mode 100644 index c480767bd3..0000000000 --- a/progs/directfb/df_gears.c +++ /dev/null @@ -1,480 +0,0 @@ -/* - (c) Copyright 2001 convergence integrated media GmbH. - All rights reserved. - - Written by Denis Oliver Kropp <dok@convergence.de> and - Andreas Hundt <andi@convergence.de>. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#include <stdlib.h> -#include <stdio.h> -#include <string.h> -#include <math.h> - -#include <directfb.h> -#include <directfbgl.h> - -#include <GL/gl.h> - - -/* the super interface */ -IDirectFB *dfb; - -/* the primary surface (surface of primary layer) */ -IDirectFBSurface *primary; - -/* the GL context */ -IDirectFBGL *primary_gl; - -/* our font */ -IDirectFBFont *font; - -/* event buffer */ -IDirectFBEventBuffer *events; - -/* macro for a safe call to DirectFB functions */ -#define DFBCHECK(x...) \ - { \ - err = x; \ - if (err != DFB_OK) { \ - fprintf( stderr, "%s <%d>:\n\t", __FILE__, __LINE__ ); \ - DirectFBErrorFatal( #x, err ); \ - } \ - } - -static int screen_width, screen_height; - -static unsigned long T0 = 0; -static GLint Frames = 0; -static GLfloat fps = 0; - -static inline unsigned long get_millis() -{ - struct timeval tv; - - gettimeofday (&tv, NULL); - return (tv.tv_sec * 1000 + tv.tv_usec / 1000); -} - - -#ifndef M_PI -#define M_PI 3.14159265 -#endif - -/** - - Draw a gear wheel. You'll probably want to call this function when - building a display list since we do a lot of trig here. - - Input: inner_radius - radius of hole at center - outer_radius - radius at center of teeth - width - width of gear - teeth - number of teeth - tooth_depth - depth of tooth - - **/ - -static void -gear(GLfloat inner_radius, GLfloat outer_radius, GLfloat width, - GLint teeth, GLfloat tooth_depth) -{ - GLint i; - GLfloat r0, r1, r2; - GLfloat angle, da; - GLfloat u, v, len; - - r0 = inner_radius; - r1 = outer_radius - tooth_depth / 2.0; - r2 = outer_radius + tooth_depth / 2.0; - - da = 2.0 * M_PI / teeth / 4.0; - - glShadeModel(GL_FLAT); - - glNormal3f(0.0, 0.0, 1.0); - - /* draw front face */ - glBegin(GL_QUAD_STRIP); - for (i = 0; i <= teeth; i++) { - angle = i * 2.0 * M_PI / teeth; - glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); - glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); - if (i < teeth) { - glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), width * 0.5); - } - } - glEnd(); - - /* draw front sides of teeth */ - glBegin(GL_QUADS); - da = 2.0 * M_PI / teeth / 4.0; - for (i = 0; i < teeth; i++) { - angle = i * 2.0 * M_PI / teeth; - - glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); - glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), width * 0.5); - glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), width * 0.5); - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), width * 0.5); - } - glEnd(); - - glNormal3f(0.0, 0.0, -1.0); - - /* draw back face */ - glBegin(GL_QUAD_STRIP); - for (i = 0; i <= teeth; i++) { - angle = i * 2.0 * M_PI / teeth; - glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5); - glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5); - if (i < teeth) { - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -width * 0.5); - glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5); - } - } - glEnd(); - - /* draw back sides of teeth */ - glBegin(GL_QUADS); - da = 2.0 * M_PI / teeth / 4.0; - for (i = 0; i < teeth; i++) { - angle = i * 2.0 * M_PI / teeth; - - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -width * 0.5); - glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), -width * 0.5); - glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), -width * 0.5); - glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5); - } - glEnd(); - - /* draw outward faces of teeth */ - glBegin(GL_QUAD_STRIP); - for (i = 0; i < teeth; i++) { - angle = i * 2.0 * M_PI / teeth; - - glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); - glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5); - u = r2 * cos(angle + da) - r1 * cos(angle); - v = r2 * sin(angle + da) - r1 * sin(angle); - len = sqrt(u * u + v * v); - u /= len; - v /= len; - glNormal3f(v, -u, 0.0); - glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), width * 0.5); - glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), -width * 0.5); - glNormal3f(cos(angle), sin(angle), 0.0); - glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), width * 0.5); - glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), -width * 0.5); - u = r1 * cos(angle + 3 * da) - r2 * cos(angle + 2 * da); - v = r1 * sin(angle + 3 * da) - r2 * sin(angle + 2 * da); - glNormal3f(v, -u, 0.0); - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), width * 0.5); - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -width * 0.5); - glNormal3f(cos(angle), sin(angle), 0.0); - } - - glVertex3f(r1 * cos(0), r1 * sin(0), width * 0.5); - glVertex3f(r1 * cos(0), r1 * sin(0), -width * 0.5); - - glEnd(); - - glShadeModel(GL_SMOOTH); - - /* draw inside radius cylinder */ - glBegin(GL_QUAD_STRIP); - for (i = 0; i <= teeth; i++) { - angle = i * 2.0 * M_PI / teeth; - glNormal3f(-cos(angle), -sin(angle), 0.0); - glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5); - glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); - } - glEnd(); - -} - -static GLfloat view_rotx = 20.0, view_roty = 30.0, view_rotz = 0.0; -static GLfloat inc_rotx = 0, inc_roty = 0, inc_rotz = 0; -static GLint gear1, gear2, gear3; -static GLfloat angle = 0.0; - -static void -draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glPushMatrix(); - glRotatef(view_rotx, 1.0, 0.0, 0.0); - glRotatef(view_roty, 0.0, 1.0, 0.0); - glRotatef(view_rotz, 0.0, 0.0, 1.0); - - glPushMatrix(); - glTranslatef(-3.0, -2.0, 0.0); - glRotatef(angle, 0.0, 0.0, 1.0); - glCallList(gear1); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(3.1, -2.0, 0.0); - glRotatef(-2.0 * angle - 9.0, 0.0, 0.0, 1.0); - glCallList(gear2); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(-3.1, 4.2, 0.0); - glRotatef(-2.0 * angle - 25.0, 0.0, 0.0, 1.0); - glCallList(gear3); - glPopMatrix(); - - glPopMatrix(); -} - -/* new window size or exposure */ -static void -reshape(int width, int height) -{ - GLfloat h = (GLfloat) height / (GLfloat) width; - - glViewport(0, 0, (GLint) width, (GLint) height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-1.0, 1.0, -h, h, 5.0, 60.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0, 0.0, -40.0); -} - -static void -init(int argc, char *argv[]) -{ - static GLfloat pos[4] = {5.0, 5.0, 10.0, 0.0}; - static GLfloat red[4] = {0.8, 0.1, 0.0, 1.0}; - static GLfloat green[4] = {0.0, 0.8, 0.2, 1.0}; - static GLfloat blue[4] = {0.2, 0.2, 1.0, 1.0}; - GLint i; - - glLightfv(GL_LIGHT0, GL_POSITION, pos); - glEnable(GL_CULL_FACE); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_DEPTH_TEST); - - /* make the gears */ - gear1 = glGenLists(1); - glNewList(gear1, GL_COMPILE); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, red); - gear(1.0, 4.0, 1.0, 20, 0.7); - glEndList(); - - gear2 = glGenLists(1); - glNewList(gear2, GL_COMPILE); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, green); - gear(0.5, 2.0, 2.0, 10, 0.7); - glEndList(); - - gear3 = glGenLists(1); - glNewList(gear3, GL_COMPILE); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, blue); - gear(1.3, 2.0, 0.5, 10, 0.7); - glEndList(); - - glEnable(GL_NORMALIZE); - - for ( i=1; i<argc; i++ ) { - if (strcmp(argv[i], "-info")==0) { - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - printf("GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - printf("GL_EXTENSIONS = %s\n", (char *) glGetString(GL_EXTENSIONS)); - } - } -} - -int main( int argc, char *argv[] ) -{ - int quit = 0; - DFBResult err; - DFBSurfaceDescription dsc; - - DFBCHECK(DirectFBInit( &argc, &argv )); - - /* create the super interface */ - DFBCHECK(DirectFBCreate( &dfb )); - - /* create an event buffer for all devices with these caps */ - DFBCHECK(dfb->CreateInputEventBuffer( dfb, DICAPS_KEYS | DICAPS_AXES, - DFB_FALSE, &events )); - - /* set our cooperative level to DFSCL_FULLSCREEN - for exclusive access to the primary layer */ - dfb->SetCooperativeLevel( dfb, DFSCL_FULLSCREEN ); - - /* get the primary surface, i.e. the surface of the - primary layer we have exclusive access to */ - dsc.flags = DSDESC_CAPS; - dsc.caps = DSCAPS_PRIMARY | DSCAPS_DOUBLE; - - DFBCHECK(dfb->CreateSurface( dfb, &dsc, &primary )); - - /* get the size of the surface and fill it */ - DFBCHECK(primary->GetSize( primary, &screen_width, &screen_height )); - DFBCHECK(primary->FillRectangle( primary, 0, 0, - screen_width, screen_height )); - primary->Flip( primary, NULL, 0 ); - - /* create the default font and set it */ - DFBCHECK(dfb->CreateFont( dfb, NULL, NULL, &font )); - DFBCHECK(primary->SetFont( primary, font )); - - /* get the GL context */ - DFBCHECK(primary->GetGL( primary, &primary_gl )); - - DFBCHECK(primary_gl->Lock( primary_gl )); - - init(argc, argv); - reshape(screen_width, screen_height); - - DFBCHECK(primary_gl->Unlock( primary_gl )); - - T0 = get_millis(); - - while (!quit) { - DFBInputEvent evt; - unsigned long t; - - DFBCHECK(primary_gl->Lock( primary_gl )); - - draw(); - - DFBCHECK(primary_gl->Unlock( primary_gl )); - - if (fps) { - char buf[64]; - - snprintf(buf, 64, "%4.1f FPS\n", fps); - - primary->SetColor( primary, 0xff, 0, 0, 0xff ); - primary->DrawString( primary, buf, -1, screen_width - 5, 5, DSTF_TOPRIGHT ); - } - - primary->Flip( primary, NULL, 0 ); - Frames++; - - - t = get_millis(); - if (t - T0 >= 2000) { - GLfloat seconds = (t - T0) / 1000.0; - - fps = Frames / seconds; - - T0 = t; - Frames = 0; - } - - - while (events->GetEvent( events, DFB_EVENT(&evt) ) == DFB_OK) { - switch (evt.type) { - case DIET_KEYPRESS: - switch (evt.key_symbol) { - case DIKS_ESCAPE: - quit = 1; - break; - case DIKS_CURSOR_UP: - inc_rotx = 5.0; - break; - case DIKS_CURSOR_DOWN: - inc_rotx = -5.0; - break; - case DIKS_CURSOR_LEFT: - inc_roty = 5.0; - break; - case DIKS_CURSOR_RIGHT: - inc_roty = -5.0; - break; - case DIKS_PAGE_UP: - inc_rotz = 5.0; - break; - case DIKS_PAGE_DOWN: - inc_rotz = -5.0; - break; - default: - ; - } - break; - case DIET_KEYRELEASE: - switch (evt.key_symbol) { - case DIKS_CURSOR_UP: - inc_rotx = 0; - break; - case DIKS_CURSOR_DOWN: - inc_rotx = 0; - break; - case DIKS_CURSOR_LEFT: - inc_roty = 0; - break; - case DIKS_CURSOR_RIGHT: - inc_roty = 0; - break; - case DIKS_PAGE_UP: - inc_rotz = 0; - break; - case DIKS_PAGE_DOWN: - inc_rotz = 0; - break; - default: - ; - } - break; - case DIET_AXISMOTION: - if (evt.flags & DIEF_AXISREL) { - switch (evt.axis) { - case DIAI_X: - view_roty += evt.axisrel / 2.0; - break; - case DIAI_Y: - view_rotx += evt.axisrel / 2.0; - break; - case DIAI_Z: - view_rotz += evt.axisrel / 2.0; - break; - default: - ; - } - } - break; - default: - ; - } - } - - angle += 2.0; - - view_rotx += inc_rotx; - view_roty += inc_roty; - view_rotz += inc_rotz; - } - - /* release our interfaces to shutdown DirectFB */ - primary_gl->Release( primary_gl ); - primary->Release( primary ); - font->Release( font ); - events->Release( events ); - dfb->Release( dfb ); - - return 0; -} - diff --git a/progs/directfb/df_morph3d.c b/progs/directfb/df_morph3d.c deleted file mode 100644 index 2730fa6156..0000000000 --- a/progs/directfb/df_morph3d.c +++ /dev/null @@ -1,1013 +0,0 @@ -/* - (c) Copyright 2001 convergence integrated media GmbH. - All rights reserved. - - Written by Denis Oliver Kropp <dok@convergence.de> and - Andreas Hundt <andi@convergence.de>. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -/*- - * morph3d.c - Shows 3D morphing objects - * - * Converted to GLUT by brianp on 1/1/98 - * - * This program was inspired on a WindowsNT(R)'s screen saver. It was written - * from scratch and it was not based on any other source code. - * - * Porting it to xlock (the final objective of this code since the moment I - * decided to create it) was possible by comparing the original Mesa's gear - * demo with it's ported version, so thanks for Danny Sung for his indirect - * help (look at gear.c in xlock source tree). NOTE: At the moment this code - * was sent to Brian Paul for package inclusion, the XLock Version was not - * available. In fact, I'll wait it to appear on the next Mesa release (If you - * are reading this, it means THIS release) to send it for xlock package - * inclusion). It will probably there be a GLUT version too. - * - * Thanks goes also to Brian Paul for making it possible and inexpensive - * to use OpenGL at home. - * - * Since I'm not a native english speaker, my apologies for any gramatical - * mistake. - * - * My e-mail addresses are - * - * vianna@cat.cbpf.br - * and - * marcelo@venus.rdc.puc-rio.br - * - * Marcelo F. Vianna (Feb-13-1997) - */ - -/* -This document is VERY incomplete, but tries to describe the mathematics used -in the program. At this moment it just describes how the polyhedra are -generated. On futhurer versions, this document will be probabbly improved. - -Since I'm not a native english speaker, my apologies for any gramatical -mistake. - -Marcelo Fernandes Vianna -- Undergraduate in Computer Engeneering at Catholic Pontifical University -- of Rio de Janeiro (PUC-Rio) Brasil. -- e-mail: vianna@cat.cbpf.br or marcelo@venus.rdc.puc-rio.br -- Feb-13-1997 - -POLYHEDRA GENERATION - -For the purpose of this program it's not sufficient to know the polyhedra -vertexes coordinates. Since the morphing algorithm applies a nonlinear -transformation over the surfaces (faces) of the polyhedron, each face has -to be divided into smaller ones. The morphing algorithm needs to transform -each vertex of these smaller faces individually. It's a very time consoming -task. - -In order to reduce calculation overload, and since all the macro faces of -the polyhedron are transformed by the same way, the generation is made by -creating only one face of the polyhedron, morphing it and then rotating it -around the polyhedron center. - -What we need to know is the face radius of the polyhedron (the radius of -the inscribed sphere) and the angle between the center of two adjacent -faces using the center of the sphere as the angle's vertex. - -The face radius of the regular polyhedra are known values which I decided -to not waste my time calculating. Following is a table of face radius for -the regular polyhedra with edge length = 1: - - TETRAHEDRON : 1/(2*sqrt(2))/sqrt(3) - CUBE : 1/2 - OCTAHEDRON : 1/sqrt(6) - DODECAHEDRON : T^2 * sqrt((T+2)/5) / 2 -> where T=(sqrt(5)+1)/2 - ICOSAHEDRON : (3*sqrt(3)+sqrt(15))/12 - -I've not found any reference about the mentioned angles, so I needed to -calculate them, not a trivial task until I figured out how :) -Curiously these angles are the same for the tetrahedron and octahedron. -A way to obtain this value is inscribing the tetrahedron inside the cube -by matching their vertexes. So you'll notice that the remaining unmatched -vertexes are in the same straight line starting in the cube/tetrahedron -center and crossing the center of each tetrahedron's face. At this point -it's easy to obtain the bigger angle of the isosceles triangle formed by -the center of the cube and two opposite vertexes on the same cube face. -The edges of this triangle have the following lenghts: sqrt(2) for the base -and sqrt(3)/2 for the other two other edges. So the angle we want is: - +-----------------------------------------------------------+ - | 2*ARCSIN(sqrt(2)/sqrt(3)) = 109.47122063449069174 degrees | - +-----------------------------------------------------------+ -For the cube this angle is obvious, but just for formality it can be -easily obtained because we also know it's isosceles edge lenghts: -sqrt(2)/2 for the base and 1/2 for the other two edges. So the angle we -want is: - +-----------------------------------------------------------+ - | 2*ARCSIN((sqrt(2)/2)/1) = 90.000000000000000000 degrees | - +-----------------------------------------------------------+ -For the octahedron we use the same idea used for the tetrahedron, but now -we inscribe the cube inside the octahedron so that all cubes's vertexes -matches excatly the center of each octahedron's face. It's now clear that -this angle is the same of the thetrahedron one: - +-----------------------------------------------------------+ - | 2*ARCSIN(sqrt(2)/sqrt(3)) = 109.47122063449069174 degrees | - +-----------------------------------------------------------+ -For the dodecahedron it's a little bit harder because it's only relationship -with the cube is useless to us. So we need to solve the problem by another -way. The concept of Face radius also exists on 2D polygons with the name -Edge radius: - Edge Radius For Pentagon (ERp) - ERp = (1/2)/TAN(36 degrees) * VRp = 0.6881909602355867905 - (VRp is the pentagon's vertex radio). - Face Radius For Dodecahedron - FRd = T^2 * sqrt((T+2)/5) / 2 = 1.1135163644116068404 -Why we need ERp? Well, ERp and FRd segments forms a 90 degrees angle, -completing this triangle, the lesser angle is a half of the angle we are -looking for, so this angle is: - +-----------------------------------------------------------+ - | 2*ARCTAN(ERp/FRd) = 63.434948822922009981 degrees | - +-----------------------------------------------------------+ -For the icosahedron we can use the same method used for dodecahedron (well -the method used for dodecahedron may be used for all regular polyhedra) - Edge Radius For Triangle (this one is well known: 1/3 of the triangle height) - ERt = sin(60)/3 = sqrt(3)/6 = 0.2886751345948128655 - Face Radius For Icosahedron - FRi= (3*sqrt(3)+sqrt(15))/12 = 0.7557613140761707538 -So the angle is: - +-----------------------------------------------------------+ - | 2*ARCTAN(ERt/FRi) = 41.810314895778596167 degrees | - +-----------------------------------------------------------+ - -*/ - - -#include <stdlib.h> -#include <stdio.h> -#include <string.h> -#include <math.h> -#include <unistd.h> - -#include <directfb.h> -#include <directfbgl.h> - -#include <GL/gl.h> - - -/* the super interface */ -IDirectFB *dfb; - -/* the primary surface (surface of primary layer) */ -IDirectFBSurface *primary; - -/* the GL context */ -IDirectFBGL *primary_gl; - -/* our font */ -IDirectFBFont *font; - -/* event buffer */ -IDirectFBEventBuffer *events; - -/* macro for a safe call to DirectFB functions */ -#define DFBCHECK(x...) \ - { \ - err = x; \ - if (err != DFB_OK) { \ - fprintf( stderr, "%s <%d>:\n\t", __FILE__, __LINE__ ); \ - DirectFBErrorFatal( #x, err ); \ - } \ - } - -static int screen_width, screen_height; - -static unsigned long T0 = 0; -static GLint Frames = 0; -static GLfloat fps = 0; - -static inline unsigned long get_millis() -{ - struct timeval tv; - - gettimeofday (&tv, NULL); - return (tv.tv_sec * 1000 + tv.tv_usec / 1000); -} - - - -#define Scale 0.3 - -#define VectMul(X1,Y1,Z1,X2,Y2,Z2) (Y1)*(Z2)-(Z1)*(Y2),(Z1)*(X2)-(X1)*(Z2),(X1)*(Y2)-(Y1)*(X2) -#define sqr(A) ((A)*(A)) - -/* Increasing this values produces better image quality, the price is speed. */ -/* Very low values produces erroneous/incorrect plotting */ -#define tetradivisions 23 -#define cubedivisions 20 -#define octadivisions 21 -#define dodecadivisions 10 -#define icodivisions 15 - -#define tetraangle 109.47122063449069174 -#define cubeangle 90.000000000000000000 -#define octaangle 109.47122063449069174 -#define dodecaangle 63.434948822922009981 -#define icoangle 41.810314895778596167 - -#ifndef Pi -#define Pi 3.1415926535897932385 -#endif -#define SQRT2 1.4142135623730951455 -#define SQRT3 1.7320508075688771932 -#define SQRT5 2.2360679774997898051 -#define SQRT6 2.4494897427831778813 -#define SQRT15 3.8729833462074170214 -#define cossec36_2 0.8506508083520399322 -#define cos72 0.3090169943749474241 -#define sin72 0.9510565162951535721 -#define cos36 0.8090169943749474241 -#define sin36 0.5877852522924731292 - -/*************************************************************************/ - -static int mono=0; -static int smooth=1; -static GLint WindH, WindW; -static GLfloat step=0; -static GLfloat seno; -static int object; -static int edgedivisions; -static void (*draw_object)( void ); -static float Magnitude; -static float *MaterialColor[20]; - -static float front_shininess[] = {60.0}; -static float front_specular[] = { 0.7, 0.7, 0.7, 1.0 }; -static float ambient[] = { 0.0, 0.0, 0.0, 1.0 }; -static float diffuse[] = { 1.0, 1.0, 1.0, 1.0 }; -static float position0[] = { 1.0, 1.0, 1.0, 0.0 }; -static float position1[] = {-1.0,-1.0, 1.0, 0.0 }; -static float lmodel_ambient[] = { 0.5, 0.5, 0.5, 1.0 }; -static float lmodel_twoside[] = {GL_TRUE}; - -static float MaterialRed[] = { 0.7, 0.0, 0.0, 1.0 }; -static float MaterialGreen[] = { 0.1, 0.5, 0.2, 1.0 }; -static float MaterialBlue[] = { 0.0, 0.0, 0.7, 1.0 }; -static float MaterialCyan[] = { 0.2, 0.5, 0.7, 1.0 }; -static float MaterialYellow[] = { 0.7, 0.7, 0.0, 1.0 }; -static float MaterialMagenta[] = { 0.6, 0.2, 0.5, 1.0 }; -static float MaterialWhite[] = { 0.7, 0.7, 0.7, 1.0 }; -static float MaterialGray[] = { 0.2, 0.2, 0.2, 1.0 }; - -#define TRIANGLE(Edge, Amp, Divisions, Z) \ -{ \ - GLfloat Xf,Yf,Xa,Yb,Xf2,Yf2; \ - GLfloat Factor,Factor1,Factor2; \ - GLfloat VertX,VertY,VertZ,NeiAX,NeiAY,NeiAZ,NeiBX,NeiBY,NeiBZ; \ - GLfloat Ax,Ay,Bx; \ - int Ri,Ti; \ - GLfloat Vr=(Edge)*SQRT3/3; \ - GLfloat AmpVr2=(Amp)/sqr(Vr); \ - GLfloat Zf=(Edge)*(Z); \ - \ - Ax=(Edge)*(+0.5/(Divisions)), Ay=(Edge)*(-SQRT3/(2*Divisions)); \ - Bx=(Edge)*(-0.5/(Divisions)); \ - \ - for (Ri=1; Ri<=(Divisions); Ri++) { \ - glBegin(GL_TRIANGLE_STRIP); \ - for (Ti=0; Ti<Ri; Ti++) { \ - Xf=(float)(Ri-Ti)*Ax + (float)Ti*Bx; \ - Yf=Vr+(float)(Ri-Ti)*Ay + (float)Ti*Ay; \ - Xa=Xf+0.001; Yb=Yf+0.001; \ - Factor=1-(((Xf2=sqr(Xf))+(Yf2=sqr(Yf)))*AmpVr2); \ - Factor1=1-((sqr(Xa)+Yf2)*AmpVr2); \ - Factor2=1-((Xf2+sqr(Yb))*AmpVr2); \ - VertX=Factor*Xf; VertY=Factor*Yf; VertZ=Factor*Zf; \ - NeiAX=Factor1*Xa-VertX; NeiAY=Factor1*Yf-VertY; NeiAZ=Factor1*Zf-VertZ; \ - NeiBX=Factor2*Xf-VertX; NeiBY=Factor2*Yb-VertY; NeiBZ=Factor2*Zf-VertZ; \ - glNormal3f(VectMul(NeiAX, NeiAY, NeiAZ, NeiBX, NeiBY, NeiBZ)); \ - glVertex3f(VertX, VertY, VertZ); \ - \ - Xf=(float)(Ri-Ti-1)*Ax + (float)Ti*Bx; \ - Yf=Vr+(float)(Ri-Ti-1)*Ay + (float)Ti*Ay; \ - Xa=Xf+0.001; Yb=Yf+0.001; \ - Factor=1-(((Xf2=sqr(Xf))+(Yf2=sqr(Yf)))*AmpVr2); \ - Factor1=1-((sqr(Xa)+Yf2)*AmpVr2); \ - Factor2=1-((Xf2+sqr(Yb))*AmpVr2); \ - VertX=Factor*Xf; VertY=Factor*Yf; VertZ=Factor*Zf; \ - NeiAX=Factor1*Xa-VertX; NeiAY=Factor1*Yf-VertY; NeiAZ=Factor1*Zf-VertZ; \ - NeiBX=Factor2*Xf-VertX; NeiBY=Factor2*Yb-VertY; NeiBZ=Factor2*Zf-VertZ; \ - glNormal3f(VectMul(NeiAX, NeiAY, NeiAZ, NeiBX, NeiBY, NeiBZ)); \ - glVertex3f(VertX, VertY, VertZ); \ - \ - } \ - Xf=(float)Ri*Bx; \ - Yf=Vr+(float)Ri*Ay; \ - Xa=Xf+0.001; Yb=Yf+0.001; \ - Factor=1-(((Xf2=sqr(Xf))+(Yf2=sqr(Yf)))*AmpVr2); \ - Factor1=1-((sqr(Xa)+Yf2)*AmpVr2); \ - Factor2=1-((Xf2+sqr(Yb))*AmpVr2); \ - VertX=Factor*Xf; VertY=Factor*Yf; VertZ=Factor*Zf; \ - NeiAX=Factor1*Xa-VertX; NeiAY=Factor1*Yf-VertY; NeiAZ=Factor1*Zf-VertZ; \ - NeiBX=Factor2*Xf-VertX; NeiBY=Factor2*Yb-VertY; NeiBZ=Factor2*Zf-VertZ; \ - glNormal3f(VectMul(NeiAX, NeiAY, NeiAZ, NeiBX, NeiBY, NeiBZ)); \ - glVertex3f(VertX, VertY, VertZ); \ - glEnd(); \ - } \ -} - -#define SQUARE(Edge, Amp, Divisions, Z) \ -{ \ - int Xi,Yi; \ - GLfloat Xf,Yf,Y,Xf2,Yf2,Y2,Xa,Yb; \ - GLfloat Factor,Factor1,Factor2; \ - GLfloat VertX,VertY,VertZ,NeiAX,NeiAY,NeiAZ,NeiBX,NeiBY,NeiBZ; \ - GLfloat Zf=(Edge)*(Z); \ - GLfloat AmpVr2=(Amp)/sqr((Edge)*SQRT2/2); \ - \ - for (Yi=0; Yi<(Divisions); Yi++) { \ - Yf=-((Edge)/2.0) + ((float)Yi)/(Divisions)*(Edge); \ - Yf2=sqr(Yf); \ - Y=Yf+1.0/(Divisions)*(Edge); \ - Y2=sqr(Y); \ - glBegin(GL_QUAD_STRIP); \ - for (Xi=0; Xi<=(Divisions); Xi++) { \ - Xf=-((Edge)/2.0) + ((float)Xi)/(Divisions)*(Edge); \ - Xf2=sqr(Xf); \ - \ - Xa=Xf+0.001; Yb=Y+0.001; \ - Factor=1-((Xf2+Y2)*AmpVr2); \ - Factor1=1-((sqr(Xa)+Y2)*AmpVr2); \ - Factor2=1-((Xf2+sqr(Yb))*AmpVr2); \ - VertX=Factor*Xf; VertY=Factor*Y; VertZ=Factor*Zf; \ - NeiAX=Factor1*Xa-VertX; NeiAY=Factor1*Y-VertY; NeiAZ=Factor1*Zf-VertZ; \ - NeiBX=Factor2*Xf-VertX; NeiBY=Factor2*Yb-VertY; NeiBZ=Factor2*Zf-VertZ; \ - glNormal3f(VectMul(NeiAX, NeiAY, NeiAZ, NeiBX, NeiBY, NeiBZ)); \ - glVertex3f(VertX, VertY, VertZ); \ - \ - Xa=Xf+0.001; Yb=Yf+0.001; \ - Factor=1-((Xf2+Yf2)*AmpVr2); \ - Factor1=1-((sqr(Xa)+Yf2)*AmpVr2); \ - Factor2=1-((Xf2+sqr(Yb))*AmpVr2); \ - VertX=Factor*Xf; VertY=Factor*Yf; VertZ=Factor*Zf; \ - NeiAX=Factor1*Xa-VertX; NeiAY=Factor1*Yf-VertY; NeiAZ=Factor1*Zf-VertZ; \ - NeiBX=Factor2*Xf-VertX; NeiBY=Factor2*Yb-VertY; NeiBZ=Factor2*Zf-VertZ; \ - glNormal3f(VectMul(NeiAX, NeiAY, NeiAZ, NeiBX, NeiBY, NeiBZ)); \ - glVertex3f(VertX, VertY, VertZ); \ - } \ - glEnd(); \ - } \ -} - -#define PENTAGON(Edge, Amp, Divisions, Z) \ -{ \ - int Ri,Ti,Fi; \ - GLfloat Xf,Yf,Xa,Yb,Xf2,Yf2; \ - GLfloat x[6],y[6]; \ - GLfloat Factor,Factor1,Factor2; \ - GLfloat VertX,VertY,VertZ,NeiAX,NeiAY,NeiAZ,NeiBX,NeiBY,NeiBZ; \ - GLfloat Zf=(Edge)*(Z); \ - GLfloat AmpVr2=(Amp)/sqr((Edge)*cossec36_2); \ - \ - for(Fi=0;Fi<6;Fi++) { \ - x[Fi]=-cos( Fi*2*Pi/5 + Pi/10 )/(Divisions)*cossec36_2*(Edge); \ - y[Fi]=sin( Fi*2*Pi/5 + Pi/10 )/(Divisions)*cossec36_2*(Edge); \ - } \ - \ - for (Ri=1; Ri<=(Divisions); Ri++) { \ - for (Fi=0; Fi<5; Fi++) { \ - glBegin(GL_TRIANGLE_STRIP); \ - for (Ti=0; Ti<Ri; Ti++) { \ - Xf=(float)(Ri-Ti)*x[Fi] + (float)Ti*x[Fi+1]; \ - Yf=(float)(Ri-Ti)*y[Fi] + (float)Ti*y[Fi+1]; \ - Xa=Xf+0.001; Yb=Yf+0.001; \ - Factor=1-(((Xf2=sqr(Xf))+(Yf2=sqr(Yf)))*AmpVr2); \ - Factor1=1-((sqr(Xa)+Yf2)*AmpVr2); \ - Factor2=1-((Xf2+sqr(Yb))*AmpVr2); \ - VertX=Factor*Xf; VertY=Factor*Yf; VertZ=Factor*Zf; \ - NeiAX=Factor1*Xa-VertX; NeiAY=Factor1*Yf-VertY; NeiAZ=Factor1*Zf-VertZ; \ - NeiBX=Factor2*Xf-VertX; NeiBY=Factor2*Yb-VertY; NeiBZ=Factor2*Zf-VertZ; \ - glNormal3f(VectMul(NeiAX, NeiAY, NeiAZ, NeiBX, NeiBY, NeiBZ)); \ - glVertex3f(VertX, VertY, VertZ); \ - \ - Xf=(float)(Ri-Ti-1)*x[Fi] + (float)Ti*x[Fi+1]; \ - Yf=(float)(Ri-Ti-1)*y[Fi] + (float)Ti*y[Fi+1]; \ - Xa=Xf+0.001; Yb=Yf+0.001; \ - Factor=1-(((Xf2=sqr(Xf))+(Yf2=sqr(Yf)))*AmpVr2); \ - Factor1=1-((sqr(Xa)+Yf2)*AmpVr2); \ - Factor2=1-((Xf2+sqr(Yb))*AmpVr2); \ - VertX=Factor*Xf; VertY=Factor*Yf; VertZ=Factor*Zf; \ - NeiAX=Factor1*Xa-VertX; NeiAY=Factor1*Yf-VertY; NeiAZ=Factor1*Zf-VertZ; \ - NeiBX=Factor2*Xf-VertX; NeiBY=Factor2*Yb-VertY; NeiBZ=Factor2*Zf-VertZ; \ - glNormal3f(VectMul(NeiAX, NeiAY, NeiAZ, NeiBX, NeiBY, NeiBZ)); \ - glVertex3f(VertX, VertY, VertZ); \ - \ - } \ - Xf=(float)Ri*x[Fi+1]; \ - Yf=(float)Ri*y[Fi+1]; \ - Xa=Xf+0.001; Yb=Yf+0.001; \ - Factor=1-(((Xf2=sqr(Xf))+(Yf2=sqr(Yf)))*AmpVr2); \ - Factor1=1-((sqr(Xa)+Yf2)*AmpVr2); \ - Factor2=1-((Xf2+sqr(Yb))*AmpVr2); \ - VertX=Factor*Xf; VertY=Factor*Yf; VertZ=Factor*Zf; \ - NeiAX=Factor1*Xa-VertX; NeiAY=Factor1*Yf-VertY; NeiAZ=Factor1*Zf-VertZ; \ - NeiBX=Factor2*Xf-VertX; NeiBY=Factor2*Yb-VertY; NeiBZ=Factor2*Zf-VertZ; \ - glNormal3f(VectMul(NeiAX, NeiAY, NeiAZ, NeiBX, NeiBY, NeiBZ)); \ - glVertex3f(VertX, VertY, VertZ); \ - glEnd(); \ - } \ - } \ -} - -static void draw_tetra( void ) -{ - GLuint list; - - list = glGenLists( 1 ); - glNewList( list, GL_COMPILE ); - TRIANGLE(2,seno,edgedivisions,0.5/SQRT6); - glEndList(); - - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[0]); - glCallList(list); - glPushMatrix(); - glRotatef(180,0,0,1); - glRotatef(-tetraangle,1,0,0); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[1]); - glCallList(list); - glPopMatrix(); - glPushMatrix(); - glRotatef(180,0,1,0); - glRotatef(-180+tetraangle,0.5,SQRT3/2,0); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[2]); - glCallList(list); - glPopMatrix(); - glRotatef(180,0,1,0); - glRotatef(-180+tetraangle,0.5,-SQRT3/2,0); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[3]); - glCallList(list); - - glDeleteLists(list,1); -} - -static void draw_cube( void ) -{ - GLuint list; - - list = glGenLists( 1 ); - glNewList( list, GL_COMPILE ); - SQUARE(2, seno, edgedivisions, 0.5) - glEndList(); - - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[0]); - glCallList(list); - glRotatef(cubeangle,1,0,0); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[1]); - glCallList(list); - glRotatef(cubeangle,1,0,0); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[2]); - glCallList(list); - glRotatef(cubeangle,1,0,0); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[3]); - glCallList(list); - glRotatef(cubeangle,0,1,0); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[4]); - glCallList(list); - glRotatef(2*cubeangle,0,1,0); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[5]); - glCallList(list); - - glDeleteLists(list,1); -} - -static void draw_octa( void ) -{ - GLuint list; - - list = glGenLists( 1 ); - glNewList( list, GL_COMPILE ); - TRIANGLE(2,seno,edgedivisions,1/SQRT6); - glEndList(); - - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[0]); - glCallList(list); - glPushMatrix(); - glRotatef(180,0,0,1); - glRotatef(-180+octaangle,1,0,0); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[1]); - glCallList(list); - glPopMatrix(); - glPushMatrix(); - glRotatef(180,0,1,0); - glRotatef(-octaangle,0.5,SQRT3/2,0); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[2]); - glCallList(list); - glPopMatrix(); - glPushMatrix(); - glRotatef(180,0,1,0); - glRotatef(-octaangle,0.5,-SQRT3/2,0); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[3]); - glCallList(list); - glPopMatrix(); - glRotatef(180,1,0,0); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[4]); - glCallList(list); - glPushMatrix(); - glRotatef(180,0,0,1); - glRotatef(-180+octaangle,1,0,0); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[5]); - glCallList(list); - glPopMatrix(); - glPushMatrix(); - glRotatef(180,0,1,0); - glRotatef(-octaangle,0.5,SQRT3/2,0); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[6]); - glCallList(list); - glPopMatrix(); - glRotatef(180,0,1,0); - glRotatef(-octaangle,0.5,-SQRT3/2,0); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[7]); - glCallList(list); - - glDeleteLists(list,1); -} - -static void draw_dodeca( void ) -{ - GLuint list; - -#define TAU ((SQRT5+1)/2) - - list = glGenLists( 1 ); - glNewList( list, GL_COMPILE ); - PENTAGON(1,seno,edgedivisions,sqr(TAU) * sqrt((TAU+2)/5) / 2); - glEndList(); - - glPushMatrix(); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[0]); - glCallList(list); - glRotatef(180,0,0,1); - glPushMatrix(); - glRotatef(-dodecaangle,1,0,0); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[1]); - glCallList(list); - glPopMatrix(); - glPushMatrix(); - glRotatef(-dodecaangle,cos72,sin72,0); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[2]); - glCallList(list); - glPopMatrix(); - glPushMatrix(); - glRotatef(-dodecaangle,cos72,-sin72,0); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[3]); - glCallList(list); - glPopMatrix(); - glPushMatrix(); - glRotatef(dodecaangle,cos36,-sin36,0); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[4]); - glCallList(list); - glPopMatrix(); - glRotatef(dodecaangle,cos36,sin36,0); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[5]); - glCallList(list); - glPopMatrix(); - glRotatef(180,1,0,0); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[6]); - glCallList(list); - glRotatef(180,0,0,1); - glPushMatrix(); - glRotatef(-dodecaangle,1,0,0); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[7]); - glCallList(list); - glPopMatrix(); - glPushMatrix(); - glRotatef(-dodecaangle,cos72,sin72,0); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[8]); - glCallList(list); - glPopMatrix(); - glPushMatrix(); - glRotatef(-dodecaangle,cos72,-sin72,0); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[9]); - glCallList(list); - glPopMatrix(); - glPushMatrix(); - glRotatef(dodecaangle,cos36,-sin36,0); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[10]); - glCallList(list); - glPopMatrix(); - glRotatef(dodecaangle,cos36,sin36,0); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[11]); - glCallList(list); - - glDeleteLists(list,1); -} - -static void draw_ico( void ) -{ - GLuint list; - - list = glGenLists( 1 ); - glNewList( list, GL_COMPILE ); - TRIANGLE(1.5,seno,edgedivisions,(3*SQRT3+SQRT15)/12); - glEndList(); - - glPushMatrix(); - - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[0]); - glCallList(list); - glPushMatrix(); - glRotatef(180,0,0,1); - glRotatef(-icoangle,1,0,0); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[1]); - glCallList(list); - glPushMatrix(); - glRotatef(180,0,1,0); - glRotatef(-180+icoangle,0.5,SQRT3/2,0); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[2]); - glCallList(list); - glPopMatrix(); - glRotatef(180,0,1,0); - glRotatef(-180+icoangle,0.5,-SQRT3/2,0); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[3]); - glCallList(list); - glPopMatrix(); - glPushMatrix(); - glRotatef(180,0,1,0); - glRotatef(-180+icoangle,0.5,SQRT3/2,0); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[4]); - glCallList(list); - glPushMatrix(); - glRotatef(180,0,1,0); - glRotatef(-180+icoangle,0.5,SQRT3/2,0); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[5]); - glCallList(list); - glPopMatrix(); - glRotatef(180,0,0,1); - glRotatef(-icoangle,1,0,0); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[6]); - glCallList(list); - glPopMatrix(); - glRotatef(180,0,1,0); - glRotatef(-180+icoangle,0.5,-SQRT3/2,0); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[7]); - glCallList(list); - glPushMatrix(); - glRotatef(180,0,1,0); - glRotatef(-180+icoangle,0.5,-SQRT3/2,0); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[8]); - glCallList(list); - glPopMatrix(); - glRotatef(180,0,0,1); - glRotatef(-icoangle,1,0,0); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[9]); - glCallList(list); - glPopMatrix(); - glRotatef(180,1,0,0); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[10]); - glCallList(list); - glPushMatrix(); - glRotatef(180,0,0,1); - glRotatef(-icoangle,1,0,0); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[11]); - glCallList(list); - glPushMatrix(); - glRotatef(180,0,1,0); - glRotatef(-180+icoangle,0.5,SQRT3/2,0); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[12]); - glCallList(list); - glPopMatrix(); - glRotatef(180,0,1,0); - glRotatef(-180+icoangle,0.5,-SQRT3/2,0); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[13]); - glCallList(list); - glPopMatrix(); - glPushMatrix(); - glRotatef(180,0,1,0); - glRotatef(-180+icoangle,0.5,SQRT3/2,0); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[14]); - glCallList(list); - glPushMatrix(); - glRotatef(180,0,1,0); - glRotatef(-180+icoangle,0.5,SQRT3/2,0); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[15]); - glCallList(list); - glPopMatrix(); - glRotatef(180,0,0,1); - glRotatef(-icoangle,1,0,0); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[16]); - glCallList(list); - glPopMatrix(); - glRotatef(180,0,1,0); - glRotatef(-180+icoangle,0.5,-SQRT3/2,0); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[17]); - glCallList(list); - glPushMatrix(); - glRotatef(180,0,1,0); - glRotatef(-180+icoangle,0.5,-SQRT3/2,0); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[18]); - glCallList(list); - glPopMatrix(); - glRotatef(180,0,0,1); - glRotatef(-icoangle,1,0,0); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[19]); - glCallList(list); - - glDeleteLists(list,1); -} - -static void draw ( void ) { - glClear( /*GL_COLOR_BUFFER_BIT |*/ GL_DEPTH_BUFFER_BIT ); - - glPushMatrix(); - - glTranslatef( 0.0, 0.0, -10.0 ); - glScalef( Scale*WindH/WindW, Scale, Scale ); - glTranslatef(2.5*WindW/WindH*sin(step*1.11),2.5*cos(step*1.25*1.11),0); - glRotatef(step*100,1,0,0); - glRotatef(step*95,0,1,0); - glRotatef(step*90,0,0,1); - - seno=(sin(step)+1.0/3.0)*(4.0/5.0)*Magnitude; - - draw_object(); - - glPopMatrix(); - - glFlush(); - - step+=0.05; -} - -static void reshape( int width, int height ) -{ - glViewport(0, 0, WindW=(GLint)width, WindH=(GLint)height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum( -1.0, 1.0, -1.0, 1.0, 5.0, 15.0 ); - glMatrixMode(GL_MODELVIEW); -} - -static void pinit(void) -{ - switch(object) { - case 1: - draw_object=draw_tetra; - MaterialColor[0]=MaterialRed; - MaterialColor[1]=MaterialGreen; - MaterialColor[2]=MaterialBlue; - MaterialColor[3]=MaterialWhite; - edgedivisions=tetradivisions; - Magnitude=2.5; - break; - case 2: - draw_object=draw_cube; - MaterialColor[0]=MaterialRed; - MaterialColor[1]=MaterialGreen; - MaterialColor[2]=MaterialCyan; - MaterialColor[3]=MaterialMagenta; - MaterialColor[4]=MaterialYellow; - MaterialColor[5]=MaterialBlue; - edgedivisions=cubedivisions; - Magnitude=2.0; - break; - case 3: - draw_object=draw_octa; - MaterialColor[0]=MaterialRed; - MaterialColor[1]=MaterialGreen; - MaterialColor[2]=MaterialBlue; - MaterialColor[3]=MaterialWhite; - MaterialColor[4]=MaterialCyan; - MaterialColor[5]=MaterialMagenta; - MaterialColor[6]=MaterialGray; - MaterialColor[7]=MaterialYellow; - edgedivisions=octadivisions; - Magnitude=2.5; - break; - case 4: - draw_object=draw_dodeca; - MaterialColor[ 0]=MaterialRed; - MaterialColor[ 1]=MaterialGreen; - MaterialColor[ 2]=MaterialCyan; - MaterialColor[ 3]=MaterialBlue; - MaterialColor[ 4]=MaterialMagenta; - MaterialColor[ 5]=MaterialYellow; - MaterialColor[ 6]=MaterialGreen; - MaterialColor[ 7]=MaterialCyan; - MaterialColor[ 8]=MaterialRed; - MaterialColor[ 9]=MaterialMagenta; - MaterialColor[10]=MaterialBlue; - MaterialColor[11]=MaterialYellow; - edgedivisions=dodecadivisions; - Magnitude=2.0; - break; - case 5: - draw_object=draw_ico; - MaterialColor[ 0]=MaterialRed; - MaterialColor[ 1]=MaterialGreen; - MaterialColor[ 2]=MaterialBlue; - MaterialColor[ 3]=MaterialCyan; - MaterialColor[ 4]=MaterialYellow; - MaterialColor[ 5]=MaterialMagenta; - MaterialColor[ 6]=MaterialRed; - MaterialColor[ 7]=MaterialGreen; - MaterialColor[ 8]=MaterialBlue; - MaterialColor[ 9]=MaterialWhite; - MaterialColor[10]=MaterialCyan; - MaterialColor[11]=MaterialYellow; - MaterialColor[12]=MaterialMagenta; - MaterialColor[13]=MaterialRed; - MaterialColor[14]=MaterialGreen; - MaterialColor[15]=MaterialBlue; - MaterialColor[16]=MaterialCyan; - MaterialColor[17]=MaterialYellow; - MaterialColor[18]=MaterialMagenta; - MaterialColor[19]=MaterialGray; - edgedivisions=icodivisions; - Magnitude=2.5; - break; - } - if (mono) { - int loop; - for (loop=0; loop<20; loop++) MaterialColor[loop]=MaterialGray; - } - if (smooth) { - glShadeModel( GL_SMOOTH ); - } else { - glShadeModel( GL_FLAT ); - } - -} - -static void init(void) -{ - printf("Morph 3D - Shows morphing platonic polyhedra\n"); - printf("Author: Marcelo Fernandes Vianna (vianna@cat.cbpf.br)\n\n"); - printf(" [1] - Tetrahedron\n"); - printf(" [2] - Hexahedron (Cube)\n"); - printf(" [3] - Octahedron\n"); - printf(" [4] - Dodecahedron\n"); - printf(" [5] - Icosahedron\n"); - printf("[SPACE] - Toggle colored faces\n"); - printf("[RETURN] - Toggle smooth/flat shading\n"); - printf(" [ESC] - Quit\n"); - - object=1; - - glClearDepth(1.0); - glClearColor( 0.0, 0.0, 0.0, 0.0 ); - glColor3f( 1.0, 1.0, 1.0 ); - - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - glFlush(); - primary->Flip( primary, NULL, 0 ); - - glLightfv(GL_LIGHT0, GL_AMBIENT, ambient); - glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse); - glLightfv(GL_LIGHT0, GL_POSITION, position0); - glLightfv(GL_LIGHT1, GL_AMBIENT, ambient); - glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse); - glLightfv(GL_LIGHT1, GL_POSITION, position1); - glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient); - glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, lmodel_twoside); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_LIGHT1); - glEnable(GL_DEPTH_TEST); - glEnable(GL_NORMALIZE); - - glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, front_shininess); - glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, front_specular); - - glHint(GL_FOG_HINT, GL_FASTEST); - glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST); - glHint(GL_POLYGON_SMOOTH_HINT, GL_FASTEST); - - pinit(); -} - -int main( int argc, char *argv[] ) -{ - int quit = 0; - DFBResult err; - DFBSurfaceDescription dsc; - - DFBCHECK(DirectFBInit( &argc, &argv )); - - /* create the super interface */ - DFBCHECK(DirectFBCreate( &dfb )); - - /* create an event buffer for all devices with these caps */ - DFBCHECK(dfb->CreateInputEventBuffer( dfb, DICAPS_KEYS, DFB_FALSE, &events )); - - /* set our cooperative level to DFSCL_FULLSCREEN - for exclusive access to the primary layer */ - dfb->SetCooperativeLevel( dfb, DFSCL_FULLSCREEN ); - - /* get the primary surface, i.e. the surface of the - primary layer we have exclusive access to */ - dsc.flags = DSDESC_CAPS; - dsc.caps = DSCAPS_PRIMARY | DSCAPS_DOUBLE; - - DFBCHECK(dfb->CreateSurface( dfb, &dsc, &primary )); - - /* get the size of the surface and fill it */ - DFBCHECK(primary->GetSize( primary, &screen_width, &screen_height )); - DFBCHECK(primary->FillRectangle( primary, 0, 0, - screen_width, screen_height )); - - /* create the default font and set it */ - DFBCHECK(dfb->CreateFont( dfb, NULL, NULL, &font )); - DFBCHECK(primary->SetFont( primary, font )); - - /* get the GL context */ - DFBCHECK(primary->GetGL( primary, &primary_gl )); - - DFBCHECK(primary_gl->Lock( primary_gl )); - - init(); - reshape(screen_width, screen_height); - - DFBCHECK(primary_gl->Unlock( primary_gl )); - - T0 = get_millis(); - - while (!quit) { - DFBInputEvent evt; - unsigned long t; - - primary->Clear( primary, 0, 0, 0, 0 ); - - DFBCHECK(primary_gl->Lock( primary_gl )); - - draw(); - - DFBCHECK(primary_gl->Unlock( primary_gl )); - - if (fps) { - char buf[64]; - - sprintf(buf, "%4.1f FPS\n", fps); - primary->SetColor( primary, 0xff, 0, 0, 0xff ); - primary->DrawString( primary, buf, -1, screen_width - 5, 5, DSTF_TOPRIGHT ); - } - - primary->Flip( primary, NULL, 0 ); - Frames++; - - - t = get_millis(); - if (t - T0 >= 1000) { - GLfloat seconds = (t - T0) / 1000.0; - - fps = Frames / seconds; - - T0 = t; - Frames = 0; - } - - - while (events->GetEvent( events, DFB_EVENT(&evt) ) == DFB_OK) { - switch (evt.type) { - case DIET_KEYPRESS: - switch (evt.key_symbol) { - case DIKS_ESCAPE: - quit = 1; - break; - case DIKS_1: object=1; break; - case DIKS_2: object=2; break; - case DIKS_3: object=3; break; - case DIKS_4: object=4; break; - case DIKS_5: object=5; break; - case DIKS_SPACE: mono^=1; break; - case DIKS_ENTER: smooth^=1; break; - default: - ; - } - pinit(); - break; - default: - ; - } - } - } - - /* release our interfaces to shutdown DirectFB */ - primary_gl->Release( primary_gl ); - primary->Release( primary ); - font->Release( font ); - events->Release( events ); - dfb->Release( dfb ); - - return 0; -} - diff --git a/progs/directfb/df_reflect.c b/progs/directfb/df_reflect.c deleted file mode 100644 index a0e789c387..0000000000 --- a/progs/directfb/df_reflect.c +++ /dev/null @@ -1,489 +0,0 @@ -/* - (c) Copyright 2001 convergence integrated media GmbH. - All rights reserved. - - Written by Denis Oliver Kropp <dok@convergence.de> and - Andreas Hundt <andi@convergence.de>. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#include <stdlib.h> -#include <stdio.h> -#include <string.h> -#include <math.h> - -#include <directfb.h> -#include <directfbgl.h> - -#include <GL/glu.h> - -#include "util/showbuffer.c" -#include "util/readtex.c" - - -/* the super interface */ -IDirectFB *dfb; - -/* the primary surface (surface of primary layer) */ -IDirectFBSurface *primary; - -/* the GL context */ -IDirectFBGL *primary_gl; - -/* our font */ -IDirectFBFont *font; - -/* event buffer */ -IDirectFBEventBuffer *events; - -/* macro for a safe call to DirectFB functions */ -#define DFBCHECK(x...) \ - { \ - err = x; \ - if (err != DFB_OK) { \ - fprintf( stderr, "%s <%d>:\n\t", __FILE__, __LINE__ ); \ - DirectFBErrorFatal( #x, err ); \ - } \ - } - -static int screen_width, screen_height; - -static unsigned long T0 = 0; -static GLint Frames = 0; -static GLfloat fps = 0; - -static inline unsigned long get_millis() -{ - struct timeval tv; - - gettimeofday (&tv, NULL); - return (tv.tv_sec * 1000 + tv.tv_usec / 1000); -} - -/*******************************/ - -#define DEG2RAD (3.14159/180.0) - -#define TABLE_TEXTURE "../images/tile.rgb" - -static GLint ImgWidth, ImgHeight; -static GLenum ImgFormat; -static GLubyte *Image = NULL; - -#define MAX_OBJECTS 2 -static GLint table_list; -static GLint objects_list[MAX_OBJECTS]; - -static GLfloat xrot, yrot; -static GLfloat spin; - -static GLint Width = 400, Height = 300; -static GLenum ShowBuffer = GL_NONE; - - -static void make_table( void ) -{ - static GLfloat table_mat[] = { 1.0, 1.0, 1.0, 0.6 }; - static GLfloat gray[] = { 0.4, 0.4, 0.4, 1.0 }; - - table_list = glGenLists(1); - glNewList( table_list, GL_COMPILE ); - - /* load table's texture */ - glMaterialfv( GL_FRONT, GL_AMBIENT_AND_DIFFUSE, table_mat ); -/* glMaterialfv( GL_FRONT, GL_EMISSION, gray );*/ - glMaterialfv( GL_FRONT, GL_DIFFUSE, table_mat ); - glMaterialfv( GL_FRONT, GL_AMBIENT, gray ); - - /* draw textured square for the table */ - glPushMatrix(); - glScalef( 4.0, 4.0, 4.0 ); - glBegin( GL_POLYGON ); - glNormal3f( 0.0, 1.0, 0.0 ); - glTexCoord2f( 0.0, 0.0 ); glVertex3f( -1.0, 0.0, 1.0 ); - glTexCoord2f( 1.0, 0.0 ); glVertex3f( 1.0, 0.0, 1.0 ); - glTexCoord2f( 1.0, 1.0 ); glVertex3f( 1.0, 0.0, -1.0 ); - glTexCoord2f( 0.0, 1.0 ); glVertex3f( -1.0, 0.0, -1.0 ); - glEnd(); - glPopMatrix(); - - glDisable( GL_TEXTURE_2D ); - - glEndList(); -} - - -static void make_objects( void ) -{ - GLUquadricObj *q; - - static GLfloat cyan[] = { 0.0, 1.0, 1.0, 1.0 }; - static GLfloat green[] = { 0.2, 1.0, 0.2, 1.0 }; - static GLfloat black[] = { 0.0, 0.0, 0.0, 0.0 }; - - q = gluNewQuadric(); - gluQuadricDrawStyle( q, GLU_FILL ); - gluQuadricNormals( q, GLU_SMOOTH ); - - objects_list[0] = glGenLists(1); - glNewList( objects_list[0], GL_COMPILE ); - glMaterialfv( GL_FRONT, GL_AMBIENT_AND_DIFFUSE, cyan ); - glMaterialfv( GL_FRONT, GL_EMISSION, black ); - gluCylinder( q, 0.5, 0.5, 1.0, 15, 1 ); - glEndList(); - - objects_list[1] = glGenLists(1); - glNewList( objects_list[1], GL_COMPILE ); - glMaterialfv( GL_FRONT, GL_AMBIENT_AND_DIFFUSE, green ); - glMaterialfv( GL_FRONT, GL_EMISSION, black ); - gluCylinder( q, 1.5, 0.0, 2.5, 15, 1 ); - glEndList(); -} - - -static void init( void ) -{ - make_table(); - make_objects(); - - Image = LoadRGBImage( TABLE_TEXTURE, &ImgWidth, &ImgHeight, &ImgFormat ); - if (!Image) { - printf("Couldn't read %s\n", TABLE_TEXTURE); - exit(0); - } - - gluBuild2DMipmaps(GL_TEXTURE_2D, 3, ImgWidth, ImgHeight, - ImgFormat, GL_UNSIGNED_BYTE, Image); - - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST ); - - xrot = 30.0; - yrot = 50.0; - spin = 0.0; - - glShadeModel( GL_FLAT ); - - glEnable( GL_LIGHT0 ); - glEnable( GL_LIGHTING ); - - glClearColor( 0.5, 0.5, 0.9, 0.0 ); - - glEnable( GL_NORMALIZE ); -} - - - -static void reshape(int w, int h) -{ - GLfloat yAspect = 2.5; - GLfloat xAspect = yAspect * (float) w / (float) h; - Width = w; - Height = h; - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum( -xAspect, xAspect, -yAspect, yAspect, 10.0, 30.0 ); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - - - -static void draw_objects( GLfloat eyex, GLfloat eyey, GLfloat eyez ) -{ - (void) eyex; - (void) eyey; - (void) eyez; -#ifndef USE_ZBUFFER - if (eyex<0.5) { -#endif - glPushMatrix(); - glTranslatef( 1.0, 1.5, 0.0 ); - glRotatef( spin, 1.0, 0.5, 0.0 ); - glRotatef( 0.5*spin, 0.0, 0.5, 1.0 ); - glCallList( objects_list[0] ); - glPopMatrix(); - - glPushMatrix(); - glTranslatef( -1.0, 0.85+3.0*fabs( cos(0.01*spin) ), 0.0 ); - glRotatef( 0.5*spin, 0.0, 0.5, 1.0 ); - glRotatef( spin, 1.0, 0.5, 0.0 ); - glScalef( 0.5, 0.5, 0.5 ); - glCallList( objects_list[1] ); - glPopMatrix(); -#ifndef USE_ZBUFFER - } - else { - glPushMatrix(); - glTranslatef( -1.0, 0.85+3.0*fabs( cos(0.01*spin) ), 0.0 ); - glRotatef( 0.5*spin, 0.0, 0.5, 1.0 ); - glRotatef( spin, 1.0, 0.5, 0.0 ); - glScalef( 0.5, 0.5, 0.5 ); - glCallList( objects_list[1] ); - glPopMatrix(); - - glPushMatrix(); - glTranslatef( 1.0, 1.5, 0.0 ); - glRotatef( spin, 1.0, 0.5, 0.0 ); - glRotatef( 0.5*spin, 0.0, 0.5, 1.0 ); - glCallList( objects_list[0] ); - glPopMatrix(); - } -#endif -} - - - -static void draw_table( void ) -{ - glCallList( table_list ); -} - - - -static void draw( void ) -{ - static GLfloat light_pos[] = { 0.0, 20.0, 0.0, 1.0 }; - GLfloat dist = 20.0; - GLfloat eyex, eyey, eyez; - - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); - - - eyex = dist * cos(yrot*DEG2RAD) * cos(xrot*DEG2RAD); - eyez = dist * sin(yrot*DEG2RAD) * cos(xrot*DEG2RAD); - eyey = dist * sin(xrot*DEG2RAD); - - /* view from top */ - glPushMatrix(); - gluLookAt( eyex, eyey, eyez, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0 ); - - glLightfv( GL_LIGHT0, GL_POSITION, light_pos ); - - /* draw table into stencil planes */ - glDisable( GL_DEPTH_TEST ); - glEnable( GL_STENCIL_TEST ); - glStencilFunc( GL_ALWAYS, 1, 0xffffffff ); - glStencilOp( GL_REPLACE, GL_REPLACE, GL_REPLACE ); - glColorMask( GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE ); - draw_table(); - glColorMask( GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE ); - - glEnable( GL_DEPTH_TEST ); - - /* render view from below (reflected viewport) */ - /* only draw where stencil==1 */ - if (eyey>0.0) { - glPushMatrix(); - - glStencilFunc( GL_EQUAL, 1, 0xffffffff ); /* draw if ==1 */ - glStencilOp( GL_KEEP, GL_KEEP, GL_KEEP ); - glScalef( 1.0, -1.0, 1.0 ); - - /* Reposition light in reflected space. */ - glLightfv(GL_LIGHT0, GL_POSITION, light_pos); - - draw_objects(eyex, eyey, eyez); - glPopMatrix(); - - /* Restore light's original unreflected position. */ - glLightfv(GL_LIGHT0, GL_POSITION, light_pos); - } - - glDisable( GL_STENCIL_TEST ); - - glEnable( GL_BLEND ); - glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ); - - glEnable( GL_TEXTURE_2D ); - draw_table(); - glDisable( GL_TEXTURE_2D ); - glDisable( GL_BLEND ); - - /* view from top */ - glPushMatrix(); - - draw_objects(eyex, eyey, eyez); - - glPopMatrix(); - - glPopMatrix(); - - if (ShowBuffer == GL_DEPTH) { - ShowDepthBuffer(Width, Height, 1.0, 0.0); - } - else if (ShowBuffer == GL_STENCIL) { - ShowStencilBuffer(Width, Height, 255.0, 0.0); - } - else if (ShowBuffer == GL_ALPHA) { - ShowAlphaBuffer(Width, Height); - } -} - -/*******************************/ - -int main( int argc, char *argv[] ) -{ - int quit = 0; - DFBResult err; - DFBSurfaceDescription dsc; - - DFBCHECK(DirectFBInit( &argc, &argv )); - - /* create the super interface */ - DFBCHECK(DirectFBCreate( &dfb )); - - /* create an event buffer for all devices with these caps */ - DFBCHECK(dfb->CreateInputEventBuffer( dfb, DICAPS_ALL, DFB_FALSE, &events )); - - /* set our cooperative level to DFSCL_FULLSCREEN - for exclusive access to the primary layer */ - dfb->SetCooperativeLevel( dfb, DFSCL_FULLSCREEN ); - - /* get the primary surface, i.e. the surface of the - primary layer we have exclusive access to */ - dsc.flags = DSDESC_CAPS; - dsc.caps = (DFBSurfaceCapabilities)(DSCAPS_PRIMARY | DSCAPS_DOUBLE); - - DFBCHECK(dfb->CreateSurface( dfb, &dsc, &primary )); - - /* get the size of the surface and fill it */ - DFBCHECK(primary->GetSize( primary, &screen_width, &screen_height )); - DFBCHECK(primary->FillRectangle( primary, 0, 0, - screen_width, screen_height )); - - /* create the default font and set it */ - DFBCHECK(dfb->CreateFont( dfb, NULL, NULL, &font )); - DFBCHECK(primary->SetFont( primary, font )); - - /* get the GL context */ - DFBCHECK(primary->GetGL( primary, &primary_gl )); - - DFBCHECK(primary_gl->Lock( primary_gl )); - - init(); - reshape(screen_width, screen_height); - - DFBCHECK(primary_gl->Unlock( primary_gl )); - - T0 = get_millis(); - - while (!quit) { - DFBInputEvent evt; - unsigned long t; - - DFBCHECK(primary_gl->Lock( primary_gl )); - - draw(); - - DFBCHECK(primary_gl->Unlock( primary_gl )); - - if (fps) { - char buf[64]; - - sprintf(buf, "%4.1f FPS\n", fps); - primary->SetColor( primary, 0xff, 0, 0, 0xff ); - primary->DrawString( primary, buf, -1, screen_width - 5, 5, DSTF_TOPRIGHT ); - } - - primary->Flip( primary, NULL, (DFBSurfaceFlipFlags)0 ); - Frames++; - - - t = get_millis(); - if (t - T0 >= 1000) { - GLfloat seconds = (t - T0) / 1000.0; - - fps = Frames / seconds; - - T0 = t; - Frames = 0; - } - - - while (events->GetEvent( events, DFB_EVENT(&evt) ) == DFB_OK) { - switch (evt.type) { - case DIET_KEYPRESS: - switch (DFB_LOWER_CASE(evt.key_symbol)) { - case DIKS_ESCAPE: - quit = 1; - break; - case DIKS_CURSOR_UP: - xrot += 3.0; - if ( xrot > 85 ) - xrot = 85; - break; - case DIKS_CURSOR_DOWN: - xrot -= 3.0; - if ( xrot < 5 ) - xrot = 5; - break; - case DIKS_CURSOR_LEFT: - yrot += 3.0; - break; - case DIKS_CURSOR_RIGHT: - yrot -= 3.0; - break; - case DIKS_SMALL_D: - ShowBuffer = GL_DEPTH; - break; - case DIKS_SMALL_S: - ShowBuffer = GL_STENCIL; - break; - case DIKS_SMALL_A: - ShowBuffer = GL_ALPHA; - break; - default: - ShowBuffer = GL_NONE; - } - break; - case DIET_AXISMOTION: - if (evt.flags & DIEF_AXISREL) { - switch (evt.axis) { - case DIAI_X: - yrot += evt.axisrel / 2.0; - break; - case DIAI_Y: - xrot += evt.axisrel / 2.0; - break; - default: - ; - } - } - break; - default: - ; - } - } - - spin += 2.0; - yrot += 3.0; - } - - /* release our interfaces to shutdown DirectFB */ - primary_gl->Release( primary_gl ); - primary->Release( primary ); - font->Release( font ); - events->Release( events ); - dfb->Release( dfb ); - - return 0; -} - diff --git a/progs/directfb/multi_window.c b/progs/directfb/multi_window.c deleted file mode 100644 index 9bb0e4be8e..0000000000 --- a/progs/directfb/multi_window.c +++ /dev/null @@ -1,240 +0,0 @@ -/* - (c) Copyright 2001 convergence integrated media GmbH. - All rights reserved. - - Written by Denis Oliver Kropp <dok@convergence.de> and - Andreas Hundt <andi@convergence.de>. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#include <stdlib.h> -#include <stdio.h> -#include <string.h> -#include <math.h> - -#include <GL/gl.h> -#include <GL/glu.h> - -#include <directfb.h> -#include <directfbgl.h> - - -typedef struct { - IDirectFBWindow *window; - IDirectFBSurface *surface; - IDirectFBGL *gl; - - int width; - int height; - - unsigned long last_time; - int frames; - float fps; -} Context; - -static const GLfloat blue[4] = {0.2, 0.2, 1.0, 1.0}; - -static IDirectFB *dfb; -static IDirectFBDisplayLayer *layer; -static IDirectFBFont *font; -static IDirectFBEventBuffer *events = NULL; - -/* macro for a safe call to DirectFB functions */ -#define DFBCHECK(x...) \ - do { \ - ret = x; \ - if (ret != DFB_OK) { \ - fprintf( stderr, "%s <%d>:\n\t", __FILE__, __LINE__ ); \ - DirectFBErrorFatal( #x, ret ); \ - } \ - } while (0) - - -static inline unsigned long get_millis() -{ - struct timeval tv; - - gettimeofday (&tv, NULL); - return (tv.tv_sec * 1000 + tv.tv_usec / 1000); -} - - -static void -setup( Context *context ) -{ - GLfloat pos[4] = {5.0, 5.0, 10.0, 0.0}; - - context->surface->GetSize( context->surface, - &context->width, &context->height ); - - context->gl->Lock( context->gl ); - - glLightfv(GL_LIGHT0, GL_POSITION, pos); - glEnable(GL_CULL_FACE); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_DEPTH_TEST); - - glViewport(0, 0, context->width, context->height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(70.0, context->width / (float) context->height, 1.0, 80.0); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0, 0.0, -40.0); - - context->gl->Unlock( context->gl ); -} - -static void -update( Context *context ) -{ - unsigned long t; - IDirectFBSurface *surface = context->surface; - static __u8 r = 0, g = 0, b = 0; - - - context->gl->Lock( context->gl ); - - glClearColor( r++/255.0, g++/255.0, b++/255.0, 1.0 ); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - context->gl->Unlock( context->gl ); - - if (context->fps) { - char buf[16]; - - snprintf(buf, sizeof(buf), "%.1f FPS\n", context->fps); - - surface->SetColor( surface, 0xff, 0x00, 0x00, 0xff ); - surface->DrawString( surface, buf, -1, - context->width - 5, 5, DSTF_TOPRIGHT ); - } - - surface->Flip( surface, NULL, 0 ); - - context->frames++; - - t = get_millis(); - if (t - context->last_time >= 2000) { - float seconds = (t - context->last_time) / 1000.0f; - - context->fps = context->frames / seconds; - - context->last_time = t; - context->frames = 0; - } -} - -int -main( int argc, char *argv[] ) -{ - DFBResult ret; - int i; - int quit = 0; - const int num = 2; - Context contexts[num]; - - DFBCHECK(DirectFBInit( &argc, &argv )); - - /* create the super interface */ - DFBCHECK(DirectFBCreate( &dfb )); - - DFBCHECK(dfb->GetDisplayLayer( dfb, DLID_PRIMARY, &layer )); - - /* create the default font */ - DFBCHECK(dfb->CreateFont( dfb, NULL, NULL, &font )); - - for (i=0; i<num; i++) { - IDirectFBWindow *window; - IDirectFBSurface *surface; - IDirectFBGL *gl; - DFBWindowDescription desc; - - desc.flags = DWDESC_POSX | DWDESC_POSY | - DWDESC_WIDTH | DWDESC_HEIGHT; - desc.posx = (i%3) * 200 + 10; - desc.posy = (i/3) * 200 + 10; - desc.width = 180; - desc.height = 180; - - DFBCHECK(layer->CreateWindow( layer, &desc, &window )); - DFBCHECK(window->GetSurface( window, &surface )); - DFBCHECK(surface->GetGL( surface, &gl )); - - contexts[i].window = window; - contexts[i].surface = surface; - contexts[i].gl = gl; - - contexts[i].last_time = get_millis(); - contexts[i].frames = 0; - contexts[i].fps = 0; - - setup( &contexts[i] ); - - if (events) - DFBCHECK(window->AttachEventBuffer( window, events )); - else - DFBCHECK(window->CreateEventBuffer( window, &events )); - - DFBCHECK(surface->SetFont( surface, font )); - - window->SetOpacity( window, 0xff ); - } - - while (!quit) { - DFBWindowEvent evt; - - for (i=0; i<num; i++) - update( &contexts[i] ); - - while (events->GetEvent( events, DFB_EVENT(&evt) ) == DFB_OK) { - switch (evt.type) { - case DWET_KEYDOWN: - switch (evt.key_symbol) { - case DIKS_ESCAPE: - quit = 1; - break; - - default: - break; - } - break; - - default: - break; - } - } - } - - events->Release( events ); - - for (i=0; i<num; i++) { - contexts[i].gl->Release( contexts[i].gl ); - contexts[i].surface->Release( contexts[i].surface ); - contexts[i].window->Release( contexts[i].window ); - } - - font->Release( font ); - layer->Release( layer ); - dfb->Release( dfb ); - - return 0; -} - diff --git a/progs/egl/.gitignore b/progs/egl/.gitignore deleted file mode 100644 index 7a13d4686a..0000000000 --- a/progs/egl/.gitignore +++ /dev/null @@ -1,12 +0,0 @@ -demo1 -demo2 -demo3 -eglgears -eglinfo -eglscreen -egltri -peglgears -xeglbindtex -xeglgears -xeglthreads -xegl_tri diff --git a/progs/egl/Makefile b/progs/egl/Makefile deleted file mode 100644 index ff9a858c56..0000000000 --- a/progs/egl/Makefile +++ /dev/null @@ -1,74 +0,0 @@ -# progs/egl/Makefile - -TOP = ../.. -include $(TOP)/configs/current - - -INCLUDE_DIRS = -I$(TOP)/include - -HEADERS = $(TOP)/include/GLES/egl.h -LIB_DEP = $(TOP)/$(LIB_DIR)/libEGL.so - -LIBS = -L$(TOP)/$(LIB_DIR) -lEGL -lGL - -PROGRAMS = \ - demo1 \ - demo2 \ - demo3 \ - egltri \ - eglinfo \ - eglgears \ - eglscreen \ - peglgears \ - xeglbindtex \ - xeglgears \ - xeglthreads \ - xegl_tri - - -.c.o: - $(CC) -c $(INCLUDE_DIRS) $(CFLAGS) $< -o $@ - - - -default: $(PROGRAMS) - -demo1: demo1.o $(HEADERS) $(LIB_DEP) - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(LIBDRM_LIB) - -demo2: demo2.o $(HEADERS) $(LIB_DEP) - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(LIBDRM_LIB) - -demo3: demo3.o $(HEADERS) $(LIB_DEP) - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(LIBDRM_LIB) - -egltri: egltri.o $(HEADERS) $(LIB_DEP) - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(LIBDRM_LIB) - -eglinfo: eglinfo.o $(HEADERS) $(LIB_DEP) - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(LIBDRM_LIB) - -eglgears: eglgears.o $(HEADERS) $(LIB_DEP) - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(LIBDRM_LIB) - -eglscreen: eglscreen.o $(HEADERS) $(LIB_DEP) - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(LIBDRM_LIB) - -peglgears: peglgears.o $(HEADERS) $(LIB_DEP) - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(LIBDRM_LIB) - -xeglbindtex: xeglbindtex.o $(HEADERS) $(LIB_DEP) - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) -lX11 - -xeglgears: xeglgears.o $(HEADERS) $(LIB_DEP) - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) -lX11 - -xeglthreads: xeglthreads.o $(HEADERS) $(LIB_DEP) - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) -lX11 - -xegl_tri: xegl_tri.o $(HEADERS) $(LIB_DEP) - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) -lX11 - -clean: - -rm -f *.o *~ - -rm -f $(PROGRAMS) diff --git a/progs/egl/demo1.c b/progs/egl/demo1.c deleted file mode 100644 index 34a516e72f..0000000000 --- a/progs/egl/demo1.c +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Exercise EGL API functions - */ - -#define EGL_EGLEXT_PROTOTYPES - -#include <EGL/egl.h> -#include <EGL/eglext.h> -#include <assert.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - - -/** - * Test EGL_MESA_screen_surface functions - */ -static void -TestScreens(EGLDisplay dpy) -{ -#define MAX 8 - EGLScreenMESA screens[MAX]; - EGLint numScreens; - EGLint i; - - eglGetScreensMESA(dpy, screens, MAX, &numScreens); - printf("Found %d screens\n", numScreens); - for (i = 0; i < numScreens; i++) { - printf(" Screen %d handle: %d\n", i, (int) screens[i]); - } -} - -/** - * Print table of all available configurations. - */ -static void -PrintConfigs(EGLDisplay d, EGLConfig *configs, EGLint numConfigs) -{ - EGLint i; - - printf("Configurations:\n"); - printf(" bf lv d st colorbuffer dp st supported \n"); - printf(" id sz l b ro r g b a th cl surfaces \n"); - printf("----------------------------------------------\n"); - for (i = 0; i < numConfigs; i++) { - EGLint id, size, level; - EGLint red, green, blue, alpha; - EGLint depth, stencil; - EGLint surfaces; - EGLint doubleBuf = 1, stereo = 0; - char surfString[100] = ""; - - eglGetConfigAttrib(d, configs[i], EGL_CONFIG_ID, &id); - eglGetConfigAttrib(d, configs[i], EGL_BUFFER_SIZE, &size); - eglGetConfigAttrib(d, configs[i], EGL_LEVEL, &level); - - eglGetConfigAttrib(d, configs[i], EGL_RED_SIZE, &red); - eglGetConfigAttrib(d, configs[i], EGL_GREEN_SIZE, &green); - eglGetConfigAttrib(d, configs[i], EGL_BLUE_SIZE, &blue); - eglGetConfigAttrib(d, configs[i], EGL_ALPHA_SIZE, &alpha); - eglGetConfigAttrib(d, configs[i], EGL_DEPTH_SIZE, &depth); - eglGetConfigAttrib(d, configs[i], EGL_STENCIL_SIZE, &stencil); - eglGetConfigAttrib(d, configs[i], EGL_SURFACE_TYPE, &surfaces); - - if (surfaces & EGL_WINDOW_BIT) - strcat(surfString, "win,"); - if (surfaces & EGL_PBUFFER_BIT) - strcat(surfString, "pb,"); - if (surfaces & EGL_PIXMAP_BIT) - strcat(surfString, "pix,"); - if (strlen(surfString) > 0) - surfString[strlen(surfString) - 1] = 0; - - printf("0x%02x %2d %2d %c %c %2d %2d %2d %2d %2d %2d %-12s\n", - id, size, level, - doubleBuf ? 'y' : '.', - stereo ? 'y' : '.', - red, green, blue, alpha, - depth, stencil, surfString); - } -} - - - -int -main(int argc, char *argv[]) -{ - int maj, min; - EGLContext ctx; - EGLSurface pbuffer; - EGLConfig *configs; - EGLint numConfigs; - EGLBoolean b; - const EGLint pbufAttribs[] = { - EGL_WIDTH, 500, - EGL_HEIGHT, 500, - EGL_NONE - }; - - EGLDisplay d = eglGetDisplay(EGL_DEFAULT_DISPLAY); - assert(d); - - if (!eglInitialize(d, &maj, &min)) { - printf("demo: eglInitialize failed\n"); - exit(1); - } - - printf("EGL version = %d.%d\n", maj, min); - printf("EGL_VENDOR = %s\n", eglQueryString(d, EGL_VENDOR)); - - eglGetConfigs(d, NULL, 0, &numConfigs); - configs = malloc(sizeof(*configs) *numConfigs); - eglGetConfigs(d, configs, numConfigs, &numConfigs); - - PrintConfigs(d, configs, numConfigs); - - ctx = eglCreateContext(d, configs[0], EGL_NO_CONTEXT, NULL); - if (ctx == EGL_NO_CONTEXT) { - printf("failed to create context\n"); - return 0; - } - - pbuffer = eglCreatePbufferSurface(d, configs[0], pbufAttribs); - if (pbuffer == EGL_NO_SURFACE) { - printf("failed to create pbuffer\n"); - return 0; - } - - free(configs); - - b = eglMakeCurrent(d, pbuffer, pbuffer, ctx); - if (!b) { - printf("make current failed\n"); - return 0; - } - - b = eglMakeCurrent(d, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); - - TestScreens(d); - - eglDestroySurface(d, pbuffer); - eglDestroyContext(d, ctx); - eglTerminate(d); - - return 0; -} diff --git a/progs/egl/demo2.c b/progs/egl/demo2.c deleted file mode 100644 index 3994656721..0000000000 --- a/progs/egl/demo2.c +++ /dev/null @@ -1,212 +0,0 @@ -/* - * Exercise EGL API functions - */ - -#define EGL_EGLEXT_PROTOTYPES - -#include <assert.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> - -#include <EGL/egl.h> -#include <EGL/eglext.h> -#include <GLES/gl.h> - -/*#define FRONTBUFFER*/ - -static void _subset_Rectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2, - GLfloat r, GLfloat g, GLfloat b) -{ - GLfloat v[4][2], c[4][4]; - int i; - - v[0][0] = x1; v[0][1] = y1; - v[1][0] = x2; v[1][1] = y1; - v[2][0] = x2; v[2][1] = y2; - v[3][0] = x1; v[3][1] = y2; - - for (i = 0; i < 4; i++) { - c[i][0] = r; - c[i][1] = g; - c[i][2] = b; - c[i][3] = 1.0; - } - - glVertexPointer(2, GL_FLOAT, 0, v); - glColorPointer(4, GL_FLOAT, 0, v); - glEnableClientState(GL_VERTEX_ARRAY); - glEnableClientState(GL_COLOR_ARRAY); - - glDrawArrays(GL_TRIANGLE_FAN, 0, 4); - - glDisableClientState(GL_VERTEX_ARRAY); - glDisableClientState(GL_COLOR_ARRAY); -} - - -static void redraw(EGLDisplay dpy, EGLSurface surf, int rot) -{ - GLfloat r, g, b; - - printf("Redraw event\n"); - - glClearColor( rand()/(float)RAND_MAX, - rand()/(float)RAND_MAX, - rand()/(float)RAND_MAX, - 1); - - glClear( GL_COLOR_BUFFER_BIT ); - - r = rand()/(float)RAND_MAX; - g = rand()/(float)RAND_MAX; - b = rand()/(float)RAND_MAX; - - glPushMatrix(); - glRotatef(rot, 0, 0, 1); - glScalef(.5, .5, .5); - _subset_Rectf( -1, -1, 1, 1, r, g, b ); - glPopMatrix(); - -#ifdef FRONTBUFFER - glFlush(); -#else - eglSwapBuffers( dpy, surf ); -#endif - glFinish(); -} - - -/** - * Test EGL_MESA_screen_surface functions - */ -static void -TestScreens(EGLDisplay dpy) -{ -#define MAX 8 - EGLScreenMESA screens[MAX]; - EGLint numScreens; - EGLint i; - - eglGetScreensMESA(dpy, screens, MAX, &numScreens); - printf("Found %d screens\n", numScreens); - for (i = 0; i < numScreens; i++) { - printf(" Screen %d handle: %d\n", i, (int) screens[i]); - } -} - - -int -main(int argc, char *argv[]) -{ - int maj, min; - EGLContext ctx; - EGLSurface pbuffer, screen_surf; - EGLConfig configs[10]; - EGLint numConfigs, i; - EGLBoolean b; - const EGLint pbufAttribs[] = { - EGL_WIDTH, 500, - EGL_HEIGHT, 500, - EGL_NONE - }; - const EGLint screenAttribs[] = { - EGL_WIDTH, 1024, - EGL_HEIGHT, 768, - EGL_NONE - }; - EGLModeMESA mode; - EGLScreenMESA screen; - EGLint count; - - EGLDisplay d = eglGetDisplay(EGL_DEFAULT_DISPLAY); - assert(d); - - if (!eglInitialize(d, &maj, &min)) { - printf("demo: eglInitialize failed\n"); - exit(1); - } - - printf("EGL version = %d.%d\n", maj, min); - printf("EGL_VENDOR = %s\n", eglQueryString(d, EGL_VENDOR)); - if (!strstr(eglQueryString(d, EGL_EXTENSIONS), - "EGL_MESA_screen_surface")) { - printf("EGL_MESA_screen_surface is not supported\n"); - exit(1); - } - - eglGetConfigs(d, configs, 10, &numConfigs); - printf("Got %d EGL configs:\n", numConfigs); - for (i = 0; i < numConfigs; i++) { - EGLint id, red, depth; - eglGetConfigAttrib(d, configs[i], EGL_CONFIG_ID, &id); - eglGetConfigAttrib(d, configs[i], EGL_RED_SIZE, &red); - eglGetConfigAttrib(d, configs[i], EGL_DEPTH_SIZE, &depth); - printf("%2d: Red Size = %d Depth Size = %d\n", id, red, depth); - } - - eglGetScreensMESA(d, &screen, 1, &count); - eglGetModesMESA(d, screen, &mode, 1, &count); - - ctx = eglCreateContext(d, configs[0], EGL_NO_CONTEXT, NULL); - if (ctx == EGL_NO_CONTEXT) { - printf("failed to create context\n"); - return 0; - } - - pbuffer = eglCreatePbufferSurface(d, configs[0], pbufAttribs); - if (pbuffer == EGL_NO_SURFACE) { - printf("failed to create pbuffer\n"); - return 0; - } - - b = eglMakeCurrent(d, pbuffer, pbuffer, ctx); - if (!b) { - printf("make current failed\n"); - return 0; - } - - b = eglMakeCurrent(d, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); - - screen_surf = eglCreateScreenSurfaceMESA(d, configs[0], screenAttribs); - if (screen_surf == EGL_NO_SURFACE) { - printf("failed to create screen surface\n"); - return 0; - } - - eglShowScreenSurfaceMESA(d, screen, screen_surf, mode); - - b = eglMakeCurrent(d, screen_surf, screen_surf, ctx); - if (!b) { - printf("make current failed\n"); - return 0; - } - - glViewport(0, 0, 1024, 768); - - glClearColor( 0, - 1.0, - 0, - 1); - - glClear( GL_COLOR_BUFFER_BIT ); - - - TestScreens(d); - - glShadeModel( GL_FLAT ); - - for (i = 0; i < 6; i++) { - redraw(d, screen_surf, i*10 ); - - printf("sleep(1)\n"); - sleep(1); - } - - eglDestroySurface(d, pbuffer); - eglDestroyContext(d, ctx); - eglTerminate(d); - - return 0; -} diff --git a/progs/egl/demo3.c b/progs/egl/demo3.c deleted file mode 100644 index 0665fd0516..0000000000 --- a/progs/egl/demo3.c +++ /dev/null @@ -1,642 +0,0 @@ -/* - * Exercise EGL API functions - */ - -#define EGL_EGLEXT_PROTOTYPES - -#include <EGL/egl.h> -#include <EGL/eglext.h> -#include <GL/gl.h> -#include <assert.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> - - - -#define PIXEL_CENTER(x) ((long)(x) + 0.5) - -#define GAP 10 -#define ROWS 3 -#define COLS 4 - -#define OPENGL_WIDTH 48 -#define OPENGL_HEIGHT 13 - - -GLenum rgb, doubleBuffer, windType; -GLint windW, windH; - -GLenum mode1, mode2; -GLint boxW, boxH; -GLubyte OpenGL_bits[] = { - 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x7f, 0xfb, 0xff, 0xff, 0xff, 0x01, - 0x7f, 0xfb, 0xff, 0xff, 0xff, 0x01, - 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x3e, 0x8f, 0xb7, 0xf9, 0xfc, 0x01, - 0x63, 0xdb, 0xb0, 0x8d, 0x0d, 0x00, - 0x63, 0xdb, 0xb7, 0x8d, 0x0d, 0x00, - 0x63, 0xdb, 0xb6, 0x8d, 0x0d, 0x00, - 0x63, 0x8f, 0xf3, 0xcc, 0x0d, 0x00, - 0x63, 0x00, 0x00, 0x0c, 0x4c, 0x0a, - 0x63, 0x00, 0x00, 0x0c, 0x4c, 0x0e, - 0x63, 0x00, 0x00, 0x8c, 0xed, 0x0e, - 0x3e, 0x00, 0x00, 0xf8, 0x0c, 0x00, -}; - - -static void Init(void) -{ - - mode1 = GL_TRUE; - mode2 = GL_TRUE; -} - -static void Reshape(int width, int height) -{ - - windW = (GLint)width; - windH = (GLint)height; -} - -#if 0 -static void RotateColorMask(void) -{ - static GLint rotation = 0; - - rotation = (rotation + 1) & 0x3; - switch (rotation) { - case 0: - glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); - glIndexMask( 0xff ); - break; - case 1: - glColorMask(GL_FALSE, GL_TRUE, GL_TRUE, GL_TRUE); - glIndexMask(0xFE); - break; - case 2: - glColorMask(GL_TRUE, GL_FALSE, GL_TRUE, GL_TRUE); - glIndexMask(0xFD); - break; - case 3: - glColorMask(GL_TRUE, GL_TRUE, GL_FALSE, GL_TRUE); - glIndexMask(0xFB); - break; - } -} -#endif - -static void Viewport(GLint row, GLint column) -{ - GLint x, y; - - boxW = (windW - (COLS + 1) * GAP) / COLS; - boxH = (windH - (ROWS + 1) * GAP) / ROWS; - - x = GAP + column * (boxW + GAP); - y = GAP + row * (boxH + GAP); - - glViewport(x, y, boxW, boxH); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-boxW/2, boxW/2, -boxH/2, boxH/2, 0.0, 1.0); - glMatrixMode(GL_MODELVIEW); - - glEnable(GL_SCISSOR_TEST); - glScissor(x, y, boxW, boxH); -} - -enum { - COLOR_BLACK = 0, - COLOR_RED, - COLOR_GREEN, - COLOR_YELLOW, - COLOR_BLUE, - COLOR_MAGENTA, - COLOR_CYAN, - COLOR_WHITE -}; - -static float RGBMap[9][3] = { - {0, 0, 0}, - {1, 0, 0}, - {0, 1, 0}, - {1, 1, 0}, - {0, 0, 1}, - {1, 0, 1}, - {0, 1, 1}, - {1, 1, 1}, - {0.5, 0.5, 0.5} -}; - -static void SetColor(int c) -{ - glColor3fv(RGBMap[c]); -} - -static void Point(void) -{ - GLint i; - - glBegin(GL_POINTS); - SetColor(COLOR_WHITE); - glVertex2i(0, 0); - for (i = 1; i < 8; i++) { - GLint j = i * 2; - SetColor(COLOR_BLACK+i); - glVertex2i(-j, -j); - glVertex2i(-j, 0); - glVertex2i(-j, j); - glVertex2i(0, j); - glVertex2i(j, j); - glVertex2i(j, 0); - glVertex2i(j, -j); - glVertex2i(0, -j); - } - glEnd(); -} - -static void Lines(void) -{ - GLint i; - - glPushMatrix(); - - glTranslatef(-12, 0, 0); - for (i = 1; i < 8; i++) { - SetColor(COLOR_BLACK+i); - glBegin(GL_LINES); - glVertex2i(-boxW/4, -boxH/4); - glVertex2i(boxW/4, boxH/4); - glEnd(); - glTranslatef(4, 0, 0); - } - - glPopMatrix(); - - glBegin(GL_LINES); - glVertex2i(0, 0); - glEnd(); -} - -static void LineStrip(void) -{ - - glBegin(GL_LINE_STRIP); - SetColor(COLOR_RED); - glVertex2f(PIXEL_CENTER(-boxW/4), PIXEL_CENTER(-boxH/4)); - SetColor(COLOR_GREEN); - glVertex2f(PIXEL_CENTER(-boxW/4), PIXEL_CENTER(boxH/4)); - SetColor(COLOR_BLUE); - glVertex2f(PIXEL_CENTER(boxW/4), PIXEL_CENTER(boxH/4)); - SetColor(COLOR_WHITE); - glVertex2f(PIXEL_CENTER(boxW/4), PIXEL_CENTER(-boxH/4)); - glEnd(); - - glBegin(GL_LINE_STRIP); - glVertex2i(0, 0); - glEnd(); -} - -static void LineLoop(void) -{ - - glBegin(GL_LINE_LOOP); - SetColor(COLOR_RED); - glVertex2f(PIXEL_CENTER(-boxW/4), PIXEL_CENTER(-boxH/4)); - SetColor(COLOR_GREEN); - glVertex2f(PIXEL_CENTER(-boxW/4), PIXEL_CENTER(boxH/4)); - SetColor(COLOR_BLUE); - glVertex2f(PIXEL_CENTER(boxW/4), PIXEL_CENTER(boxH/4)); - SetColor(COLOR_WHITE); - glVertex2f(PIXEL_CENTER(boxW/4), PIXEL_CENTER(-boxH/4)); - glEnd(); - - glEnable(GL_LOGIC_OP); - glLogicOp(GL_XOR); - - glEnable(GL_BLEND); - glBlendFunc(GL_ONE, GL_ONE); - - SetColor(COLOR_MAGENTA); - glBegin(GL_LINE_LOOP); - glVertex2f(PIXEL_CENTER(-boxW/8), PIXEL_CENTER(-boxH/8)); - glVertex2f(PIXEL_CENTER(-boxW/8), PIXEL_CENTER(boxH/8)); - glEnd(); - glBegin(GL_LINE_LOOP); - glVertex2f(PIXEL_CENTER(-boxW/8), PIXEL_CENTER(boxH/8+5)); - glVertex2f(PIXEL_CENTER(boxW/8), PIXEL_CENTER(boxH/8+5)); - glEnd(); - glDisable(GL_LOGIC_OP); - glDisable(GL_BLEND); - - SetColor(COLOR_GREEN); - glBegin(GL_POINTS); - glVertex2i(0, 0); - glEnd(); - - glBegin(GL_LINE_LOOP); - glVertex2i(0, 0); - glEnd(); -} - -static void Bitmap(void) -{ - - glBegin(GL_LINES); - SetColor(COLOR_GREEN); - glVertex2i(-boxW/2, 0); - glVertex2i(boxW/2, 0); - glVertex2i(0, -boxH/2); - glVertex2i(0, boxH/2); - SetColor(COLOR_RED); - glVertex2i(0, -3); - glVertex2i(0, -3+OPENGL_HEIGHT); - SetColor(COLOR_BLUE); - glVertex2i(0, -3); - glVertex2i(OPENGL_WIDTH, -3); - glEnd(); - - SetColor(COLOR_GREEN); - - glPixelStorei(GL_UNPACK_LSB_FIRST, GL_TRUE); - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - - glRasterPos2i(0, 0); - glBitmap(OPENGL_WIDTH, OPENGL_HEIGHT, 0, 3, 0.0, 0.0, OpenGL_bits); -} - -static void Triangles(void) -{ - - glBegin(GL_TRIANGLES); - SetColor(COLOR_GREEN); - glVertex2i(-boxW/4, -boxH/4); - SetColor(COLOR_RED); - glVertex2i(-boxW/8, -boxH/16); - SetColor(COLOR_BLUE); - glVertex2i(boxW/8, -boxH/16); - - SetColor(COLOR_GREEN); - glVertex2i(-boxW/4, boxH/4); - SetColor(COLOR_RED); - glVertex2i(-boxW/8, boxH/16); - SetColor(COLOR_BLUE); - glVertex2i(boxW/8, boxH/16); - glEnd(); - - glBegin(GL_TRIANGLES); - glVertex2i(0, 0); - glVertex2i(-100, 100); - glEnd(); -} - -static void TriangleStrip(void) -{ - - glBegin(GL_TRIANGLE_STRIP); - SetColor(COLOR_GREEN); - glVertex2i(-boxW/4, -boxH/4); - SetColor(COLOR_RED); - glVertex2i(-boxW/4, boxH/4); - SetColor(COLOR_BLUE); - glVertex2i(0, -boxH/4); - SetColor(COLOR_WHITE); - glVertex2i(0, boxH/4); - SetColor(COLOR_CYAN); - glVertex2i(boxW/4, -boxH/4); - SetColor(COLOR_YELLOW); - glVertex2i(boxW/4, boxH/4); - glEnd(); - - glBegin(GL_TRIANGLE_STRIP); - glVertex2i(0, 0); - glVertex2i(-100, 100); - glEnd(); -} - -static void TriangleFan(void) -{ - GLint vx[8][2]; - GLint x0, y0, x1, y1, x2, y2, x3, y3; - GLint i; - - y0 = -boxH/4; - y1 = y0 + boxH/2/3; - y2 = y1 + boxH/2/3; - y3 = boxH/4; - x0 = -boxW/4; - x1 = x0 + boxW/2/3; - x2 = x1 + boxW/2/3; - x3 = boxW/4; - - vx[0][0] = x0; vx[0][1] = y1; - vx[1][0] = x0; vx[1][1] = y2; - vx[2][0] = x1; vx[2][1] = y3; - vx[3][0] = x2; vx[3][1] = y3; - vx[4][0] = x3; vx[4][1] = y2; - vx[5][0] = x3; vx[5][1] = y1; - vx[6][0] = x2; vx[6][1] = y0; - vx[7][0] = x1; vx[7][1] = y0; - - glBegin(GL_TRIANGLE_FAN); - SetColor(COLOR_WHITE); - glVertex2i(0, 0); - for (i = 0; i < 8; i++) { - SetColor(COLOR_WHITE-i); - glVertex2iv(vx[i]); - } - glEnd(); - - glBegin(GL_TRIANGLE_FAN); - glVertex2i(0, 0); - glVertex2i(-100, 100); - glEnd(); -} - -static void Rect(void) -{ - - SetColor(COLOR_GREEN); - glRecti(-boxW/4, -boxH/4, boxW/4, boxH/4); -} - -static void PolygonFunc(void) -{ - GLint vx[8][2]; - GLint x0, y0, x1, y1, x2, y2, x3, y3; - GLint i; - - y0 = -boxH/4; - y1 = y0 + boxH/2/3; - y2 = y1 + boxH/2/3; - y3 = boxH/4; - x0 = -boxW/4; - x1 = x0 + boxW/2/3; - x2 = x1 + boxW/2/3; - x3 = boxW/4; - - vx[0][0] = x0; vx[0][1] = y1; - vx[1][0] = x0; vx[1][1] = y2; - vx[2][0] = x1; vx[2][1] = y3; - vx[3][0] = x2; vx[3][1] = y3; - vx[4][0] = x3; vx[4][1] = y2; - vx[5][0] = x3; vx[5][1] = y1; - vx[6][0] = x2; vx[6][1] = y0; - vx[7][0] = x1; vx[7][1] = y0; - - glBegin(GL_POLYGON); - for (i = 0; i < 8; i++) { - SetColor(COLOR_WHITE-i); - glVertex2iv(vx[i]); - } - glEnd(); - - glBegin(GL_POLYGON); - glVertex2i(0, 0); - glVertex2i(100, 100); - glEnd(); -} - -static void Quads(void) -{ - - glBegin(GL_QUADS); - SetColor(COLOR_GREEN); - glVertex2i(-boxW/4, -boxH/4); - SetColor(COLOR_RED); - glVertex2i(-boxW/8, -boxH/16); - SetColor(COLOR_BLUE); - glVertex2i(boxW/8, -boxH/16); - SetColor(COLOR_WHITE); - glVertex2i(boxW/4, -boxH/4); - - SetColor(COLOR_GREEN); - glVertex2i(-boxW/4, boxH/4); - SetColor(COLOR_RED); - glVertex2i(-boxW/8, boxH/16); - SetColor(COLOR_BLUE); - glVertex2i(boxW/8, boxH/16); - SetColor(COLOR_WHITE); - glVertex2i(boxW/4, boxH/4); - glEnd(); - - glBegin(GL_QUADS); - glVertex2i(0, 0); - glVertex2i(100, 100); - glVertex2i(-100, 100); - glEnd(); -} - -static void QuadStrip(void) -{ - - glBegin(GL_QUAD_STRIP); - SetColor(COLOR_GREEN); - glVertex2i(-boxW/4, -boxH/4); - SetColor(COLOR_RED); - glVertex2i(-boxW/4, boxH/4); - SetColor(COLOR_BLUE); - glVertex2i(0, -boxH/4); - SetColor(COLOR_WHITE); - glVertex2i(0, boxH/4); - SetColor(COLOR_CYAN); - glVertex2i(boxW/4, -boxH/4); - SetColor(COLOR_YELLOW); - glVertex2i(boxW/4, boxH/4); - glEnd(); - - glBegin(GL_QUAD_STRIP); - glVertex2i(0, 0); - glVertex2i(100, 100); - glVertex2i(-100, 100); - glEnd(); -} - -static void Draw(EGLDisplay dpy, EGLSurface surf) -{ - - glViewport(0, 0, windW, windH); - glDisable(GL_SCISSOR_TEST); - - glPushAttrib(GL_COLOR_BUFFER_BIT); - - glColorMask(1, 1, 1, 1); - glIndexMask(~0); - - glClearColor(0.0, 0.0, 0.0, 0.0); - glClear(GL_COLOR_BUFFER_BIT); - - glPopAttrib(); - - if (mode1) { - glShadeModel(GL_SMOOTH); - } else { - glShadeModel(GL_FLAT); - } - - if (mode2) { - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); - } else { - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - } - - Viewport(0, 0); Point(); - Viewport(0, 1); Lines(); - Viewport(0, 2); LineStrip(); - Viewport(0, 3); LineLoop(); - - Viewport(1, 0); Bitmap(); - - Viewport(1, 1); TriangleFan(); - Viewport(1, 2); Triangles(); - Viewport(1, 3); TriangleStrip(); - - Viewport(2, 0); Rect(); - Viewport(2, 1); PolygonFunc(); - Viewport(2, 2); Quads(); - Viewport(2, 3); QuadStrip(); - - glFlush(); - - if (doubleBuffer) { - eglSwapBuffers(dpy, surf); - } -} - -static void -write_ppm(const char *filename, const GLubyte *buffer, int width, int height) -{ - const int binary = 0; - FILE *f = fopen( filename, "w" ); - if (f) { - int i, x, y; - const GLubyte *ptr = buffer; - if (binary) { - fprintf(f,"P6\n"); - fprintf(f,"# ppm-file created by osdemo.c\n"); - fprintf(f,"%i %i\n", width,height); - fprintf(f,"255\n"); - fclose(f); - f = fopen( filename, "ab" ); /* reopen in binary append mode */ - for (y=height-1; y>=0; y--) { - for (x=0; x<width; x++) { - i = (y*width + x) * 4; - fputc(ptr[i], f); /* write red */ - fputc(ptr[i+1], f); /* write green */ - fputc(ptr[i+2], f); /* write blue */ - } - } - } - else { - /*ASCII*/ - int counter = 0; - fprintf(f,"P3\n"); - fprintf(f,"# ascii ppm file created by osdemo.c\n"); - fprintf(f,"%i %i\n", width, height); - fprintf(f,"255\n"); - for (y=height-1; y>=0; y--) { - for (x=0; x<width; x++) { - i = (y*width + x) * 4; - fprintf(f, " %3d %3d %3d", ptr[i], ptr[i+1], ptr[i+2]); - counter++; - if (counter % 5 == 0) - fprintf(f, "\n"); - } - } - } - fclose(f); - } -} - -int -main(int argc, char *argv[]) -{ - int maj, min; - EGLContext ctx; - EGLSurface screen_surf; - EGLConfig configs[10]; - EGLScreenMESA screen; - EGLModeMESA mode; - EGLint numConfigs, count; - EGLBoolean b; - const GLubyte *bitmap; - const EGLint screenAttribs[] = { - EGL_WIDTH, 1024, - EGL_HEIGHT, 768, - EGL_NONE - }; - - EGLDisplay d = eglGetDisplay(EGL_DEFAULT_DISPLAY); - assert(d); - - if (!eglInitialize(d, &maj, &min)) { - printf("demo: eglInitialize failed\n"); - exit(1); - } - - printf("EGL version = %d.%d\n", maj, min); - printf("EGL_VENDOR = %s\n", eglQueryString(d, EGL_VENDOR)); - if (!strstr(eglQueryString(d, EGL_EXTENSIONS), - "EGL_MESA_screen_surface")) { - printf("EGL_MESA_screen_surface is not supported\n"); - exit(1); - } - - eglGetConfigs(d, configs, 10, &numConfigs); - eglGetScreensMESA(d, &screen, 1, &count); - eglGetModesMESA(d, screen, &mode, 1, &count); - - ctx = eglCreateContext(d, configs[0], EGL_NO_CONTEXT, NULL); - if (ctx == EGL_NO_CONTEXT) { - printf("failed to create context\n"); - return 0; - } - - screen_surf = eglCreateScreenSurfaceMESA(d, configs[0], screenAttribs); - if (screen_surf == EGL_NO_SURFACE) { - printf("failed to create screen surface\n"); - return 0; - } - - eglShowScreenSurfaceMESA(d, screen, screen_surf, mode); - - b = eglMakeCurrent(d, screen_surf, screen_surf, ctx); - if (!b) { - printf("make current failed\n"); - return 0; - } - glViewport(0, 0, 1024, 768); - - - Init(); - Reshape(1024, 768); - - /* some drivers crash when rendering to front buffer */ -#if 0 - glDrawBuffer( GL_FRONT ); - glClearColor( 0, 1.0, 0, 1); - - glClear( GL_COLOR_BUFFER_BIT ); -#endif - - doubleBuffer = 1; - glDrawBuffer( GL_BACK ); - - Draw(d, screen_surf); - sleep(2); - - /* TODO EGL_KHR_lock_surface */ - bitmap = NULL; - if (bitmap) - write_ppm("dump.ppm", bitmap, 1024, 768); - - eglDestroySurface(d, screen_surf); - eglDestroyContext(d, ctx); - eglTerminate(d); - - return 0; -} diff --git a/progs/egl/eglgears.c b/progs/egl/eglgears.c deleted file mode 100644 index 2d9b8cac7f..0000000000 --- a/progs/egl/eglgears.c +++ /dev/null @@ -1,481 +0,0 @@ -/* - * Copyright (C) 1999-2001 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/* - * This is a port of the infamous "glxgears" demo to straight EGL - * Port by Dane Rushton 10 July 2005 - * - * No command line options. - * Program runs for 5 seconds then exits, outputing framerate to console - */ - -#define EGL_EGLEXT_PROTOTYPES - -#include <assert.h> -#include <math.h> -#include <stdlib.h> -#include <stdio.h> -#include <string.h> -#include <GL/gl.h> -#include <EGL/egl.h> -#include <EGL/eglext.h> - -#define MAX_CONFIGS 10 -#define MAX_MODES 100 - -#define BENCHMARK - -#ifdef BENCHMARK - -/* XXX this probably isn't very portable */ - -#include <sys/time.h> -#include <unistd.h> - -/* return current time (in seconds) */ -static double -current_time(void) -{ - struct timeval tv; -#ifdef __VMS - (void) gettimeofday(&tv, NULL ); -#else - struct timezone tz; - (void) gettimeofday(&tv, &tz); -#endif - return (double) tv.tv_sec + tv.tv_usec / 1000000.0; -} - -#else /*BENCHMARK*/ - -/* dummy */ -static double -current_time(void) -{ - /* update this function for other platforms! */ - static double t = 0.0; - static int warn = 1; - if (warn) { - fprintf(stderr, "Warning: current_time() not implemented!!\n"); - warn = 0; - } - return t += 1.0; -} - -#endif /*BENCHMARK*/ - - -#ifndef M_PI -#define M_PI 3.14159265 -#endif - - -static GLfloat view_rotx = 20.0, view_roty = 30.0, view_rotz = 0.0; -static GLint gear1, gear2, gear3; -static GLfloat angle = 0.0; - -#if 0 -static GLfloat eyesep = 5.0; /* Eye separation. */ -static GLfloat fix_point = 40.0; /* Fixation point distance. */ -static GLfloat left, right, asp; /* Stereo frustum params. */ -#endif - - -/* - * - * Draw a gear wheel. You'll probably want to call this function when - * building a display list since we do a lot of trig here. - * - * Input: inner_radius - radius of hole at center - * outer_radius - radius at center of teeth - * width - width of gear - * teeth - number of teeth - * tooth_depth - depth of tooth - */ -static void -gear(GLfloat inner_radius, GLfloat outer_radius, GLfloat width, - GLint teeth, GLfloat tooth_depth) -{ - GLint i; - GLfloat r0, r1, r2; - GLfloat angle, da; - GLfloat u, v, len; - - r0 = inner_radius; - r1 = outer_radius - tooth_depth / 2.0; - r2 = outer_radius + tooth_depth / 2.0; - - da = 2.0 * M_PI / teeth / 4.0; - - glShadeModel(GL_FLAT); - - glNormal3f(0.0, 0.0, 1.0); - - /* draw front face */ - glBegin(GL_QUAD_STRIP); - for (i = 0; i <= teeth; i++) { - angle = i * 2.0 * M_PI / teeth; - glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); - glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); - if (i < teeth) { - glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), - width * 0.5); - } - } - glEnd(); - - /* draw front sides of teeth */ - glBegin(GL_QUADS); - da = 2.0 * M_PI / teeth / 4.0; - for (i = 0; i < teeth; i++) { - angle = i * 2.0 * M_PI / teeth; - - glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); - glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), width * 0.5); - glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), - width * 0.5); - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), - width * 0.5); - } - glEnd(); - - glNormal3f(0.0, 0.0, -1.0); - - /* draw back face */ - glBegin(GL_QUAD_STRIP); - for (i = 0; i <= teeth; i++) { - angle = i * 2.0 * M_PI / teeth; - glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5); - glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5); - if (i < teeth) { - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), - -width * 0.5); - glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5); - } - } - glEnd(); - - /* draw back sides of teeth */ - glBegin(GL_QUADS); - da = 2.0 * M_PI / teeth / 4.0; - for (i = 0; i < teeth; i++) { - angle = i * 2.0 * M_PI / teeth; - - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), - -width * 0.5); - glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), - -width * 0.5); - glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), -width * 0.5); - glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5); - } - glEnd(); - - /* draw outward faces of teeth */ - glBegin(GL_QUAD_STRIP); - for (i = 0; i < teeth; i++) { - angle = i * 2.0 * M_PI / teeth; - - glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); - glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5); - u = r2 * cos(angle + da) - r1 * cos(angle); - v = r2 * sin(angle + da) - r1 * sin(angle); - len = sqrt(u * u + v * v); - u /= len; - v /= len; - glNormal3f(v, -u, 0.0); - glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), width * 0.5); - glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), -width * 0.5); - glNormal3f(cos(angle), sin(angle), 0.0); - glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), - width * 0.5); - glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), - -width * 0.5); - u = r1 * cos(angle + 3 * da) - r2 * cos(angle + 2 * da); - v = r1 * sin(angle + 3 * da) - r2 * sin(angle + 2 * da); - glNormal3f(v, -u, 0.0); - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), - width * 0.5); - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), - -width * 0.5); - glNormal3f(cos(angle), sin(angle), 0.0); - } - - glVertex3f(r1 * cos(0), r1 * sin(0), width * 0.5); - glVertex3f(r1 * cos(0), r1 * sin(0), -width * 0.5); - - glEnd(); - - glShadeModel(GL_SMOOTH); - - /* draw inside radius cylinder */ - glBegin(GL_QUAD_STRIP); - for (i = 0; i <= teeth; i++) { - angle = i * 2.0 * M_PI / teeth; - glNormal3f(-cos(angle), -sin(angle), 0.0); - glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5); - glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); - } - glEnd(); -} - - -static void -draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glPushMatrix(); - glRotatef(view_rotx, 1.0, 0.0, 0.0); - glRotatef(view_roty, 0.0, 1.0, 0.0); - glRotatef(view_rotz, 0.0, 0.0, 1.0); - - glPushMatrix(); - glTranslatef(-3.0, -2.0, 0.0); - glRotatef(angle, 0.0, 0.0, 1.0); - glCallList(gear1); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(3.1, -2.0, 0.0); - glRotatef(-2.0 * angle - 9.0, 0.0, 0.0, 1.0); - glCallList(gear2); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(-3.1, 4.2, 0.0); - glRotatef(-2.0 * angle - 25.0, 0.0, 0.0, 1.0); - glCallList(gear3); - glPopMatrix(); - - glPopMatrix(); -} - - -/* new window size or exposure */ -static void -reshape(int width, int height) -{ - GLfloat h = (GLfloat) height / (GLfloat) width; - - glViewport(0, 0, (GLint) width, (GLint) height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-1.0, 1.0, -h, h, 5.0, 60.0); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0, 0.0, -40.0); -} - - - -static void -init(void) -{ - static GLfloat pos[4] = { 5.0, 5.0, 10.0, 0.0 }; - static GLfloat red[4] = { 0.8, 0.1, 0.0, 1.0 }; - static GLfloat green[4] = { 0.0, 0.8, 0.2, 1.0 }; - static GLfloat blue[4] = { 0.2, 0.2, 1.0, 1.0 }; - - glLightfv(GL_LIGHT0, GL_POSITION, pos); - glEnable(GL_CULL_FACE); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_DEPTH_TEST); - - /* make the gears */ - gear1 = glGenLists(1); - glNewList(gear1, GL_COMPILE); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, red); - gear(1.0, 4.0, 1.0, 20, 0.7); - glEndList(); - - gear2 = glGenLists(1); - glNewList(gear2, GL_COMPILE); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, green); - gear(0.5, 2.0, 2.0, 10, 0.7); - glEndList(); - - gear3 = glGenLists(1); - glNewList(gear3, GL_COMPILE); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, blue); - gear(1.3, 2.0, 0.5, 10, 0.7); - glEndList(); - - glEnable(GL_NORMALIZE); -} - - - - -static void run_gears(EGLDisplay dpy, EGLSurface surf, int ttr) -{ - double st = current_time(); - double ct = st; - int frames = 0; - GLfloat seconds, fps; - - while (ct - st < ttr) - { - double tt = current_time(); - double dt = tt - ct; - ct = tt; - - /* advance rotation for next frame */ - angle += 70.0 * dt; /* 70 degrees per second */ - if (angle > 3600.0) - angle -= 3600.0; - - draw(); - - eglSwapBuffers(dpy, surf); - - - frames++; - } - - seconds = ct - st; - fps = frames / seconds; - printf("%d frames in %3.1f seconds = %6.3f FPS\n", frames, seconds, fps); - -} - - -int -main(int argc, char *argv[]) -{ - int maj, min; - EGLContext ctx; - EGLSurface screen_surf; - EGLConfig configs[MAX_CONFIGS]; - EGLint numConfigs, i; - EGLBoolean b; - EGLDisplay d; - EGLint screenAttribs[10]; - EGLModeMESA mode[MAX_MODES]; - EGLScreenMESA screen; - EGLint count; - EGLint chosenMode = 0; - GLboolean printInfo = GL_FALSE; - EGLint width = 0, height = 0; - - /* parse cmd line args */ - for (i = 1; i < argc; i++) - { - if (strcmp(argv[i], "-info") == 0) - { - printInfo = GL_TRUE; - } - else - printf("Warning: unknown parameter: %s\n", argv[i]); - } - - /* DBR : Create EGL context/surface etc */ - d = eglGetDisplay(EGL_DEFAULT_DISPLAY); - assert(d); - - if (!eglInitialize(d, &maj, &min)) { - printf("eglgears: eglInitialize failed\n"); - exit(1); - } - - printf("eglgears: EGL version = %d.%d\n", maj, min); - printf("eglgears: EGL_VENDOR = %s\n", eglQueryString(d, EGL_VENDOR)); - - /* XXX use ChooseConfig */ - eglGetConfigs(d, configs, MAX_CONFIGS, &numConfigs); - eglGetScreensMESA(d, &screen, 1, &count); - - if (!eglGetModesMESA(d, screen, mode, MAX_MODES, &count) || count == 0) { - printf("eglgears: eglGetModesMESA failed!\n"); - return 0; - } - - /* Print list of modes, and find the one to use */ - printf("eglgears: Found %d modes:\n", count); - for (i = 0; i < count; i++) { - EGLint w, h; - eglGetModeAttribMESA(d, mode[i], EGL_WIDTH, &w); - eglGetModeAttribMESA(d, mode[i], EGL_HEIGHT, &h); - printf("%3d: %d x %d\n", i, w, h); - if (w > width && h > height) { - width = w; - height = h; - chosenMode = i; - } - } - printf("eglgears: Using screen mode/size %d: %d x %d\n", chosenMode, width, height); - - ctx = eglCreateContext(d, configs[0], EGL_NO_CONTEXT, NULL); - if (ctx == EGL_NO_CONTEXT) { - printf("eglgears: failed to create context\n"); - return 0; - } - - /* build up screenAttribs array */ - i = 0; - screenAttribs[i++] = EGL_WIDTH; - screenAttribs[i++] = width; - screenAttribs[i++] = EGL_HEIGHT; - screenAttribs[i++] = height; - screenAttribs[i++] = EGL_NONE; - - screen_surf = eglCreateScreenSurfaceMESA(d, configs[0], screenAttribs); - if (screen_surf == EGL_NO_SURFACE) { - printf("eglgears: failed to create screen surface\n"); - return 0; - } - - b = eglShowScreenSurfaceMESA(d, screen, screen_surf, mode[chosenMode]); - if (!b) { - printf("eglgears: show surface failed\n"); - return 0; - } - - b = eglMakeCurrent(d, screen_surf, screen_surf, ctx); - if (!b) { - printf("eglgears: make current failed\n"); - return 0; - } - - if (printInfo) - { - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - printf("GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - printf("GL_EXTENSIONS = %s\n", (char *) glGetString(GL_EXTENSIONS)); - } - - init(); - reshape(width, height); - - glDrawBuffer( GL_BACK ); - - run_gears(d, screen_surf, 5.0); - - eglDestroySurface(d, screen_surf); - eglDestroyContext(d, ctx); - eglTerminate(d); - - return 0; -} diff --git a/progs/egl/eglinfo.c b/progs/egl/eglinfo.c deleted file mode 100644 index 4486916e95..0000000000 --- a/progs/egl/eglinfo.c +++ /dev/null @@ -1,173 +0,0 @@ -/* - * eglinfo - like glxinfo but for EGL - * - * Brian Paul - * 11 March 2005 - * - * Copyright (C) 2005 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#define EGL_EGLEXT_PROTOTYPES - -#include <EGL/egl.h> -#include <EGL/eglext.h> -#include <assert.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#define MAX_CONFIGS 1000 -#define MAX_MODES 1000 -#define MAX_SCREENS 10 - -/** - * Print table of all available configurations. - */ -static void -PrintConfigs(EGLDisplay d) -{ - EGLConfig configs[MAX_CONFIGS]; - EGLint numConfigs, i; - - eglGetConfigs(d, configs, MAX_CONFIGS, &numConfigs); - - printf("Configurations:\n"); - printf(" bf lv d st colorbuffer dp st ms vis supported\n"); - printf(" id sz l b ro r g b a th cl ns b id surfaces \n"); - printf("--------------------------------------------------------\n"); - for (i = 0; i < numConfigs; i++) { - EGLint id, size, level; - EGLint red, green, blue, alpha; - EGLint depth, stencil; - EGLint surfaces; - EGLint doubleBuf = 1, stereo = 0; - EGLint vid; - EGLint samples, sampleBuffers; - char surfString[100] = ""; - - eglGetConfigAttrib(d, configs[i], EGL_CONFIG_ID, &id); - eglGetConfigAttrib(d, configs[i], EGL_BUFFER_SIZE, &size); - eglGetConfigAttrib(d, configs[i], EGL_LEVEL, &level); - - eglGetConfigAttrib(d, configs[i], EGL_RED_SIZE, &red); - eglGetConfigAttrib(d, configs[i], EGL_GREEN_SIZE, &green); - eglGetConfigAttrib(d, configs[i], EGL_BLUE_SIZE, &blue); - eglGetConfigAttrib(d, configs[i], EGL_ALPHA_SIZE, &alpha); - eglGetConfigAttrib(d, configs[i], EGL_DEPTH_SIZE, &depth); - eglGetConfigAttrib(d, configs[i], EGL_STENCIL_SIZE, &stencil); - eglGetConfigAttrib(d, configs[i], EGL_NATIVE_VISUAL_ID, &vid); - eglGetConfigAttrib(d, configs[i], EGL_SURFACE_TYPE, &surfaces); - - eglGetConfigAttrib(d, configs[i], EGL_SAMPLES, &samples); - eglGetConfigAttrib(d, configs[i], EGL_SAMPLE_BUFFERS, &sampleBuffers); - - if (surfaces & EGL_WINDOW_BIT) - strcat(surfString, "win,"); - if (surfaces & EGL_PBUFFER_BIT) - strcat(surfString, "pb,"); - if (surfaces & EGL_PIXMAP_BIT) - strcat(surfString, "pix,"); -#ifdef EGL_MESA_screen_surface - if (surfaces & EGL_SCREEN_BIT_MESA) - strcat(surfString, "scrn,"); -#endif - if (strlen(surfString) > 0) - surfString[strlen(surfString) - 1] = 0; - - printf("0x%02x %2d %2d %c %c %2d %2d %2d %2d %2d %2d %2d%2d 0x%02x %-12s\n", - id, size, level, - doubleBuf ? 'y' : '.', - stereo ? 'y' : '.', - red, green, blue, alpha, - depth, stencil, - samples, sampleBuffers, vid, surfString); - } -} - - -/** - * Print table of all available configurations. - */ -static void -PrintModes(EGLDisplay d) -{ -#ifdef EGL_MESA_screen_surface - const char *extensions = eglQueryString(d, EGL_EXTENSIONS); - if (strstr(extensions, "EGL_MESA_screen_surface")) { - EGLScreenMESA screens[MAX_SCREENS]; - EGLint numScreens = 1, scrn; - EGLModeMESA modes[MAX_MODES]; - - eglGetScreensMESA(d, screens, MAX_SCREENS, &numScreens); - printf("Number of Screens: %d\n\n", numScreens); - - for (scrn = 0; scrn < numScreens; scrn++) { - EGLint numModes, i; - - eglGetModesMESA(d, screens[scrn], modes, MAX_MODES, &numModes); - - printf("Screen %d Modes:\n", scrn); - printf(" id width height refresh name\n"); - printf("-----------------------------------------\n"); - for (i = 0; i < numModes; i++) { - EGLint id, w, h, r; - const char *str; - eglGetModeAttribMESA(d, modes[i], EGL_MODE_ID_MESA, &id); - eglGetModeAttribMESA(d, modes[i], EGL_WIDTH, &w); - eglGetModeAttribMESA(d, modes[i], EGL_HEIGHT, &h); - eglGetModeAttribMESA(d, modes[i], EGL_REFRESH_RATE_MESA, &r); - str = eglQueryModeStringMESA(d, modes[i]); - printf("0x%02x %5d %5d %.3f %s\n", id, w, h, r / 1000.0, str); - } - } - } -#endif -} - - - -int -main(int argc, char *argv[]) -{ - int maj, min; - EGLDisplay d = eglGetDisplay(EGL_DEFAULT_DISPLAY); - - if (!eglInitialize(d, &maj, &min)) { - printf("eglinfo: eglInitialize failed\n"); - exit(1); - } - - printf("EGL API version: %d.%d\n", maj, min); - printf("EGL vendor string: %s\n", eglQueryString(d, EGL_VENDOR)); - printf("EGL version string: %s\n", eglQueryString(d, EGL_VERSION)); -#ifdef EGL_VERSION_1_2 - printf("EGL client APIs: %s\n", eglQueryString(d, EGL_CLIENT_APIS)); -#endif - printf("EGL extensions string:\n"); - printf(" %s\n", eglQueryString(d, EGL_EXTENSIONS)); - - PrintConfigs(d); - - PrintModes(d); - - eglTerminate(d); - - return 0; -} diff --git a/progs/egl/eglscreen.c b/progs/egl/eglscreen.c deleted file mode 100644 index 520f76ea03..0000000000 --- a/progs/egl/eglscreen.c +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright (C) 1999-2001 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/* - * Stolen from eglgears - * - * Creates a surface and show that on the first screen - */ - -#define EGL_EGLEXT_PROTOTYPES - -#include <assert.h> -#include <math.h> -#include <stdlib.h> -#include <stdio.h> -#include <string.h> -#include <unistd.h> -#include <GL/gl.h> -#include <EGL/egl.h> -#include <EGL/eglext.h> - -#define MAX_CONFIGS 10 -#define MAX_MODES 100 - -int -main(int argc, char *argv[]) -{ - int maj, min; - EGLSurface screen_surf; - EGLConfig configs[MAX_CONFIGS]; - EGLint numConfigs, i; - EGLBoolean b; - EGLDisplay d; - EGLint screenAttribs[10]; - EGLModeMESA mode[MAX_MODES]; - EGLScreenMESA screen; - EGLint count; - EGLint chosenMode = 0; - EGLint width = 0, height = 0; - - d = eglGetDisplay(EGL_DEFAULT_DISPLAY); - assert(d); - - if (!eglInitialize(d, &maj, &min)) { - printf("eglscreen: eglInitialize failed\n"); - exit(1); - } - - printf("eglscreen: EGL version = %d.%d\n", maj, min); - printf("eglscreen: EGL_VENDOR = %s\n", eglQueryString(d, EGL_VENDOR)); - - /* XXX use ChooseConfig */ - eglGetConfigs(d, configs, MAX_CONFIGS, &numConfigs); - eglGetScreensMESA(d, &screen, 1, &count); - - if (!eglGetModesMESA(d, screen, mode, MAX_MODES, &count) || count == 0) { - printf("eglscreen: eglGetModesMESA failed!\n"); - return 0; - } - - /* Print list of modes, and find the one to use */ - printf("eglscreen: Found %d modes:\n", count); - for (i = 0; i < count; i++) { - EGLint w, h; - eglGetModeAttribMESA(d, mode[i], EGL_WIDTH, &w); - eglGetModeAttribMESA(d, mode[i], EGL_HEIGHT, &h); - printf("%3d: %d x %d\n", i, w, h); - if (w > width && h > height) { - width = w; - height = h; - chosenMode = i; - } - } - printf("eglscreen: Using screen mode/size %d: %d x %d\n", chosenMode, width, height); - - /* build up screenAttribs array */ - i = 0; - screenAttribs[i++] = EGL_WIDTH; - screenAttribs[i++] = width; - screenAttribs[i++] = EGL_HEIGHT; - screenAttribs[i++] = height; - screenAttribs[i++] = EGL_NONE; - - screen_surf = eglCreateScreenSurfaceMESA(d, configs[0], screenAttribs); - if (screen_surf == EGL_NO_SURFACE) { - printf("eglscreen: Failed to create screen surface\n"); - return 0; - } - - b = eglShowScreenSurfaceMESA(d, screen, screen_surf, mode[chosenMode]); - if (!b) { - printf("eglscreen: Show surface failed\n"); - return 0; - } - - usleep(5000000); - - eglDestroySurface(d, screen_surf); - eglTerminate(d); - - return 0; -} diff --git a/progs/egl/egltri.c b/progs/egl/egltri.c deleted file mode 100644 index 9bbc3cddaf..0000000000 --- a/progs/egl/egltri.c +++ /dev/null @@ -1,263 +0,0 @@ -/* - * Copyright (C) 1999-2001 Brian Paul All Rights Reserved. - * Copyright (C) 2008 Brian Paul All Rights Reserved. - * Copyright (C) 2008 Jakob Bornecrantz All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/* - * This program is based on eglgears and xegl_tri. - * Remixed by Jakob Bornecrantz - * - * No command line options. - * Program runs for 5 seconds then exits, outputing framerate to console - */ - -#define EGL_EGLEXT_PROTOTYPES - -#include <assert.h> -#include <math.h> -#include <stdlib.h> -#include <stdio.h> -#include <string.h> -#include <GL/gl.h> -#include <EGL/egl.h> -#include <EGL/eglext.h> - -#define MAX_CONFIGS 10 -#define MAX_MODES 100 - - -/* XXX this probably isn't very portable */ - -#include <sys/time.h> -#include <unistd.h> - -/* return current time (in seconds) */ -static double -current_time(void) -{ - struct timeval tv; -#ifdef __VMS - (void) gettimeofday(&tv, NULL ); -#else - struct timezone tz; - (void) gettimeofday(&tv, &tz); -#endif - return (double) tv.tv_sec + tv.tv_usec / 1000000.0; -} - - -static GLfloat view_rotx = 0.0, view_roty = 0.0, view_rotz = 0.0; - -static void draw() -{ - static const GLfloat verts[3][2] = { - { -1, -1 }, - { 1, -1 }, - { 0, 1 } - }; - static const GLfloat colors[3][3] = { - { 1, 0, 0 }, - { 0, 1, 0 }, - { 0, 0, 1 } - }; - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glPushMatrix(); - glRotatef(view_rotx, 1, 0, 0); - glRotatef(view_roty, 0, 1, 0); - glRotatef(view_rotz, 0, 0, 1); - - { - glVertexPointer(2, GL_FLOAT, 0, verts); - glColorPointer(3, GL_FLOAT, 0, colors); - glEnableClientState(GL_VERTEX_ARRAY); - glEnableClientState(GL_COLOR_ARRAY); - - glDrawArrays(GL_TRIANGLES, 0, 3); - - glDisableClientState(GL_VERTEX_ARRAY); - glDisableClientState(GL_COLOR_ARRAY); - } - - glPopMatrix(); -} - -static void init() -{ - glClearColor(0.4, 0.4, 0.4, 0.0); -} - -/* new window size or exposure */ -static void reshape(int width, int height) -{ - GLfloat ar = (GLfloat) width / (GLfloat) height; - - glViewport(0, 0, (GLint) width, (GLint) height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-ar, ar, -1, 1, 5.0, 60.0); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0, 0.0, -10.0); -} - -static void run(EGLDisplay dpy, EGLSurface surf, int ttr) -{ - double st = current_time(); - double ct = st; - int frames = 0; - GLfloat seconds, fps; - - while (ct - st < ttr) - { - ct = current_time(); - - draw(); - - eglSwapBuffers(dpy, surf); - - frames++; - } - - seconds = ct - st; - fps = frames / seconds; - printf("%d frames in %3.1f seconds = %6.3f FPS\n", frames, seconds, fps); -} - -int main(int argc, char *argv[]) -{ - int maj, min; - EGLContext ctx; - EGLSurface screen_surf; - EGLConfig configs[MAX_CONFIGS]; - EGLint numConfigs, i; - EGLBoolean b; - EGLDisplay d; - EGLint screenAttribs[10]; - EGLModeMESA mode[MAX_MODES]; - EGLScreenMESA screen; - EGLint count, chosenMode = 0; - GLboolean printInfo = GL_FALSE; - EGLint width = 0, height = 0; - - /* parse cmd line args */ - for (i = 1; i < argc; i++) - { - if (strcmp(argv[i], "-info") == 0) - { - printInfo = GL_TRUE; - } - else - printf("Warning: unknown parameter: %s\n", argv[i]); - } - - /* DBR : Create EGL context/surface etc */ - d = eglGetDisplay(EGL_DEFAULT_DISPLAY); - assert(d); - - if (!eglInitialize(d, &maj, &min)) { - printf("egltri: eglInitialize failed\n"); - exit(1); - } - - printf("egltri: EGL version = %d.%d\n", maj, min); - printf("egltri: EGL_VENDOR = %s\n", eglQueryString(d, EGL_VENDOR)); - - /* XXX use ChooseConfig */ - eglGetConfigs(d, configs, MAX_CONFIGS, &numConfigs); - eglGetScreensMESA(d, &screen, 1, &count); - - if (!eglGetModesMESA(d, screen, mode, MAX_MODES, &count) || count == 0) { - printf("egltri: eglGetModesMESA failed!\n"); - return 0; - } - - /* Print list of modes, and find the one to use */ - printf("egltri: Found %d modes:\n", count); - for (i = 0; i < count; i++) { - EGLint w, h; - eglGetModeAttribMESA(d, mode[i], EGL_WIDTH, &w); - eglGetModeAttribMESA(d, mode[i], EGL_HEIGHT, &h); - printf("%3d: %d x %d\n", i, w, h); - if (w > width && h > height) { - width = w; - height = h; - chosenMode = i; - } - } - printf("egltri: Using screen mode/size %d: %d x %d\n", chosenMode, width, height); - - ctx = eglCreateContext(d, configs[0], EGL_NO_CONTEXT, NULL); - if (ctx == EGL_NO_CONTEXT) { - printf("egltri: failed to create context\n"); - return 0; - } - - /* build up screenAttribs array */ - i = 0; - screenAttribs[i++] = EGL_WIDTH; - screenAttribs[i++] = width; - screenAttribs[i++] = EGL_HEIGHT; - screenAttribs[i++] = height; - screenAttribs[i++] = EGL_NONE; - - screen_surf = eglCreateScreenSurfaceMESA(d, configs[0], screenAttribs); - if (screen_surf == EGL_NO_SURFACE) { - printf("egltri: failed to create screen surface\n"); - return 0; - } - - b = eglShowScreenSurfaceMESA(d, screen, screen_surf, mode[chosenMode]); - if (!b) { - printf("egltri: show surface failed\n"); - return 0; - } - - b = eglMakeCurrent(d, screen_surf, screen_surf, ctx); - if (!b) { - printf("egltri: make current failed\n"); - return 0; - } - - if (printInfo) - { - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - printf("GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - printf("GL_EXTENSIONS = %s\n", (char *) glGetString(GL_EXTENSIONS)); - } - - init(); - reshape(width, height); - - glDrawBuffer( GL_BACK ); - - run(d, screen_surf, 5.0); - - eglDestroySurface(d, screen_surf); - eglDestroyContext(d, ctx); - eglTerminate(d); - - return 0; -} diff --git a/progs/egl/peglgears.c b/progs/egl/peglgears.c deleted file mode 100644 index 212d1acf69..0000000000 --- a/progs/egl/peglgears.c +++ /dev/null @@ -1,451 +0,0 @@ -/* - * Copyright (C) 1999-2001 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/* - * This is a port of the infamous "glxgears" demo to straight EGL - * Port by Dane Rushton 10 July 2005 - * - * No command line options. - * Program runs for 5 seconds then exits, outputing framerate to console - */ - -#define EGL_EGLEXT_PROTOTYPES - -#include <assert.h> -#include <math.h> -#include <stdlib.h> -#include <stdio.h> -#include <string.h> -#include <GL/gl.h> -#include <EGL/egl.h> -#include <EGL/eglext.h> - -#define MAX_CONFIGS 10 -#define MAX_MODES 100 - -#define BENCHMARK - -#ifdef BENCHMARK - -/* XXX this probably isn't very portable */ - -#include <sys/time.h> -#include <unistd.h> - -/* return current time (in seconds) */ -static double -current_time(void) -{ - struct timeval tv; -#ifdef __VMS - (void) gettimeofday(&tv, NULL ); -#else - struct timezone tz; - (void) gettimeofday(&tv, &tz); -#endif - return (double) tv.tv_sec + tv.tv_usec / 1000000.0; -} - -#else /*BENCHMARK*/ - -/* dummy */ -static double -current_time(void) -{ - /* update this function for other platforms! */ - static double t = 0.0; - static int warn = 1; - if (warn) { - fprintf(stderr, "Warning: current_time() not implemented!!\n"); - warn = 0; - } - return t += 1.0; -} - -#endif /*BENCHMARK*/ - - -#ifndef M_PI -#define M_PI 3.14159265 -#endif - - -static GLfloat view_rotx = 20.0, view_roty = 30.0, view_rotz = 0.0; -static GLint gear1, gear2, gear3; -static GLfloat angle = 0.0; - -#if 0 -static GLfloat eyesep = 5.0; /* Eye separation. */ -static GLfloat fix_point = 40.0; /* Fixation point distance. */ -static GLfloat left, right, asp; /* Stereo frustum params. */ -#endif - - -/* - * - * Draw a gear wheel. You'll probably want to call this function when - * building a display list since we do a lot of trig here. - * - * Input: inner_radius - radius of hole at center - * outer_radius - radius at center of teeth - * width - width of gear - * teeth - number of teeth - * tooth_depth - depth of tooth - */ -static void -gear(GLfloat inner_radius, GLfloat outer_radius, GLfloat width, - GLint teeth, GLfloat tooth_depth) -{ - GLint i; - GLfloat r0, r1, r2; - GLfloat angle, da; - GLfloat u, v, len; - - r0 = inner_radius; - r1 = outer_radius - tooth_depth / 2.0; - r2 = outer_radius + tooth_depth / 2.0; - - da = 2.0 * M_PI / teeth / 4.0; - - glShadeModel(GL_FLAT); - - glNormal3f(0.0, 0.0, 1.0); - - /* draw front face */ - glBegin(GL_QUAD_STRIP); - for (i = 0; i <= teeth; i++) { - angle = i * 2.0 * M_PI / teeth; - glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); - glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); - if (i < teeth) { - glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), - width * 0.5); - } - } - glEnd(); - - /* draw front sides of teeth */ - glBegin(GL_QUADS); - da = 2.0 * M_PI / teeth / 4.0; - for (i = 0; i < teeth; i++) { - angle = i * 2.0 * M_PI / teeth; - - glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); - glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), width * 0.5); - glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), - width * 0.5); - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), - width * 0.5); - } - glEnd(); - - glNormal3f(0.0, 0.0, -1.0); - - /* draw back face */ - glBegin(GL_QUAD_STRIP); - for (i = 0; i <= teeth; i++) { - angle = i * 2.0 * M_PI / teeth; - glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5); - glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5); - if (i < teeth) { - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), - -width * 0.5); - glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5); - } - } - glEnd(); - - /* draw back sides of teeth */ - glBegin(GL_QUADS); - da = 2.0 * M_PI / teeth / 4.0; - for (i = 0; i < teeth; i++) { - angle = i * 2.0 * M_PI / teeth; - - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), - -width * 0.5); - glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), - -width * 0.5); - glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), -width * 0.5); - glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5); - } - glEnd(); - - /* draw outward faces of teeth */ - glBegin(GL_QUAD_STRIP); - for (i = 0; i < teeth; i++) { - angle = i * 2.0 * M_PI / teeth; - - glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); - glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5); - u = r2 * cos(angle + da) - r1 * cos(angle); - v = r2 * sin(angle + da) - r1 * sin(angle); - len = sqrt(u * u + v * v); - u /= len; - v /= len; - glNormal3f(v, -u, 0.0); - glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), width * 0.5); - glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), -width * 0.5); - glNormal3f(cos(angle), sin(angle), 0.0); - glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), - width * 0.5); - glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), - -width * 0.5); - u = r1 * cos(angle + 3 * da) - r2 * cos(angle + 2 * da); - v = r1 * sin(angle + 3 * da) - r2 * sin(angle + 2 * da); - glNormal3f(v, -u, 0.0); - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), - width * 0.5); - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), - -width * 0.5); - glNormal3f(cos(angle), sin(angle), 0.0); - } - - glVertex3f(r1 * cos(0), r1 * sin(0), width * 0.5); - glVertex3f(r1 * cos(0), r1 * sin(0), -width * 0.5); - - glEnd(); - - glShadeModel(GL_SMOOTH); - - /* draw inside radius cylinder */ - glBegin(GL_QUAD_STRIP); - for (i = 0; i <= teeth; i++) { - angle = i * 2.0 * M_PI / teeth; - glNormal3f(-cos(angle), -sin(angle), 0.0); - glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5); - glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); - } - glEnd(); -} - - -static void -draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glPushMatrix(); - glRotatef(view_rotx, 1.0, 0.0, 0.0); - glRotatef(view_roty, 0.0, 1.0, 0.0); - glRotatef(view_rotz, 0.0, 0.0, 1.0); - - glPushMatrix(); - glTranslatef(-3.0, -2.0, 0.0); - glRotatef(angle, 0.0, 0.0, 1.0); - glCallList(gear1); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(3.1, -2.0, 0.0); - glRotatef(-2.0 * angle - 9.0, 0.0, 0.0, 1.0); - glCallList(gear2); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(-3.1, 4.2, 0.0); - glRotatef(-2.0 * angle - 25.0, 0.0, 0.0, 1.0); - glCallList(gear3); - glPopMatrix(); - - glPopMatrix(); -} - - -/* new window size or exposure */ -static void -reshape(int width, int height) -{ - GLfloat h = (GLfloat) height / (GLfloat) width; - - glViewport(0, 0, (GLint) width, (GLint) height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-1.0, 1.0, -h, h, 5.0, 60.0); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0, 0.0, -40.0); -} - - - -static void -init(void) -{ - static GLfloat pos[4] = { 5.0, 5.0, 10.0, 0.0 }; - static GLfloat red[4] = { 0.8, 0.1, 0.0, 1.0 }; - static GLfloat green[4] = { 0.0, 0.8, 0.2, 1.0 }; - static GLfloat blue[4] = { 0.2, 0.2, 1.0, 1.0 }; - - glLightfv(GL_LIGHT0, GL_POSITION, pos); - glEnable(GL_CULL_FACE); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_DEPTH_TEST); - - /* make the gears */ - gear1 = glGenLists(1); - glNewList(gear1, GL_COMPILE); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, red); - gear(1.0, 4.0, 1.0, 20, 0.7); - glEndList(); - - gear2 = glGenLists(1); - glNewList(gear2, GL_COMPILE); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, green); - gear(0.5, 2.0, 2.0, 10, 0.7); - glEndList(); - - gear3 = glGenLists(1); - glNewList(gear3, GL_COMPILE); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, blue); - gear(1.3, 2.0, 0.5, 10, 0.7); - glEndList(); - - glEnable(GL_NORMALIZE); -} - - - - -static void run_gears(EGLDisplay dpy, EGLSurface surf, int ttr) -{ - double st = current_time(); - double ct = st; - int frames = 0; - GLfloat seconds, fps; - - while (ct - st < ttr) - { - double tt = current_time(); - double dt = tt - ct; - ct = tt; - - /* advance rotation for next frame */ - angle += 70.0 * dt; /* 70 degrees per second */ - if (angle > 3600.0) - angle -= 3600.0; - - draw(); - - eglSwapBuffers(dpy, surf); - - - frames++; - } - - seconds = ct - st; - fps = frames / seconds; - printf("%d frames in %3.1f seconds = %6.3f FPS\n", frames, seconds, fps); - -} - - -int -main(int argc, char *argv[]) -{ - int major, minor; - EGLContext ctx; - EGLSurface surface; - EGLConfig configs[MAX_CONFIGS]; - EGLint numConfigs, i; - EGLBoolean b; - EGLDisplay d; - EGLint screenAttribs[10]; - GLboolean printInfo = GL_FALSE; - EGLint width = 300, height = 300; - - /* parse cmd line args */ - for (i = 1; i < argc; i++) - { - if (strcmp(argv[i], "-info") == 0) - { - printInfo = GL_TRUE; - } - else - printf("Warning: unknown parameter: %s\n", argv[i]); - } - - /* DBR : Create EGL context/surface etc */ - d = eglGetDisplay(EGL_DEFAULT_DISPLAY); - assert(d); - - if (!eglInitialize(d, &major, &minor)) { - printf("peglgears: eglInitialize failed\n"); - return 0; - } - - printf("peglgears: EGL version = %d.%d\n", major, minor); - printf("peglgears: EGL_VENDOR = %s\n", eglQueryString(d, EGL_VENDOR)); - - eglGetConfigs(d, configs, MAX_CONFIGS, &numConfigs); - - eglBindAPI(EGL_OPENGL_API); - - ctx = eglCreateContext(d, configs[0], EGL_NO_CONTEXT, NULL); - if (ctx == EGL_NO_CONTEXT) { - printf("peglgears: failed to create context\n"); - return 0; - } - - /* build up screenAttribs array */ - i = 0; - screenAttribs[i++] = EGL_WIDTH; - screenAttribs[i++] = width; - screenAttribs[i++] = EGL_HEIGHT; - screenAttribs[i++] = height; - screenAttribs[i++] = EGL_NONE; - - surface = eglCreatePbufferSurface(d, configs[0], screenAttribs); - if (surface == EGL_NO_SURFACE) { - printf("peglgears: failed to create pbuffer surface\n"); - return 0; - } - - b = eglMakeCurrent(d, surface, surface, ctx); - if (!b) { - printf("peglgears: make current failed\n"); - return 0; - } - - if (printInfo) - { - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - printf("GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - printf("GL_EXTENSIONS = %s\n", (char *) glGetString(GL_EXTENSIONS)); - } - - init(); - reshape(width, height); - - glDrawBuffer( GL_BACK ); - - run_gears(d, surface, 5.0); - - eglDestroySurface(d, surface); - eglDestroyContext(d, ctx); - eglTerminate(d); - - return 0; -} diff --git a/progs/egl/xegl_tri.c b/progs/egl/xegl_tri.c deleted file mode 100644 index 65f352ddfa..0000000000 --- a/progs/egl/xegl_tri.c +++ /dev/null @@ -1,359 +0,0 @@ -/* - * Copyright (C) 2008 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/* - * Draw a triangle with X/EGL. - * Brian Paul - * 3 June 2008 - */ - - -#include <assert.h> -#include <math.h> -#include <stdlib.h> -#include <stdio.h> -#include <string.h> -#include <X11/Xlib.h> -#include <X11/Xutil.h> -#include <X11/keysym.h> -#include <GL/gl.h> /* using full OpenGL for now */ -#include <GLES/egl.h> - - -static GLfloat view_rotx = 0.0, view_roty = 0.0, view_rotz = 0.0; - - -static void -draw(void) -{ - static const GLfloat verts[3][2] = { - { -1, -1 }, - { 1, -1 }, - { 0, 1 } - }; - static const GLfloat colors[3][3] = { - { 1, 0, 0 }, - { 0, 1, 0 }, - { 0, 0, 1 } - }; - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glPushMatrix(); - glRotatef(view_rotx, 1, 0, 0); - glRotatef(view_roty, 0, 1, 0); - glRotatef(view_rotz, 0, 0, 1); - - { - glVertexPointer(2, GL_FLOAT, 0, verts); - glColorPointer(3, GL_FLOAT, 0, colors); - glEnableClientState(GL_VERTEX_ARRAY); - glEnableClientState(GL_COLOR_ARRAY); - - glDrawArrays(GL_TRIANGLES, 0, 3); - - glDisableClientState(GL_VERTEX_ARRAY); - glDisableClientState(GL_COLOR_ARRAY); - } - - glPopMatrix(); -} - - -/* new window size or exposure */ -static void -reshape(int width, int height) -{ - GLfloat ar = (GLfloat) width / (GLfloat) height; - - glViewport(0, 0, (GLint) width, (GLint) height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-ar, ar, -1, 1, 5.0, 60.0); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0, 0.0, -10.0); -} - - -static void -init(void) -{ - glClearColor(0.4, 0.4, 0.4, 0.0); -} - - -/* - * Create an RGB, double-buffered X window. - * Return the window and context handles. - */ -static void -make_x_window(Display *x_dpy, EGLDisplay egl_dpy, - const char *name, - int x, int y, int width, int height, - Window *winRet, - EGLContext *ctxRet, - EGLSurface *surfRet) -{ - static const EGLint attribs[] = { - EGL_RED_SIZE, 1, - EGL_GREEN_SIZE, 1, - EGL_BLUE_SIZE, 1, - EGL_DEPTH_SIZE, 1, - EGL_NONE - }; - - int scrnum; - XSetWindowAttributes attr; - unsigned long mask; - Window root; - Window win; - XVisualInfo *visInfo, visTemplate; - int num_visuals; - EGLContext ctx; - EGLConfig config; - EGLint num_configs; - EGLint vid; - - scrnum = DefaultScreen( x_dpy ); - root = RootWindow( x_dpy, scrnum ); - - if (!eglChooseConfig( egl_dpy, attribs, &config, 1, &num_configs)) { - printf("Error: couldn't get an EGL visual config\n"); - exit(1); - } - - assert(config); - assert(num_configs > 0); - - if (!eglGetConfigAttrib(egl_dpy, config, EGL_NATIVE_VISUAL_ID, &vid)) { - printf("Error: eglGetConfigAttrib() failed\n"); - exit(1); - } - - /* The X window visual must match the EGL config */ - visTemplate.visualid = vid; - visInfo = XGetVisualInfo(x_dpy, VisualIDMask, &visTemplate, &num_visuals); - if (!visInfo) { - printf("Error: couldn't get X visual\n"); - exit(1); - } - - /* window attributes */ - attr.background_pixel = 0; - attr.border_pixel = 0; - attr.colormap = XCreateColormap( x_dpy, root, visInfo->visual, AllocNone); - attr.event_mask = StructureNotifyMask | ExposureMask | KeyPressMask; - mask = CWBackPixel | CWBorderPixel | CWColormap | CWEventMask; - - win = XCreateWindow( x_dpy, root, 0, 0, width, height, - 0, visInfo->depth, InputOutput, - visInfo->visual, mask, &attr ); - - /* set hints and properties */ - { - XSizeHints sizehints; - sizehints.x = x; - sizehints.y = y; - sizehints.width = width; - sizehints.height = height; - sizehints.flags = USSize | USPosition; - XSetNormalHints(x_dpy, win, &sizehints); - XSetStandardProperties(x_dpy, win, name, name, - None, (char **)NULL, 0, &sizehints); - } - - eglBindAPI(EGL_OPENGL_API); - - ctx = eglCreateContext(egl_dpy, config, EGL_NO_CONTEXT, NULL ); - if (!ctx) { - printf("Error: glXCreateContext failed\n"); - exit(1); - } - - *surfRet = eglCreateWindowSurface(egl_dpy, config, win, NULL); - - if (!*surfRet) { - printf("Error: eglCreateWindowSurface failed\n"); - exit(1); - } - - XFree(visInfo); - - *winRet = win; - *ctxRet = ctx; -} - - -static void -event_loop(Display *dpy, Window win, - EGLDisplay egl_dpy, EGLSurface egl_surf) -{ - while (1) { - int redraw = 0; - XEvent event; - - XNextEvent(dpy, &event); - - switch (event.type) { - case Expose: - redraw = 1; - break; - case ConfigureNotify: - reshape(event.xconfigure.width, event.xconfigure.height); - break; - case KeyPress: - { - char buffer[10]; - int r, code; - code = XLookupKeysym(&event.xkey, 0); - if (code == XK_Left) { - view_roty += 5.0; - } - else if (code == XK_Right) { - view_roty -= 5.0; - } - else if (code == XK_Up) { - view_rotx += 5.0; - } - else if (code == XK_Down) { - view_rotx -= 5.0; - } - else { - r = XLookupString(&event.xkey, buffer, sizeof(buffer), - NULL, NULL); - if (buffer[0] == 27) { - /* escape */ - return; - } - } - } - redraw = 1; - break; - default: - ; /*no-op*/ - } - - if (redraw) { - draw(); - eglSwapBuffers(egl_dpy, egl_surf); - } - } -} - - -static void -usage(void) -{ - printf("Usage:\n"); - printf(" -display <displayname> set the display to run on\n"); - printf(" -info display OpenGL renderer info\n"); -} - - -int -main(int argc, char *argv[]) -{ - const int winWidth = 300, winHeight = 300; - Display *x_dpy; - Window win; - EGLSurface egl_surf; - EGLContext egl_ctx; - EGLDisplay egl_dpy; - char *dpyName = NULL; - GLboolean printInfo = GL_FALSE; - EGLint egl_major, egl_minor; - int i; - const char *s; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-display") == 0) { - dpyName = argv[i+1]; - i++; - } - else if (strcmp(argv[i], "-info") == 0) { - printInfo = GL_TRUE; - } - else { - usage(); - return -1; - } - } - - x_dpy = XOpenDisplay(dpyName); - if (!x_dpy) { - printf("Error: couldn't open display %s\n", - dpyName ? dpyName : getenv("DISPLAY")); - return -1; - } - - egl_dpy = eglGetDisplay(x_dpy); - if (!egl_dpy) { - printf("Error: eglGetDisplay() failed\n"); - return -1; - } - - if (!eglInitialize(egl_dpy, &egl_major, &egl_minor)) { - printf("Error: eglInitialize() failed\n"); - return -1; - } - - s = eglQueryString(egl_dpy, EGL_VERSION); - printf("EGL_VERSION = %s\n", s); - - make_x_window(x_dpy, egl_dpy, - "xegl_tri", 0, 0, winWidth, winHeight, - &win, &egl_ctx, &egl_surf); - - XMapWindow(x_dpy, win); - if (!eglMakeCurrent(egl_dpy, egl_surf, egl_surf, egl_ctx)) { - printf("Error: eglMakeCurrent() failed\n"); - return -1; - } - - if (printInfo) { - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - printf("GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - } - - init(); - - /* Set initial projection/viewing transformation. - * We can't be sure we'll get a ConfigureNotify event when the window - * first appears. - */ - reshape(winWidth, winHeight); - - event_loop(x_dpy, win, egl_dpy, egl_surf); - - eglDestroyContext(egl_dpy, egl_ctx); - eglDestroySurface(egl_dpy, egl_surf); - eglTerminate(egl_dpy); - - - XDestroyWindow(x_dpy, win); - XCloseDisplay(x_dpy); - - return 0; -} diff --git a/progs/egl/xeglbindtex.c b/progs/egl/xeglbindtex.c deleted file mode 100644 index fdd9fe2b87..0000000000 --- a/progs/egl/xeglbindtex.c +++ /dev/null @@ -1,474 +0,0 @@ -/* - * Simple demo for eglBindTexImage. Based on xegl_tri.c by - * - * Copyright (C) 2008 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/* - * The spec says that eglBindTexImage supports only OpenGL ES context, but this - * demo uses OpenGL context. Keep in mind that this is non-standard. - */ - -#include <math.h> -#include <stdlib.h> -#include <stdio.h> -#include <string.h> -#include <X11/Xlib.h> -#include <X11/Xutil.h> -#include <X11/keysym.h> -#include <GL/gl.h> -#include <EGL/egl.h> - -static EGLDisplay dpy; -static EGLContext ctx_win, ctx_pbuf; -static EGLSurface surf_win, surf_pbuf; -static GLuint tex_pbuf; - -static GLfloat view_rotx = 0.0, view_roty = 0.0, view_rotz = 0.0; -static GLboolean blend = GL_TRUE; -static GLuint color_flow; - -static void -make_pbuffer(int width, int height) -{ - static const EGLint config_attribs[] = { - EGL_RED_SIZE, 8, - EGL_GREEN_SIZE, 8, - EGL_BLUE_SIZE, 8, - EGL_BIND_TO_TEXTURE_RGB, EGL_TRUE, - EGL_NONE - }; - EGLint pbuf_attribs[] = { - EGL_WIDTH, width, - EGL_HEIGHT, height, - EGL_TEXTURE_FORMAT, EGL_TEXTURE_RGB, - EGL_TEXTURE_TARGET, EGL_TEXTURE_2D, - EGL_NONE - }; - EGLConfig config; - EGLint num_configs; - - if (!eglChooseConfig(dpy, config_attribs, &config, 1, &num_configs)) { - printf("Error: couldn't get an EGL visual config for pbuffer\n"); - exit(1); - } - - eglBindAPI(EGL_OPENGL_API); - ctx_pbuf = eglCreateContext(dpy, config, EGL_NO_CONTEXT, NULL ); - surf_pbuf = eglCreatePbufferSurface(dpy, config, pbuf_attribs); - if (surf_pbuf == EGL_NO_SURFACE) { - printf("failed to allocate pbuffer\n"); - exit(1); - } - - glGenTextures(1, &tex_pbuf); -} - -static void -use_pbuffer(void) -{ - static int initialized; - - eglMakeCurrent(dpy, surf_pbuf, surf_pbuf, ctx_pbuf); - if (!initialized) { - EGLint width, height; - GLfloat ar; - - initialized = 1; - - eglQuerySurface(dpy, surf_pbuf, EGL_WIDTH, &width); - eglQuerySurface(dpy, surf_pbuf, EGL_WIDTH, &height); - ar = (GLfloat) width / (GLfloat) height; - - glViewport(0, 0, (GLint) width, (GLint) height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-ar, ar, -1, 1, 1.0, 10.0); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - - /* y-inverted */ - glScalef(1.0, -1.0, 1.0); - - glTranslatef(0.0, 0.0, -5.0); - - glClearColor(0.2, 0.2, 0.2, 0.0); - } -} - -static void -make_window(Display *x_dpy, const char *name, - int x, int y, int width, int height, - Window *winRet) -{ - static const EGLint attribs[] = { - EGL_RED_SIZE, 8, - EGL_GREEN_SIZE, 8, - EGL_BLUE_SIZE, 8, - EGL_ALPHA_SIZE, 8, - EGL_DEPTH_SIZE, 8, - EGL_NONE - }; - - int scrnum; - XSetWindowAttributes attr; - unsigned long mask; - Window root; - Window win; - XVisualInfo *visInfo, visTemplate; - int num_visuals; - EGLConfig config; - EGLint num_configs, vid; - - scrnum = DefaultScreen( x_dpy ); - root = RootWindow( x_dpy, scrnum ); - - if (!eglChooseConfig(dpy, attribs, &config, 1, &num_configs)) { - printf("Error: couldn't get an EGL visual config\n"); - exit(1); - } - - if (!eglGetConfigAttrib(dpy, config, EGL_NATIVE_VISUAL_ID, &vid)) { - printf("Error: eglGetConfigAttrib() failed\n"); - exit(1); - } - - /* The X window visual must match the EGL config */ - visTemplate.visualid = vid; - visInfo = XGetVisualInfo(x_dpy, VisualIDMask, &visTemplate, &num_visuals); - if (!visInfo) { - printf("Error: couldn't get X visual\n"); - exit(1); - } - - /* window attributes */ - attr.background_pixel = 0; - attr.border_pixel = 0; - attr.colormap = XCreateColormap( x_dpy, root, visInfo->visual, AllocNone); - attr.event_mask = StructureNotifyMask | ExposureMask | KeyPressMask; - attr.override_redirect = 0; - mask = CWBackPixel | CWBorderPixel | CWColormap | CWEventMask | CWOverrideRedirect; - - win = XCreateWindow( x_dpy, root, 0, 0, width, height, - 0, visInfo->depth, InputOutput, - visInfo->visual, mask, &attr ); - - /* set hints and properties */ - { - XSizeHints sizehints; - sizehints.x = x; - sizehints.y = y; - sizehints.width = width; - sizehints.height = height; - sizehints.flags = USSize | USPosition; - XSetNormalHints(x_dpy, win, &sizehints); - XSetStandardProperties(x_dpy, win, name, name, - None, (char **)NULL, 0, &sizehints); - } - - eglBindAPI(EGL_OPENGL_API); - ctx_win = eglCreateContext(dpy, config, EGL_NO_CONTEXT, NULL ); - if (!ctx_win) { - printf("Error: glXCreateContext failed\n"); - exit(1); - } - - surf_win = eglCreateWindowSurface(dpy, config, win, NULL); - - XFree(visInfo); - - *winRet = win; -} - -static void -use_window(void) -{ - static int initialized; - - eglMakeCurrent(dpy, surf_win, surf_win, ctx_win); - if (!initialized) { - initialized = 1; - glEnable(GL_TEXTURE_2D); - glBindTexture(GL_TEXTURE_2D, tex_pbuf); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - } -} - -static void -draw_triangle(void) -{ - static const GLfloat verts[3][2] = { - { -3, -3 }, - { 3, -3 }, - { 0, 3 } - }; - GLfloat colors[3][3] = { - { 1, 0, 0 }, - { 0, 1, 0 }, - { 0, 0, 1 } - }; - GLint i; - - /* flow the color */ - for (i = 0; i < 3; i++) { - GLint first = (i + color_flow / 256) % 3; - GLint second = (first + 1) % 3; - GLint third = (second + 1) % 3; - GLfloat c = (color_flow % 256) / 256.0f; - - c = c * c * c; - colors[i][first] = 1.0f - c; - colors[i][second] = c; - colors[i][third] = 0.0f; - } - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glVertexPointer(2, GL_FLOAT, 0, verts); - glColorPointer(3, GL_FLOAT, 0, colors); - glEnableClientState(GL_VERTEX_ARRAY); - glEnableClientState(GL_COLOR_ARRAY); - - glDrawArrays(GL_TRIANGLES, 0, 3); - - glDisableClientState(GL_VERTEX_ARRAY); - glDisableClientState(GL_COLOR_ARRAY); -} - -static void -draw_textured_cube(void) -{ - static const GLfloat verts[][2] = { - { -4, -4 }, - { 4, -4 }, - { 4, 4 }, - { -4, 4 } - }; - static const GLfloat colors[][4] = { - { 1, 1, 1, 0.5 }, - { 1, 1, 1, 0.5 }, - { 1, 1, 1, 0.5 }, - { 1, 1, 1, 0.5 } - }; - static const GLfloat texs[][2] = { - { 0, 0 }, - { 1, 0 }, - { 1, 1 }, - { 0, 1 } - }; - static const GLfloat xforms[6][4] = { - { 0, 0, 1, 0 }, - { 90, 0, 1, 0 }, - { 180, 0, 1, 0 }, - { 270, 0, 1, 0 }, - { 90, 1, 0, 0 }, - { -90, 1, 0, 0 } - }; - GLint i; - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - if (blend) { - glDisable(GL_DEPTH_TEST); - glEnable(GL_BLEND); - } else { - glEnable(GL_DEPTH_TEST); - glDisable(GL_BLEND); - } - - glVertexPointer(2, GL_FLOAT, 0, verts); - glColorPointer(4, GL_FLOAT, 0, colors); - glTexCoordPointer(2, GL_FLOAT, 0, texs); - - glEnableClientState(GL_VERTEX_ARRAY); - glEnableClientState(GL_COLOR_ARRAY); - glEnableClientState(GL_TEXTURE_COORD_ARRAY); - - for (i = 0; i < 6; i++) { - glPushMatrix(); - glRotatef(xforms[i][0], xforms[i][1], xforms[i][2], xforms[i][3]); - glTranslatef(0, 0, 4.1); - glDrawArrays(GL_TRIANGLE_FAN, 0, 4); - glPopMatrix(); - } - - glDisableClientState(GL_VERTEX_ARRAY); - glDisableClientState(GL_COLOR_ARRAY); - glDisableClientState(GL_TEXTURE_COORD_ARRAY); -} - -static void -draw(void) -{ - use_pbuffer(); - draw_triangle(); - - use_window(); - - eglBindTexImage(dpy, surf_pbuf, EGL_BACK_BUFFER); - - glPushMatrix(); - glRotatef(view_rotx, 1, 0, 0); - glRotatef(view_roty, 0, 1, 0); - glRotatef(view_rotz, 0, 0, 1); - - draw_textured_cube(); - - glPopMatrix(); - - eglReleaseTexImage(dpy, surf_pbuf, EGL_BACK_BUFFER); -} - -/* new window size or exposure */ -static void -reshape(int width, int height) -{ - GLfloat ar = (GLfloat) width / (GLfloat) height; - - use_window(); - - glViewport(0, 0, (GLint) width, (GLint) height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-ar, ar, -1, 1, 5.0, 60.0); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0, 0.0, -40.0); -} - -static void -event_loop(Display *x_dpy, Window win) -{ - while (1) { - int redraw = 1; - - if (XPending(x_dpy) > 0) { - XEvent event; - XNextEvent(x_dpy, &event); - - switch (event.type) { - case Expose: - redraw = 1; - break; - case ConfigureNotify: - reshape(event.xconfigure.width, event.xconfigure.height); - break; - case KeyPress: - { - char buffer[10]; - int r, code; - code = XLookupKeysym(&event.xkey, 0); - if (code == XK_Left) { - view_roty += 5.0; - } - else if (code == XK_Right) { - view_roty -= 5.0; - } - else if (code == XK_Up) { - view_rotx += 5.0; - } - else if (code == XK_Down) { - view_rotx -= 5.0; - } - else if (code == XK_b) { - blend = !blend; - } - else { - r = XLookupString(&event.xkey, buffer, sizeof(buffer), - NULL, NULL); - if (buffer[0] == 27) { - /* escape */ - return; - } - } - } - redraw = 1; - break; - default: - ; /*no-op*/ - } - } - - if (redraw) { - view_rotx += 1.0; - view_roty += 2.0; - view_rotz += 1.5; - color_flow += 20; - draw(); - eglSwapBuffers(dpy, surf_win); - } - } -} - -int -main(int argc, char *argv[]) -{ - const int winWidth = 300, winHeight = 300; - Display *x_dpy; - Window win; - char *dpyName = NULL; - EGLint egl_major, egl_minor; - const char *s; - - x_dpy = XOpenDisplay(dpyName); - if (!x_dpy) { - printf("Error: couldn't open display %s\n", - dpyName ? dpyName : getenv("DISPLAY")); - return -1; - } - - dpy = eglGetDisplay(x_dpy); - if (!dpy) { - printf("Error: eglGetDisplay() failed\n"); - return -1; - } - - if (!eglInitialize(dpy, &egl_major, &egl_minor)) { - printf("Error: eglInitialize() failed\n"); - return -1; - } - - s = eglQueryString(dpy, EGL_VERSION); - printf("EGL_VERSION = %s\n", s); - - make_window(x_dpy, "color flow", 0, 0, winWidth, winHeight, &win); - make_pbuffer(winWidth, winHeight); - - XMapWindow(x_dpy, win); - - reshape(winWidth, winHeight); - event_loop(x_dpy, win); - - glDeleteTextures(1, &tex_pbuf); - - eglMakeCurrent(dpy, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); - eglTerminate(dpy); - - XDestroyWindow(x_dpy, win); - XCloseDisplay(x_dpy); - - return 0; -} diff --git a/progs/egl/xeglgears.c b/progs/egl/xeglgears.c deleted file mode 100644 index 614a625603..0000000000 --- a/progs/egl/xeglgears.c +++ /dev/null @@ -1,787 +0,0 @@ -/* - * Copyright (C) 1999-2001 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/* - * Ported to X/EGL/GLES. XXX Actually, uses full OpenGL ATM. - * Brian Paul - * 30 May 2008 - */ - -/* - * Command line options: - * -info print GL implementation information - * - */ - - -#include <math.h> -#include <stdlib.h> -#include <stdio.h> -#include <string.h> -#include <X11/Xlib.h> -#include <X11/Xutil.h> -#include <X11/keysym.h> -#include <GL/gl.h> -#include <EGL/egl.h> - - -#define BENCHMARK - -#ifdef BENCHMARK - -/* XXX this probably isn't very portable */ - -#include <sys/time.h> -#include <unistd.h> - -/* return current time (in seconds) */ -static double -current_time(void) -{ - struct timeval tv; -#ifdef __VMS - (void) gettimeofday(&tv, NULL ); -#else - struct timezone tz; - (void) gettimeofday(&tv, &tz); -#endif - return (double) tv.tv_sec + tv.tv_usec / 1000000.0; -} - -#else /*BENCHMARK*/ - -/* dummy */ -static double -current_time(void) -{ - /* update this function for other platforms! */ - static double t = 0.0; - static int warn = 1; - if (warn) { - fprintf(stderr, "Warning: current_time() not implemented!!\n"); - warn = 0; - } - return t += 1.0; -} - -#endif /*BENCHMARK*/ - - - -#ifndef M_PI -#define M_PI 3.14159265 -#endif - - -static GLfloat view_rotx = 20.0, view_roty = 30.0, view_rotz = 0.0; -static GLint gear1, gear2, gear3; -static GLfloat angle = 0.0; - -/* - * - * Draw a gear wheel. You'll probably want to call this function when - * building a display list since we do a lot of trig here. - * - * Input: inner_radius - radius of hole at center - * outer_radius - radius at center of teeth - * width - width of gear - * teeth - number of teeth - * tooth_depth - depth of tooth - */ -static void -gear(GLfloat inner_radius, GLfloat outer_radius, GLfloat width, - GLint teeth, GLfloat tooth_depth) -{ - GLint i; - GLfloat r0, r1, r2; - GLfloat angle, da; - GLfloat u, v, len; - - r0 = inner_radius; - r1 = outer_radius - tooth_depth / 2.0; - r2 = outer_radius + tooth_depth / 2.0; - - da = 2.0 * M_PI / teeth / 4.0; - - glShadeModel(GL_FLAT); - - glNormal3f(0.0, 0.0, 1.0); - - /* draw front face */ - glBegin(GL_QUAD_STRIP); - for (i = 0; i <= teeth; i++) { - angle = i * 2.0 * M_PI / teeth; - glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); - glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); - if (i < teeth) { - glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), - width * 0.5); - } - } - glEnd(); - - /* draw front sides of teeth */ - glBegin(GL_QUADS); - da = 2.0 * M_PI / teeth / 4.0; - for (i = 0; i < teeth; i++) { - angle = i * 2.0 * M_PI / teeth; - - glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); - glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), width * 0.5); - glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), - width * 0.5); - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), - width * 0.5); - } - glEnd(); - - glNormal3f(0.0, 0.0, -1.0); - - /* draw back face */ - glBegin(GL_QUAD_STRIP); - for (i = 0; i <= teeth; i++) { - angle = i * 2.0 * M_PI / teeth; - glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5); - glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5); - if (i < teeth) { - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), - -width * 0.5); - glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5); - } - } - glEnd(); - - /* draw back sides of teeth */ - glBegin(GL_QUADS); - da = 2.0 * M_PI / teeth / 4.0; - for (i = 0; i < teeth; i++) { - angle = i * 2.0 * M_PI / teeth; - - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), - -width * 0.5); - glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), - -width * 0.5); - glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), -width * 0.5); - glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5); - } - glEnd(); - - /* draw outward faces of teeth */ - glBegin(GL_QUAD_STRIP); - for (i = 0; i < teeth; i++) { - angle = i * 2.0 * M_PI / teeth; - - glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); - glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5); - u = r2 * cos(angle + da) - r1 * cos(angle); - v = r2 * sin(angle + da) - r1 * sin(angle); - len = sqrt(u * u + v * v); - u /= len; - v /= len; - glNormal3f(v, -u, 0.0); - glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), width * 0.5); - glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), -width * 0.5); - glNormal3f(cos(angle), sin(angle), 0.0); - glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), - width * 0.5); - glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), - -width * 0.5); - u = r1 * cos(angle + 3 * da) - r2 * cos(angle + 2 * da); - v = r1 * sin(angle + 3 * da) - r2 * sin(angle + 2 * da); - glNormal3f(v, -u, 0.0); - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), - width * 0.5); - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), - -width * 0.5); - glNormal3f(cos(angle), sin(angle), 0.0); - } - - glVertex3f(r1 * cos(0), r1 * sin(0), width * 0.5); - glVertex3f(r1 * cos(0), r1 * sin(0), -width * 0.5); - - glEnd(); - - glShadeModel(GL_SMOOTH); - - /* draw inside radius cylinder */ - glBegin(GL_QUAD_STRIP); - for (i = 0; i <= teeth; i++) { - angle = i * 2.0 * M_PI / teeth; - glNormal3f(-cos(angle), -sin(angle), 0.0); - glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5); - glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); - } - glEnd(); -} - - -static void -draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glPushMatrix(); - glRotatef(view_rotx, 1.0, 0.0, 0.0); - glRotatef(view_roty, 0.0, 1.0, 0.0); - glRotatef(view_rotz, 0.0, 0.0, 1.0); - - glPushMatrix(); - glTranslatef(-3.0, -2.0, 0.0); - glRotatef(angle, 0.0, 0.0, 1.0); - glCallList(gear1); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(3.1, -2.0, 0.0); - glRotatef(-2.0 * angle - 9.0, 0.0, 0.0, 1.0); - glCallList(gear2); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(-3.1, 4.2, 0.0); - glRotatef(-2.0 * angle - 25.0, 0.0, 0.0, 1.0); - glCallList(gear3); - glPopMatrix(); - - glPopMatrix(); -} - - -/* new window size or exposure */ -static void -reshape(int width, int height) -{ - GLfloat ar = (GLfloat) width / (GLfloat) height; - - glViewport(0, 0, (GLint) width, (GLint) height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-ar, ar, -1, 1, 5.0, 60.0); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0, 0.0, -40.0); -} - - - -static void -init(void) -{ - static GLfloat pos[4] = { 5.0, 5.0, 10.0, 0.0 }; - static GLfloat red[4] = { 0.8, 0.1, 0.0, 1.0 }; - static GLfloat green[4] = { 0.0, 0.8, 0.2, 1.0 }; - static GLfloat blue[4] = { 0.2, 0.2, 1.0, 1.0 }; - - glLightfv(GL_LIGHT0, GL_POSITION, pos); - glEnable(GL_CULL_FACE); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_DEPTH_TEST); - - /* make the gears */ - gear1 = glGenLists(1); - glNewList(gear1, GL_COMPILE); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, red); - gear(1.0, 4.0, 1.0, 20, 0.7); - glEndList(); - - gear2 = glGenLists(1); - glNewList(gear2, GL_COMPILE); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, green); - gear(0.5, 2.0, 2.0, 10, 0.7); - glEndList(); - - gear3 = glGenLists(1); - glNewList(gear3, GL_COMPILE); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, blue); - gear(1.3, 2.0, 0.5, 10, 0.7); - glEndList(); - - glEnable(GL_NORMALIZE); - - glClearColor(0.2, 0.2, 0.2, 0.0); -} - - -struct egl_manager { - EGLNativeDisplayType xdpy; - EGLNativeWindowType xwin; - EGLNativePixmapType xpix; - - EGLDisplay dpy; - EGLConfig conf; - EGLContext ctx; - - EGLSurface win; - EGLSurface pix; - EGLSurface pbuf; - - EGLBoolean verbose; - EGLint major, minor; -}; - -static struct egl_manager * -egl_manager_new(EGLNativeDisplayType xdpy, const EGLint *attrib_list, - EGLBoolean verbose) -{ - struct egl_manager *eman; - const char *ver; - EGLint num_conf; - - eman = calloc(1, sizeof(*eman)); - if (!eman) - return NULL; - - eman->verbose = verbose; - eman->xdpy = xdpy; - - eman->dpy = eglGetDisplay(eman->xdpy); - if (eman->dpy == EGL_NO_DISPLAY) { - printf("eglGetDisplay() failed\n"); - free(eman); - return NULL; - } - - if (!eglInitialize(eman->dpy, &eman->major, &eman->minor)) { - printf("eglInitialize() failed\n"); - free(eman); - return NULL; - } - - ver = eglQueryString(eman->dpy, EGL_VERSION); - printf("EGL_VERSION = %s\n", ver); - - if (!eglChooseConfig(eman->dpy, attrib_list, &eman->conf, 1, &num_conf) || - !num_conf) { - printf("eglChooseConfig() failed\n"); - eglTerminate(eman->dpy); - free(eman); - return NULL; - } - - eman->ctx = eglCreateContext(eman->dpy, eman->conf, EGL_NO_CONTEXT, NULL); - if (eman->ctx == EGL_NO_CONTEXT) { - printf("eglCreateContext() failed\n"); - eglTerminate(eman->dpy); - free(eman); - return NULL; - } - - return eman; -} - -static EGLBoolean -egl_manager_create_window(struct egl_manager *eman, const char *name, - EGLint w, EGLint h, EGLBoolean need_surface, - EGLBoolean fullscreen, const EGLint *attrib_list) -{ - XVisualInfo vinfo_template, *vinfo = NULL; - EGLint val, num_vinfo; - Window root; - XSetWindowAttributes attrs; - unsigned long mask; - EGLint x = 0, y = 0; - - if (!eglGetConfigAttrib(eman->dpy, eman->conf, - EGL_NATIVE_VISUAL_ID, &val)) { - printf("eglGetConfigAttrib() failed\n"); - return EGL_FALSE; - } - if (val) { - vinfo_template.visualid = (VisualID) val; - vinfo = XGetVisualInfo(eman->xdpy, VisualIDMask, &vinfo_template, &num_vinfo); - } - /* try harder if window surface is not needed */ - if (!vinfo && !need_surface && - eglGetConfigAttrib(eman->dpy, eman->conf, EGL_BUFFER_SIZE, &val)) { - if (val == 32) - val = 24; - vinfo_template.depth = val; - vinfo = XGetVisualInfo(eman->xdpy, VisualDepthMask, &vinfo_template, &num_vinfo); - } - - if (!vinfo) { - printf("XGetVisualInfo() failed\n"); - return EGL_FALSE; - } - - root = DefaultRootWindow(eman->xdpy); - if (fullscreen) { - x = y = 0; - w = DisplayWidth(eman->xdpy, DefaultScreen(eman->xdpy)); - h = DisplayHeight(eman->xdpy, DefaultScreen(eman->xdpy)); - } - - /* window attributes */ - attrs.background_pixel = 0; - attrs.border_pixel = 0; - attrs.colormap = XCreateColormap(eman->xdpy, root, vinfo->visual, AllocNone); - attrs.event_mask = StructureNotifyMask | ExposureMask | KeyPressMask; - attrs.override_redirect = fullscreen; - mask = CWBackPixel | CWBorderPixel | CWColormap | CWEventMask | CWOverrideRedirect; - - eman->xwin = XCreateWindow(eman->xdpy, root, x, y, w, h, - 0, vinfo->depth, InputOutput, - vinfo->visual, mask, &attrs); - XFree(vinfo); - - /* set hints and properties */ - { - XSizeHints sizehints; - sizehints.x = x; - sizehints.y = y; - sizehints.width = w; - sizehints.height = h; - sizehints.flags = USSize | USPosition; - XSetNormalHints(eman->xdpy, eman->xwin, &sizehints); - XSetStandardProperties(eman->xdpy, eman->xwin, name, name, - None, (char **)NULL, 0, &sizehints); - } - - if (need_surface) { - eman->win = eglCreateWindowSurface(eman->dpy, eman->conf, - eman->xwin, attrib_list); - if (eman->win == EGL_NO_SURFACE) { - printf("eglCreateWindowSurface() failed\n"); - XDestroyWindow(eman->xdpy, eman->xwin); - eman->xwin = None; - return EGL_FALSE; - } - } - - XMapWindow(eman->xdpy, eman->xwin); - - return EGL_TRUE; -} - -static EGLBoolean -egl_manager_create_pixmap(struct egl_manager *eman, EGLNativeWindowType xwin, - EGLBoolean need_surface, const EGLint *attrib_list) -{ - XWindowAttributes attrs; - - if (!XGetWindowAttributes(eman->xdpy, xwin, &attrs)) { - printf("XGetWindowAttributes() failed\n"); - return EGL_FALSE; - } - - eman->xpix = XCreatePixmap(eman->xdpy, xwin, - attrs.width, attrs.height, attrs.depth); - - if (need_surface) { - eman->pix = eglCreatePixmapSurface(eman->dpy, eman->conf, - eman->xpix, attrib_list); - if (eman->pix == EGL_NO_SURFACE) { - printf("eglCreatePixmapSurface() failed\n"); - XFreePixmap(eman->xdpy, eman->xpix); - eman->xpix = None; - return EGL_FALSE; - } - } - - return EGL_TRUE; -} - -static EGLBoolean -egl_manager_create_pbuffer(struct egl_manager *eman, const EGLint *attrib_list) -{ - eman->pbuf = eglCreatePbufferSurface(eman->dpy, eman->conf, attrib_list); - if (eman->pbuf == EGL_NO_SURFACE) { - printf("eglCreatePbufferSurface() failed\n"); - return EGL_FALSE; - } - - return EGL_TRUE; -} - -static void -egl_manager_destroy(struct egl_manager *eman) -{ - eglMakeCurrent(eman->dpy, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); - eglTerminate(eman->dpy); - - if (eman->xwin != None) - XDestroyWindow(eman->xdpy, eman->xwin); - if (eman->xpix != None) - XFreePixmap(eman->xdpy, eman->xpix); - - free(eman); -} - -static void -event_loop(struct egl_manager *eman, EGLint surface_type, EGLint w, EGLint h) -{ - GC gc = XCreateGC(eman->xdpy, eman->xwin, 0, NULL); - EGLint orig_w = w, orig_h = h; - - if (surface_type == EGL_PBUFFER_BIT) - printf("there will be no screen update if " - "eglCopyBuffers() is not implemented\n"); - - while (1) { - while (XPending(eman->xdpy) > 0) { - XEvent event; - XNextEvent(eman->xdpy, &event); - switch (event.type) { - case Expose: - /* we'll redraw below */ - break; - case ConfigureNotify: - w = event.xconfigure.width; - h = event.xconfigure.height; - if (surface_type == EGL_WINDOW_BIT) - reshape(w, h); - break; - case KeyPress: - { - char buffer[10]; - int r, code; - code = XLookupKeysym(&event.xkey, 0); - if (code == XK_Left) { - view_roty += 5.0; - } - else if (code == XK_Right) { - view_roty -= 5.0; - } - else if (code == XK_Up) { - view_rotx += 5.0; - } - else if (code == XK_Down) { - view_rotx -= 5.0; - } - else { - r = XLookupString(&event.xkey, buffer, sizeof(buffer), - NULL, NULL); - if (buffer[0] == 27) { - /* escape */ - return; - } - } - } - } - } - - { - static int frames = 0; - static double tRot0 = -1.0, tRate0 = -1.0; - double dt, t = current_time(); - int x, y; - if (tRot0 < 0.0) - tRot0 = t; - dt = t - tRot0; - tRot0 = t; - - /* advance rotation for next frame */ - angle += 70.0 * dt; /* 70 degrees per second */ - if (angle > 3600.0) - angle -= 3600.0; - - draw(); - switch (surface_type) { - case EGL_WINDOW_BIT: - eglSwapBuffers(eman->dpy, eman->win); - break; - case EGL_PBUFFER_BIT: - eglWaitClient(); - if (!eglCopyBuffers(eman->xdpy, eman->pbuf, eman->xpix)) - break; - /* fall through */ - case EGL_PIXMAP_BIT: - eglWaitClient(); - for (x = 0; x < w; x += orig_w) { - for (y = 0; y < h; y += orig_h) { - XCopyArea(eman->xdpy, eman->xpix, eman->xwin, gc, - 0, 0, orig_w, orig_h, x, y); - } - } - break; - } - - frames++; - - if (tRate0 < 0.0) - tRate0 = t; - if (t - tRate0 >= 5.0) { - GLfloat seconds = t - tRate0; - GLfloat fps = frames / seconds; - printf("%d frames in %3.1f seconds = %6.3f FPS\n", frames, seconds, - fps); - tRate0 = t; - frames = 0; - } - } - } - - XFreeGC(eman->xdpy, gc); -} - - -static void -usage(void) -{ - printf("Usage:\n"); - printf(" -display <displayname> set the display to run on\n"); - printf(" -fullscreen run in fullscreen mode\n"); - printf(" -info display OpenGL renderer info\n"); - printf(" -pixmap use pixmap surface\n"); - printf(" -pbuffer use pbuffer surface\n"); -} - - -int -main(int argc, char *argv[]) -{ - const int winWidth = 300, winHeight = 300; - Display *x_dpy; - char *dpyName = NULL; - struct egl_manager *eman; - EGLint attribs[] = { - EGL_SURFACE_TYPE, 0, /* filled later */ - EGL_RED_SIZE, 1, - EGL_GREEN_SIZE, 1, - EGL_BLUE_SIZE, 1, - EGL_DEPTH_SIZE, 1, - EGL_RENDERABLE_TYPE, EGL_OPENGL_BIT, - EGL_NONE - }; - char win_title[] = "xeglgears (window/pixmap/pbuffer)"; - EGLint surface_type = EGL_WINDOW_BIT; - GLboolean printInfo = GL_FALSE; - GLboolean fullscreen = GL_FALSE; - EGLBoolean ret; - int i; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-display") == 0) { - dpyName = argv[i+1]; - i++; - } - else if (strcmp(argv[i], "-info") == 0) { - printInfo = GL_TRUE; - } - else if (strcmp(argv[i], "-fullscreen") == 0) { - fullscreen = GL_TRUE; - } - else if (strcmp(argv[i], "-pixmap") == 0) { - surface_type = EGL_PIXMAP_BIT; - } - else if (strcmp(argv[i], "-pbuffer") == 0) { - surface_type = EGL_PBUFFER_BIT; - } - else { - usage(); - return -1; - } - } - - /* set surface type */ - attribs[1] = surface_type; - - x_dpy = XOpenDisplay(dpyName); - if (!x_dpy) { - printf("Error: couldn't open display %s\n", - dpyName ? dpyName : getenv("DISPLAY")); - return -1; - } - - eglBindAPI(EGL_OPENGL_API); - - eman = egl_manager_new(x_dpy, attribs, printInfo); - if (!eman) { - XCloseDisplay(x_dpy); - return -1; - } - - snprintf(win_title, sizeof(win_title), "xeglgears (%s)", - (surface_type == EGL_WINDOW_BIT) ? "window" : - (surface_type == EGL_PIXMAP_BIT) ? "pixmap" : "pbuffer"); - - /* create surface(s) */ - switch (surface_type) { - case EGL_WINDOW_BIT: - ret = egl_manager_create_window(eman, win_title, winWidth, winHeight, - EGL_TRUE, fullscreen, NULL); - if (ret) - ret = eglMakeCurrent(eman->dpy, eman->win, eman->win, eman->ctx); - break; - case EGL_PIXMAP_BIT: - ret = (egl_manager_create_window(eman, win_title, winWidth, winHeight, - EGL_FALSE, fullscreen, NULL) && - egl_manager_create_pixmap(eman, eman->xwin, - EGL_TRUE, NULL)); - if (ret) - ret = eglMakeCurrent(eman->dpy, eman->pix, eman->pix, eman->ctx); - break; - case EGL_PBUFFER_BIT: - { - EGLint pbuf_attribs[] = { - EGL_WIDTH, winWidth, - EGL_HEIGHT, winHeight, - EGL_NONE - }; - ret = (egl_manager_create_window(eman, win_title, winWidth, winHeight, - EGL_FALSE, fullscreen, NULL) && - egl_manager_create_pixmap(eman, eman->xwin, - EGL_FALSE, NULL) && - egl_manager_create_pbuffer(eman, pbuf_attribs)); - if (ret) - ret = eglMakeCurrent(eman->dpy, eman->pbuf, eman->pbuf, eman->ctx); - } - break; - default: - ret = EGL_FALSE; - break; - } - - if (!ret) { - egl_manager_destroy(eman); - XCloseDisplay(x_dpy); - return -1; - } - - if (printInfo) { - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - printf("GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - } - - init(); - - /* Set initial projection/viewing transformation. - * We can't be sure we'll get a ConfigureNotify event when the window - * first appears. - */ - reshape(winWidth, winHeight); - - event_loop(eman, surface_type, winWidth, winHeight); - - glDeleteLists(gear1, 1); - glDeleteLists(gear2, 1); - glDeleteLists(gear3, 1); - - egl_manager_destroy(eman); - XCloseDisplay(x_dpy); - - return 0; -} diff --git a/progs/egl/xeglthreads.c b/progs/egl/xeglthreads.c deleted file mode 100644 index 508dbc0943..0000000000 --- a/progs/egl/xeglthreads.c +++ /dev/null @@ -1,773 +0,0 @@ -/* - * Copyright (C) 2000 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Ported to EGL by Chia-I Wu <olvaffe@gmail.com> - */ - - -/* - * This program tests EGL thread safety. - * Command line options: - * -p Open a display connection for each thread - * -l Enable application-side locking - * -n <num threads> Number of threads to create (default is 2) - * -display <display name> Specify X display (default is $DISPLAY) - * -t Use texture mapping - * - * Brian Paul 20 July 2000 - */ - - -/* - * Notes: - * - Each thread gets its own EGL context. - * - * - The EGL contexts share texture objects. - * - * - When 't' is pressed to update the texture image, the window/thread which - * has input focus is signalled to change the texture. The other threads - * should see the updated texture the next time they call glBindTexture. - */ - - -#if defined(PTHREADS) /* defined by Mesa on Linux and other platforms */ - -#include <assert.h> -#include <X11/Xlib.h> -#include <X11/Xutil.h> -#include <GL/gl.h> -#include <EGL/egl.h> -#include <math.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> -#include <pthread.h> - - -/* - * Each window/thread/context: - */ -struct winthread { - Display *Dpy; - int Index; - pthread_t Thread; - Window Win; - EGLDisplay Display; - EGLContext Context; - EGLSurface Surface; - float Angle; - int WinWidth, WinHeight; - GLboolean NewSize; - GLboolean Initialized; - GLboolean MakeNewTexture; -}; - - -#define MAX_WINTHREADS 100 -static struct winthread WinThreads[MAX_WINTHREADS]; -static int NumWinThreads = 0; -static volatile GLboolean ExitFlag = GL_FALSE; - -static GLboolean MultiDisplays = 0; -static GLboolean Locking = 0; -static GLboolean Texture = GL_FALSE; -static GLuint TexObj = 12; -static GLboolean Animate = GL_TRUE; - -static pthread_mutex_t Mutex; -static pthread_cond_t CondVar; -static pthread_mutex_t CondMutex; - - -static void -Error(const char *msg) -{ - fprintf(stderr, "Error: %s\n", msg); - exit(1); -} - - -static void -signal_redraw(void) -{ - pthread_mutex_lock(&CondMutex); - pthread_cond_broadcast(&CondVar); - pthread_mutex_unlock(&CondMutex); -} - - -static void -MakeNewTexture(struct winthread *wt) -{ -#define TEX_SIZE 128 - static float step = 0.0; - GLfloat image[TEX_SIZE][TEX_SIZE][4]; - GLint width; - int i, j; - - for (j = 0; j < TEX_SIZE; j++) { - for (i = 0; i < TEX_SIZE; i++) { - float dt = 5.0 * (j - 0.5 * TEX_SIZE) / TEX_SIZE; - float ds = 5.0 * (i - 0.5 * TEX_SIZE) / TEX_SIZE; - float r = dt * dt + ds * ds + step; - image[j][i][0] = - image[j][i][1] = - image[j][i][2] = 0.75 + 0.25 * cos(r); - image[j][i][3] = 1.0; - } - } - - step += 0.5; - - glBindTexture(GL_TEXTURE_2D, TexObj); - - glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, &width); - if (width) { - assert(width == TEX_SIZE); - /* sub-tex replace */ - glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, TEX_SIZE, TEX_SIZE, - GL_RGBA, GL_FLOAT, image); - } - else { - /* create new */ - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, TEX_SIZE, TEX_SIZE, 0, - GL_RGBA, GL_FLOAT, image); - } -} - - - -/* draw a colored cube */ -static void -draw_object(void) -{ - glPushMatrix(); - glScalef(0.75, 0.75, 0.75); - - glColor3f(1, 0, 0); - - if (Texture) { - glBindTexture(GL_TEXTURE_2D, TexObj); - glEnable(GL_TEXTURE_2D); - } - else { - glDisable(GL_TEXTURE_2D); - } - - glBegin(GL_QUADS); - - /* -X */ - glColor3f(0, 1, 1); - glTexCoord2f(0, 0); glVertex3f(-1, -1, -1); - glTexCoord2f(1, 0); glVertex3f(-1, 1, -1); - glTexCoord2f(1, 1); glVertex3f(-1, 1, 1); - glTexCoord2f(0, 1); glVertex3f(-1, -1, 1); - - /* +X */ - glColor3f(1, 0, 0); - glTexCoord2f(0, 0); glVertex3f(1, -1, -1); - glTexCoord2f(1, 0); glVertex3f(1, 1, -1); - glTexCoord2f(1, 1); glVertex3f(1, 1, 1); - glTexCoord2f(0, 1); glVertex3f(1, -1, 1); - - /* -Y */ - glColor3f(1, 0, 1); - glTexCoord2f(0, 0); glVertex3f(-1, -1, -1); - glTexCoord2f(1, 0); glVertex3f( 1, -1, -1); - glTexCoord2f(1, 1); glVertex3f( 1, -1, 1); - glTexCoord2f(0, 1); glVertex3f(-1, -1, 1); - - /* +Y */ - glColor3f(0, 1, 0); - glTexCoord2f(0, 0); glVertex3f(-1, 1, -1); - glTexCoord2f(1, 0); glVertex3f( 1, 1, -1); - glTexCoord2f(1, 1); glVertex3f( 1, 1, 1); - glTexCoord2f(0, 1); glVertex3f(-1, 1, 1); - - /* -Z */ - glColor3f(1, 1, 0); - glTexCoord2f(0, 0); glVertex3f(-1, -1, -1); - glTexCoord2f(1, 0); glVertex3f( 1, -1, -1); - glTexCoord2f(1, 1); glVertex3f( 1, 1, -1); - glTexCoord2f(0, 1); glVertex3f(-1, 1, -1); - - /* +Y */ - glColor3f(0, 0, 1); - glTexCoord2f(0, 0); glVertex3f(-1, -1, 1); - glTexCoord2f(1, 0); glVertex3f( 1, -1, 1); - glTexCoord2f(1, 1); glVertex3f( 1, 1, 1); - glTexCoord2f(0, 1); glVertex3f(-1, 1, 1); - - glEnd(); - - glPopMatrix(); -} - - -/* signal resize of given window */ -static void -resize(struct winthread *wt, int w, int h) -{ - wt->NewSize = GL_TRUE; - wt->WinWidth = w; - wt->WinHeight = h; - if (!Animate) - signal_redraw(); -} - - -/* - * We have an instance of this for each thread. - */ -static void -draw_loop(struct winthread *wt) -{ - while (!ExitFlag) { - - if (Locking) - pthread_mutex_lock(&Mutex); - - if (!wt->Initialized) { - eglMakeCurrent(wt->Display, wt->Surface, wt->Surface, wt->Context); - printf("xeglthreads: %d: GL_RENDERER = %s\n", wt->Index, - (char *) glGetString(GL_RENDERER)); - if (Texture /*&& wt->Index == 0*/) { - MakeNewTexture(wt); - } - wt->Initialized = GL_TRUE; - } - - if (Locking) - pthread_mutex_unlock(&Mutex); - - eglBindAPI(EGL_OPENGL_API); - if (eglGetCurrentContext() != wt->Context) { - printf("xeglthreads: current context %p != %p\n", - eglGetCurrentContext(), wt->Context); - } - - glEnable(GL_DEPTH_TEST); - - if (wt->NewSize) { - GLfloat w = (float) wt->WinWidth / (float) wt->WinHeight; - glViewport(0, 0, wt->WinWidth, wt->WinHeight); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-w, w, -1.0, 1.0, 1.5, 10); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0, 0, -2.5); - wt->NewSize = GL_FALSE; - } - - if (wt->MakeNewTexture) { - MakeNewTexture(wt); - wt->MakeNewTexture = GL_FALSE; - } - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glPushMatrix(); - glRotatef(wt->Angle, 0, 1, 0); - glRotatef(wt->Angle, 1, 0, 0); - glScalef(0.7, 0.7, 0.7); - draw_object(); - glPopMatrix(); - - if (Locking) - pthread_mutex_lock(&Mutex); - - eglSwapBuffers(wt->Display, wt->Surface); - - if (Locking) - pthread_mutex_unlock(&Mutex); - - if (Animate) { - usleep(5000); - } - else { - /* wait for signal to draw */ - pthread_mutex_lock(&CondMutex); - pthread_cond_wait(&CondVar, &CondMutex); - pthread_mutex_unlock(&CondMutex); - } - wt->Angle += 1.0; - } - eglMakeCurrent(wt->Display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); -} - - -static void -keypress(XEvent *event, struct winthread *wt) -{ - char buf[100]; - KeySym keySym; - XComposeStatus stat; - - XLookupString(&event->xkey, buf, sizeof(buf), &keySym, &stat); - - switch (keySym) { - case XK_Escape: - /* tell all threads to exit */ - if (!Animate) { - signal_redraw(); - } - ExitFlag = GL_TRUE; - /*printf("exit draw_loop %d\n", wt->Index);*/ - return; - case XK_t: - case XK_T: - if (Texture) { - wt->MakeNewTexture = GL_TRUE; - if (!Animate) - signal_redraw(); - } - break; - case XK_a: - case XK_A: - Animate = !Animate; - if (Animate) /* yes, prev Animate state! */ - signal_redraw(); - break; - case XK_s: - case XK_S: - if (!Animate) - signal_redraw(); - break; - default: - ; /* nop */ - } -} - - -/* - * The main process thread runs this loop. - * Single display connection for all threads. - */ -static void -event_loop(Display *dpy) -{ - XEvent event; - int i; - - assert(!MultiDisplays); - - while (!ExitFlag) { - - if (Locking) { - while (1) { - int k; - pthread_mutex_lock(&Mutex); - k = XPending(dpy); - if (k) { - XNextEvent(dpy, &event); - pthread_mutex_unlock(&Mutex); - break; - } - pthread_mutex_unlock(&Mutex); - usleep(5000); - } - } - else { - XNextEvent(dpy, &event); - } - - switch (event.type) { - case ConfigureNotify: - /* Find winthread for this event's window */ - for (i = 0; i < NumWinThreads; i++) { - struct winthread *wt = &WinThreads[i]; - if (event.xconfigure.window == wt->Win) { - resize(wt, event.xconfigure.width, - event.xconfigure.height); - break; - } - } - break; - case KeyPress: - for (i = 0; i < NumWinThreads; i++) { - struct winthread *wt = &WinThreads[i]; - if (event.xkey.window == wt->Win) { - keypress(&event, wt); - break; - } - } - break; - default: - /*no-op*/ ; - } - } -} - - -/* - * Separate display connection for each thread. - */ -static void -event_loop_multi(void) -{ - XEvent event; - int w = 0; - - assert(MultiDisplays); - - while (!ExitFlag) { - struct winthread *wt = &WinThreads[w]; - if (XPending(wt->Dpy)) { - XNextEvent(wt->Dpy, &event); - switch (event.type) { - case ConfigureNotify: - resize(wt, event.xconfigure.width, event.xconfigure.height); - break; - case KeyPress: - keypress(&event, wt); - break; - default: - ; /* nop */ - } - } - w = (w + 1) % NumWinThreads; - usleep(5000); - } -} - - - -/* - * we'll call this once for each thread, before the threads are created. - */ -static void -create_window(struct winthread *wt, EGLContext shareCtx) -{ - Window win; - EGLContext ctx; - EGLSurface surf; - EGLint attribs[] = { EGL_RED_SIZE, 1, - EGL_GREEN_SIZE, 1, - EGL_BLUE_SIZE, 1, - EGL_DEPTH_SIZE, 1, - EGL_NONE }; - EGLConfig config; - EGLint num_configs; - EGLint vid; - int scrnum; - XSetWindowAttributes attr; - unsigned long mask; - Window root; - XVisualInfo *visinfo, visTemplate; - int num_visuals; - int width = 160, height = 160; - int xpos = (wt->Index % 8) * (width + 10); - int ypos = (wt->Index / 8) * (width + 20); - - scrnum = DefaultScreen(wt->Dpy); - root = RootWindow(wt->Dpy, scrnum); - - if (!eglChooseConfig(wt->Display, attribs, &config, 1, &num_configs)) { - Error("Unable to choose an EGL config"); - } - - assert(config); - assert(num_configs > 0); - - if (!eglGetConfigAttrib(wt->Display, config, EGL_NATIVE_VISUAL_ID, &vid)) { - Error("Unable to get visual id of EGL config\n"); - } - - visTemplate.visualid = vid; - visinfo = XGetVisualInfo(wt->Dpy, VisualIDMask, - &visTemplate, &num_visuals); - if (!visinfo) { - Error("Unable to find RGB, Z, double-buffered visual"); - } - - /* window attributes */ - attr.background_pixel = 0; - attr.border_pixel = 0; - attr.colormap = XCreateColormap(wt->Dpy, root, visinfo->visual, AllocNone); - attr.event_mask = StructureNotifyMask | ExposureMask | KeyPressMask; - mask = CWBackPixel | CWBorderPixel | CWColormap | CWEventMask; - - win = XCreateWindow(wt->Dpy, root, xpos, ypos, width, height, - 0, visinfo->depth, InputOutput, - visinfo->visual, mask, &attr); - if (!win) { - Error("Couldn't create window"); - } - - XFree(visinfo); - - { - XSizeHints sizehints; - sizehints.x = xpos; - sizehints.y = ypos; - sizehints.width = width; - sizehints.height = height; - sizehints.flags = USSize | USPosition; - XSetNormalHints(wt->Dpy, win, &sizehints); - XSetStandardProperties(wt->Dpy, win, "xeglthreads", "xeglthreads", - None, (char **)NULL, 0, &sizehints); - } - - eglBindAPI(EGL_OPENGL_API); - - ctx = eglCreateContext(wt->Display, config, shareCtx, NULL); - if (!ctx) { - Error("Couldn't create EGL context"); - } - surf = eglCreateWindowSurface(wt->Display, config, win, NULL); - if (!surf) { - Error("Couldn't create EGL surface"); - } - - XMapWindow(wt->Dpy, win); - XSync(wt->Dpy, 0); - - /* save the info for this window/context */ - wt->Win = win; - wt->Context = ctx; - wt->Surface = surf; - wt->Angle = 0.0; - wt->WinWidth = width; - wt->WinHeight = height; - wt->NewSize = GL_TRUE; -} - - -/* - * Called by pthread_create() - */ -static void * -thread_function(void *p) -{ - struct winthread *wt = (struct winthread *) p; - draw_loop(wt); - return NULL; -} - - -/* - * called before exit to wait for all threads to finish - */ -static void -clean_up(void) -{ - int i; - - /* wait for threads to finish */ - for (i = 0; i < NumWinThreads; i++) { - pthread_join(WinThreads[i].Thread, NULL); - } - - for (i = 0; i < NumWinThreads; i++) { - eglDestroyContext(WinThreads[i].Display, WinThreads[i].Context); - XDestroyWindow(WinThreads[i].Dpy, WinThreads[i].Win); - } -} - - -static void -usage(void) -{ - printf("xeglthreads: test of EGL/GL thread safety (any key = exit)\n"); - printf("Usage:\n"); - printf(" xeglthreads [options]\n"); - printf("Options:\n"); - printf(" -display DISPLAYNAME Specify display string\n"); - printf(" -n NUMTHREADS Number of threads to create\n"); - printf(" -p Use a separate display connection for each thread\n"); - printf(" -l Use application-side locking\n"); - printf(" -t Enable texturing\n"); - printf("Keyboard:\n"); - printf(" Esc Exit\n"); - printf(" t Change texture image (requires -t option)\n"); - printf(" a Toggle animation\n"); - printf(" s Step rotation (when not animating)\n"); -} - - -int -main(int argc, char *argv[]) -{ - char *displayName = NULL; - int numThreads = 2; - Display *dpy = NULL; - EGLDisplay *egl_dpy = NULL; - int i; - Status threadStat; - - if (argc == 1) { - usage(); - } - else { - int i; - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-display") == 0 && i + 1 < argc) { - displayName = argv[i + 1]; - i++; - } - else if (strcmp(argv[i], "-p") == 0) { - MultiDisplays = 1; - } - else if (strcmp(argv[i], "-l") == 0) { - Locking = 1; - } - else if (strcmp(argv[i], "-t") == 0) { - Texture = 1; - } - else if (strcmp(argv[i], "-n") == 0 && i + 1 < argc) { - numThreads = atoi(argv[i + 1]); - if (numThreads < 1) - numThreads = 1; - else if (numThreads > MAX_WINTHREADS) - numThreads = MAX_WINTHREADS; - i++; - } - else { - usage(); - exit(1); - } - } - } - - if (Locking) - printf("xeglthreads: Using explicit locks around Xlib calls.\n"); - else - printf("xeglthreads: No explict locking.\n"); - - if (MultiDisplays) - printf("xeglthreads: Per-thread display connections.\n"); - else - printf("xeglthreads: Single display connection.\n"); - - /* - * VERY IMPORTANT: call XInitThreads() before any other Xlib functions. - */ - if (!MultiDisplays) { - if (!Locking) { - threadStat = XInitThreads(); - if (threadStat) { - printf("XInitThreads() returned %d (success)\n", - (int) threadStat); - } - else { - printf("XInitThreads() returned 0 " - "(failure- this program may fail)\n"); - } - } - - dpy = XOpenDisplay(displayName); - if (!dpy) { - fprintf(stderr, "Unable to open display %s\n", - XDisplayName(displayName)); - return -1; - } - egl_dpy = eglGetDisplay(dpy); - if (!egl_dpy) { - fprintf(stderr, "Unable to get EGL display\n"); - XCloseDisplay(dpy); - return -1; - } - if (!eglInitialize(egl_dpy, NULL, NULL)) { - fprintf(stderr, "Unable to initialize EGL display\n"); - return -1; - } - } - - pthread_mutex_init(&Mutex, NULL); - pthread_mutex_init(&CondMutex, NULL); - pthread_cond_init(&CondVar, NULL); - - printf("xeglthreads: creating windows\n"); - - NumWinThreads = numThreads; - - /* Create the EGL windows and contexts */ - for (i = 0; i < numThreads; i++) { - EGLContext share; - - if (MultiDisplays) { - WinThreads[i].Dpy = XOpenDisplay(displayName); - assert(WinThreads[i].Dpy); - WinThreads[i].Display = eglGetDisplay(WinThreads[i].Dpy); - assert(eglInitialize(WinThreads[i].Display, NULL, NULL)); - } - else { - WinThreads[i].Dpy = dpy; - WinThreads[i].Display = egl_dpy; - } - WinThreads[i].Index = i; - WinThreads[i].Initialized = GL_FALSE; - - share = (Texture && i > 0) ? WinThreads[0].Context : 0; - - create_window(&WinThreads[i], share); - } - - printf("xeglthreads: creating threads\n"); - - /* Create the threads */ - for (i = 0; i < numThreads; i++) { - pthread_create(&WinThreads[i].Thread, NULL, thread_function, - (void*) &WinThreads[i]); - printf("xeglthreads: Created thread %p\n", - (void *) WinThreads[i].Thread); - } - - if (MultiDisplays) - event_loop_multi(); - else - event_loop(dpy); - - clean_up(); - - if (MultiDisplays) { - for (i = 0; i < numThreads; i++) { - eglTerminate(WinThreads[i].Display); - XCloseDisplay(WinThreads[i].Dpy); - } - } - else { - eglTerminate(egl_dpy); - XCloseDisplay(dpy); - } - - return 0; -} - - -#else /* PTHREADS */ - - -#include <stdio.h> - -int -main(int argc, char *argv[]) -{ - printf("Sorry, this program wasn't compiled with PTHREADS defined.\n"); - return 0; -} - - -#endif /* PTHREADS */ diff --git a/progs/fp/.gitignore b/progs/fp/.gitignore deleted file mode 100644 index aa51f76c9b..0000000000 --- a/progs/fp/.gitignore +++ /dev/null @@ -1,43 +0,0 @@ -point-position -readtex.c -readtex.h -tri-abs -tri-add -tri-cmp -tri-cos -tri-depth -tri-depth2 -tri-depthwrite -tri-depthwrite2 -tri-dp3 -tri-dp4 -tri-dph -tri-dst -tri-ex2 -tri-flr -tri-frc -tri-kil -tri-lg2 -tri-lit -tri-lrp -tri-mad -tri-max -tri-min -tri-mov -tri-mul -tri-param -tri-position -tri-pow -tri-rcp -tri-rsq -tri-scs -tri-sge -tri-sge2 -tri-sin -tri-slt -tri-sub -tri-swz -tri-swz2 -tri-tex -tri-xpd -fp-tri diff --git a/progs/fp/Makefile b/progs/fp/Makefile deleted file mode 100755 index 681928cf26..0000000000 --- a/progs/fp/Makefile +++ /dev/null @@ -1,98 +0,0 @@ -# progs/tests/Makefile - - -# These programs aren't intended to be included with the normal distro. -# They're not too interesting but they're good for testing. - -TOP = ../.. -include $(TOP)/configs/current - - -LIBS = -L$(TOP)/$(LIB_DIR) -l$(GLUT_LIB) -l$(GLEW_LIB) -l$(GLU_LIB) -l$(GL_LIB) $(APP_LIB_DEPS) - -SOURCES = \ - tri-tex.c \ - point-position.c \ - tri-depth.c \ - tri-depth2.c \ - tri-depthwrite.c \ - tri-depthwrite2.c \ - tri-param.c \ - fp-tri.c - -NOTDONE=\ - tri-txb.c \ - tri-txp.c \ - tri-depthwrite.c \ - tri-fogoption.c - - -PROGS = $(SOURCES:%.c=%) - -INCLUDES = -I. -I$(TOP)/include -I../samples - -UTIL_FILES = readtex.h readtex.c - - -##### RULES ##### - -.SUFFIXES: -.SUFFIXES: .c - -.c: - $(APP_CC) $(INCLUDES) $(CFLAGS) $(LDFLAGS) $< $(LIBS) -o $@ - -.c.o: - $(APP_CC) -c $(INCLUDES) $(CFLAGS) $(DEFINES) $< -o $@ - -.S.o: - $(APP_CC) -c $(INCLUDES) $(CFLAGS) $(DEFINES) $< -o $@ - - -##### TARGETS ##### - -default: $(UTIL_FILES) $(PROGS) - -clean: - -rm -f $(PROGS) - -rm -f *.o - -rm -f getproclist.h - - -# auto code generation -getprocaddress: getprocaddress.c getproclist.h - -getproclist.h: $(TOP)/src/mesa/glapi/gl_API.xml getprocaddress.c getprocaddress.py - python getprocaddress.py > getproclist.h - - -texrect: texrect.o readtex.o - $(CC) $(CFLAGS) $(LDFLAGS) texrect.o readtex.o $(LIBS) -o $@ -# $(APP_CC) texrect.o readtex.o $(LIBS) -o $@ - -texrect.o: texrect.c readtex.h - $(APP_CC) -c $(INCLUDES) $(CFLAGS) $(DEFINES) $< -o $@ - -invert: invert.o readtex.o - $(CC) $(CFLAGS) $(LDFLAGS) invert.o readtex.o $(LIBS) -o $@ -# $(APP_CC) invert.o readtex.o $(LIBS) -o $@ - -invert.o: invert.c readtex.h - $(APP_CC) -c $(INCLUDES) $(CFLAGS) $(DEFINES) $< -o $@ - -readtex.o: readtex.c - $(APP_CC) -c $(INCLUDES) $(CFLAGS) $(DEFINES) $< -o $@ - - -readtex.h: $(TOP)/progs/util/readtex.h - ln -s $(TOP)/progs/util/readtex.h . - -readtex.c: $(TOP)/progs/util/readtex.c - ln -s $(TOP)/progs/util/readtex.c . - - - - -# Emacs tags -tags: - etags `find . -name \*.[ch]` `find ../include` diff --git a/progs/fp/SConscript b/progs/fp/SConscript deleted file mode 100644 index 69614e1a9e..0000000000 --- a/progs/fp/SConscript +++ /dev/null @@ -1,29 +0,0 @@ -Import('env') - -if not env['GLUT']: - Return() - -env = env.Clone() - -env.Prepend(CPPPATH = [ - '../util', -]) - -env.Prepend(LIBS = ['$GLUT_LIB']) - -progs = [ - 'fp-tri', - 'tri-depth', - 'tri-depth2', - 'tri-depthwrite', - 'tri-depthwrite2', - 'tri-param', - 'tri-tex', - 'point-position', -] - -for prog in progs: - env.Program( - target = prog, - source = [prog + '.c'], - ) diff --git a/progs/fp/abs.txt b/progs/fp/abs.txt deleted file mode 100644 index 61ef952b05..0000000000 --- a/progs/fp/abs.txt +++ /dev/null @@ -1,5 +0,0 @@ -!!ARBfp1.0 -TEMP R0; -SUB R0, {0.5}.x, fragment.color; -ABS result.color, R0; -END diff --git a/progs/fp/add-sat.txt b/progs/fp/add-sat.txt deleted file mode 100644 index 2253efb085..0000000000 --- a/progs/fp/add-sat.txt +++ /dev/null @@ -1,6 +0,0 @@ -!!ARBfp1.0 -TEMP R0; -MOV R0, fragment.color; -ADD_SAT R0, R0, R0; -MUL result.color, {0.5}.x, R0; -END diff --git a/progs/fp/add-swz.txt b/progs/fp/add-swz.txt deleted file mode 100644 index 5ec51bcb84..0000000000 --- a/progs/fp/add-swz.txt +++ /dev/null @@ -1,5 +0,0 @@ -!!ARBfp1.0 -TEMP R0; -ADD R0, fragment.color, fragment.color; -ADD result.color, R0.xxxx, R0; -END diff --git a/progs/fp/add.txt b/progs/fp/add.txt deleted file mode 100644 index 031076df0f..0000000000 --- a/progs/fp/add.txt +++ /dev/null @@ -1,5 +0,0 @@ -!!ARBfp1.0 -TEMP R0; -ADD R0, fragment.color, fragment.color; -ADD result.color, R0, R0; -END diff --git a/progs/fp/cmp.txt b/progs/fp/cmp.txt deleted file mode 100644 index 78451609a3..0000000000 --- a/progs/fp/cmp.txt +++ /dev/null @@ -1,5 +0,0 @@ -!!ARBfp1.0 -TEMP R0; -SUB R0, {0.5}.x, fragment.color; -CMP result.color, R0, fragment.color, {0.0}.x; -END diff --git a/progs/fp/cos.txt b/progs/fp/cos.txt deleted file mode 100644 index d51b13b63a..0000000000 --- a/progs/fp/cos.txt +++ /dev/null @@ -1,8 +0,0 @@ -!!ARBfp1.0 -TEMP R0; -MUL R0, fragment.color, {3.14}.x; -COS result.color.x, R0.x; -COS result.color.y, R0.y; -COS result.color.z, R0.z; -END - diff --git a/progs/fp/dp3.txt b/progs/fp/dp3.txt deleted file mode 100644 index 75532f88a7..0000000000 --- a/progs/fp/dp3.txt +++ /dev/null @@ -1,4 +0,0 @@ -!!ARBfp1.0 -TEMP R0; -DP3 result.color, fragment.color, fragment.color; -END diff --git a/progs/fp/dp4.txt b/progs/fp/dp4.txt deleted file mode 100644 index 8d09c8dbf6..0000000000 --- a/progs/fp/dp4.txt +++ /dev/null @@ -1,4 +0,0 @@ -!!ARBfp1.0 -TEMP R0; -DP4 result.color, fragment.color.xxxx, fragment.color; -END diff --git a/progs/fp/dph.txt b/progs/fp/dph.txt deleted file mode 100644 index 6eb59a410d..0000000000 --- a/progs/fp/dph.txt +++ /dev/null @@ -1,4 +0,0 @@ -!!ARBfp1.0 -TEMP R0; -DPH result.color, fragment.color, fragment.color.xyzx; -END diff --git a/progs/fp/dst.txt b/progs/fp/dst.txt deleted file mode 100644 index 6ebabbd5ea..0000000000 --- a/progs/fp/dst.txt +++ /dev/null @@ -1,3 +0,0 @@ -!!ARBfp1.0 -DST result.color, fragment.color, fragment.color; -END diff --git a/progs/fp/ex2.txt b/progs/fp/ex2.txt deleted file mode 100644 index b540f7b192..0000000000 --- a/progs/fp/ex2.txt +++ /dev/null @@ -1,5 +0,0 @@ -!!ARBfp1.0 -TEMP R0; -EX2 R0, fragment.color.x; -SUB result.color, R0, {1.0}.x; -END diff --git a/progs/fp/flr.txt b/progs/fp/flr.txt deleted file mode 100644 index c3479c7bd5..0000000000 --- a/progs/fp/flr.txt +++ /dev/null @@ -1,5 +0,0 @@ -!!ARBfp1.0 -TEMP R0; -ADD R0, fragment.color, {0.5}.x; -FLR result.color, R0; -END diff --git a/progs/fp/fp-tri.c b/progs/fp/fp-tri.c deleted file mode 100644 index 26af66ad84..0000000000 --- a/progs/fp/fp-tri.c +++ /dev/null @@ -1,256 +0,0 @@ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> - -#ifndef WIN32 -#include <unistd.h> -#include <signal.h> -#endif - -#include <GL/glew.h> -#include <GL/glut.h> - -#include "readtex.c" - - -#define TEXTURE_FILE "../images/bw.rgb" - -unsigned show_fps = 0; -unsigned int frame_cnt = 0; -void alarmhandler(int); -static const char *filename = NULL; - -static void usage(char *name) -{ - fprintf(stderr, "usage: %s [ options ] shader_filename\n", name); -#ifndef WIN32 - fprintf(stderr, "\n" ); - fprintf(stderr, "options:\n"); - fprintf(stderr, " -fps show frames per second\n"); -#endif -} - -#ifndef WIN32 -void alarmhandler (int sig) -{ - if (sig == SIGALRM) { - printf("%d frames in 5.0 seconds = %.3f FPS\n", frame_cnt, - frame_cnt / 5.0); - - frame_cnt = 0; - } - signal(SIGALRM, alarmhandler); - alarm(5); -} -#endif - -static void args(int argc, char *argv[]) -{ - GLint i; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-fps") == 0) { - show_fps = 1; - } - else if (i == argc - 1) { - filename = argv[i]; - } - else { - usage(argv[0]); - exit(1); - } - } - - if (!filename) { - usage(argv[0]); - exit(1); - } -} - -static void Init( void ) -{ - GLuint Texture; - GLint errno; - GLuint prognum; - char buf[4096]; - GLuint sz; - FILE *f; - - if ((f = fopen(filename, "r")) == NULL) { - fprintf(stderr, "Couldn't open %s\n", filename); - exit(1); - } - - sz = fread(buf, 1, sizeof(buf), f); - if (!feof(f)) { - fprintf(stderr, "file too long\n"); - exit(1); - } - fprintf(stderr, "%.*s\n", sz, buf); - - if (!GLEW_ARB_fragment_program) { - printf("Error: GL_ARB_fragment_program not supported!\n"); - exit(1); - } - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - - /* Setup the fragment program */ - glGenProgramsARB(1, &prognum); - glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, prognum); - glProgramStringARB(GL_FRAGMENT_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, - sz, (const GLubyte *)buf); - - errno = glGetError(); - printf("glGetError = 0x%x\n", errno); - if (errno != GL_NO_ERROR) { - GLint errorpos; - - glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &errorpos); - printf("errorpos: %d\n", errorpos); - printf("glError(GL_PROGRAM_ERROR_STRING_ARB) = %s\n", - (char *) glGetString(GL_PROGRAM_ERROR_STRING_ARB)); - } - glEnable(GL_FRAGMENT_PROGRAM_ARB); - - - /* Load texture */ - glGenTextures(1, &Texture); - glBindTexture(GL_TEXTURE_2D, Texture); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - if (!LoadRGBMipmaps(TEXTURE_FILE, GL_RGB)) { - printf("Error: couldn't load texture image file %s\n", TEXTURE_FILE); - exit(1); - } - - - glGenTextures(1, &Texture); - glActiveTextureARB(GL_TEXTURE0_ARB + 1); - glBindTexture(GL_TEXTURE_2D, Texture); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - - { - GLubyte data[32][32]; - int width = 32; - int height = 32; - int i; - int j; - - for (i = 0; i < 32; i++) - for (j = 0; j < 32; j++) - { - /** - ** +-----------+ - ** | W | - ** | +-----+ | - ** | | | | - ** | | B | | - ** | | | | - ** | +-----+ | - ** | | - ** +-----------+ - **/ - int i2 = i - height / 2; - int j2 = j - width / 2; - int h8 = height / 8; - int w8 = width / 8; - if ( -h8 <= i2 && i2 <= h8 && -w8 <= j2 && j2 <= w8 ) { - data[i][j] = 0x00; - } else if ( -2 * h8 <= i2 && i2 <= 2 * h8 && -2 * w8 <= j2 && j2 <= 2 * w8 ) { - data[i][j] = 0x55; - } else if ( -3 * h8 <= i2 && i2 <= 3 * h8 && -3 * w8 <= j2 && j2 <= 3 * w8 ) { - data[i][j] = 0xaa; - } else { - data[i][j] = 0xff; - } - } - - glTexImage2D( GL_TEXTURE_2D, 0, - GL_ALPHA8, - 32, 32, 0, - GL_ALPHA, GL_UNSIGNED_BYTE, data ); - } - - - glClearColor(.1, .3, .5, 0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Display(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glProgramLocalParameter4fARB(GL_FRAGMENT_PROGRAM_ARB, 0, 1.0, 1.0, 0.0, 0.0); - glProgramLocalParameter4fARB(GL_FRAGMENT_PROGRAM_ARB, 1, 0.0, 0.0, 1.0, 1.0); - glBegin(GL_TRIANGLES); - - glColor3f(0,0,1); - glTexCoord3f(1,1,0); - glVertex3f( 0.9, -0.9, -30.0); - - glColor3f(1,0,0); - glTexCoord3f(1,-1,0); - glVertex3f( 0.9, 0.9, -30.0); - - glColor3f(0,1,0); - glTexCoord3f(-1,0,0); - glVertex3f(-0.9, 0.0, -30.0); - glEnd(); - - glFlush(); - if (show_fps) { - ++frame_cnt; - glutPostRedisplay(); - } -} - - -int main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitWindowPosition(0, 0); - glutInitWindowSize(250, 250); - glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE | GLUT_DEPTH); - args(argc, argv); - glutCreateWindow(filename); - glewInit(); - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Display); - Init(); -#ifndef WIN32 - if (show_fps) { - signal(SIGALRM, alarmhandler); - alarm(5); - } -#endif - glutMainLoop(); - return 0; -} diff --git a/progs/fp/frc.txt b/progs/fp/frc.txt deleted file mode 100644 index efacaa8f92..0000000000 --- a/progs/fp/frc.txt +++ /dev/null @@ -1,5 +0,0 @@ -!!ARBfp1.0 -TEMP R0; -MUL R0, fragment.color, {3.0}.x; -FRC result.color, R0; -END diff --git a/progs/fp/kil-pos.txt b/progs/fp/kil-pos.txt deleted file mode 100644 index 5ff4f6f2c8..0000000000 --- a/progs/fp/kil-pos.txt +++ /dev/null @@ -1,9 +0,0 @@ -!!ARBfp1.0 -TEMP R0; -SUB R0.xy, fragment.position, {125}.x; -MOV R0.zw, {0}.x; -DP3 R0, R0, R0; -SUB R0.x, R0, {10000}.x; -KIL -R0.x; -MOV result.color, fragment.color; -END diff --git a/progs/fp/kil-texcoord-sgt.txt b/progs/fp/kil-texcoord-sgt.txt deleted file mode 100644 index c74fd10dac..0000000000 --- a/progs/fp/kil-texcoord-sgt.txt +++ /dev/null @@ -1,8 +0,0 @@ -!!ARBfp1.0 -TEMP R0; -MUL R0.xy, fragment.texcoord[0], fragment.texcoord[0]; -ADD R0.x, R0.x, R0.y; -SGE R0.y, R0.x, fragment.texcoord[0].w; -KIL -R0.y; -MOV result.color, fragment.color; -END diff --git a/progs/fp/kil.txt b/progs/fp/kil.txt deleted file mode 100644 index d95deb0a9e..0000000000 --- a/progs/fp/kil.txt +++ /dev/null @@ -1,6 +0,0 @@ -!!ARBfp1.0 -TEMP R0; -SUB R0, fragment.color, {0.5,0,0,0}; -KIL R0; -MOV result.color, R0; -END diff --git a/progs/fp/lg2.txt b/progs/fp/lg2.txt deleted file mode 100644 index 6707d7cb6d..0000000000 --- a/progs/fp/lg2.txt +++ /dev/null @@ -1,5 +0,0 @@ -!!ARBfp1.0 -TEMP R0; -MUL R0, fragment.color, {4.0}.x; -LG2 result.color, R0.x; -END diff --git a/progs/fp/lit.txt b/progs/fp/lit.txt deleted file mode 100644 index 333c50d3cc..0000000000 --- a/progs/fp/lit.txt +++ /dev/null @@ -1,5 +0,0 @@ -!!ARBfp1.0 -TEMP R0; -SUB R0, {0.5}.x, fragment.color; -LIT result.color, R0; -END diff --git a/progs/fp/local.txt b/progs/fp/local.txt deleted file mode 100644 index 6cb2a2f13c..0000000000 --- a/progs/fp/local.txt +++ /dev/null @@ -1,11 +0,0 @@ -!!ARBfp1.0 -TEMP R0; -PARAM c[4] = { { 0, 0, 0, 0 }, - program.local[0..1], - { 1, 1, 1, 1 } }; -MOV R0, c[1]; -SUB R0, R0, c[0]; -ADD R0, R0, c[2]; -MUL R0, R0, c[3]; -MOV result.color, R0; -END diff --git a/progs/fp/lrp.txt b/progs/fp/lrp.txt deleted file mode 100644 index 56cb5f5152..0000000000 --- a/progs/fp/lrp.txt +++ /dev/null @@ -1,4 +0,0 @@ -!!ARBfp1.0 -TEMP R0, R1; -LRP result.color, fragment.color.z, {1,0,0,1}, {0,1,0,1}; -END diff --git a/progs/fp/mad.txt b/progs/fp/mad.txt deleted file mode 100644 index 77ffac49cf..0000000000 --- a/progs/fp/mad.txt +++ /dev/null @@ -1,4 +0,0 @@ -!!ARBfp1.0 -TEMP R0, R1; -MAD result.color, fragment.color.z, {1,0,0,1}, fragment.color; -END diff --git a/progs/fp/max.txt b/progs/fp/max.txt deleted file mode 100644 index 0f3bffd6a5..0000000000 --- a/progs/fp/max.txt +++ /dev/null @@ -1,3 +0,0 @@ -!!ARBfp1.0 -MAX result.color, {0.5}.x, fragment.color; -END diff --git a/progs/fp/min.txt b/progs/fp/min.txt deleted file mode 100644 index 06d8f911c3..0000000000 --- a/progs/fp/min.txt +++ /dev/null @@ -1,3 +0,0 @@ -!!ARBfp1.0 -MIN result.color, {0.5}.x, fragment.color; -END diff --git a/progs/fp/mov-alias.txt b/progs/fp/mov-alias.txt deleted file mode 100644 index 5f04e9c76e..0000000000 --- a/progs/fp/mov-alias.txt +++ /dev/null @@ -1,6 +0,0 @@ -!!ARBfp1.0 -TEMP R0; -MOV R0, fragment.color; -MOV R0, R0.zyxw; -MOV result.color, R0; -END diff --git a/progs/fp/mov.txt b/progs/fp/mov.txt deleted file mode 100644 index 4c67baec5e..0000000000 --- a/progs/fp/mov.txt +++ /dev/null @@ -1,3 +0,0 @@ -!!ARBfp1.0 -MOV result.color, fragment.color; -END diff --git a/progs/fp/mul-alias.txt b/progs/fp/mul-alias.txt deleted file mode 100644 index cf7d359e78..0000000000 --- a/progs/fp/mul-alias.txt +++ /dev/null @@ -1,6 +0,0 @@ -!!ARBfp1.0 -TEMP R0; -MOV R0, fragment.color; -MUL R0, R0.zyxw, fragment.color; -MOV result.color, R0; -END diff --git a/progs/fp/mul-swz.txt b/progs/fp/mul-swz.txt deleted file mode 100644 index 7ef2f58633..0000000000 --- a/progs/fp/mul-swz.txt +++ /dev/null @@ -1,3 +0,0 @@ -!!ARBfp1.0 -MUL result.color, fragment.color.zyxw, fragment.color; -END diff --git a/progs/fp/mul.txt b/progs/fp/mul.txt deleted file mode 100644 index 907155de78..0000000000 --- a/progs/fp/mul.txt +++ /dev/null @@ -1,3 +0,0 @@ -!!ARBfp1.0 -MUL result.color, fragment.color, fragment.color; -END diff --git a/progs/fp/negate.txt b/progs/fp/negate.txt deleted file mode 100644 index 3d00a04a58..0000000000 --- a/progs/fp/negate.txt +++ /dev/null @@ -1,6 +0,0 @@ -!!ARBfp1.0 -# this should result in fragment color passing through unchanged -TEMP R0; -ADD R0, fragment.color, fragment.color; -ADD result.color, R0, -fragment.color; -END diff --git a/progs/fp/point-position.c b/progs/fp/point-position.c deleted file mode 100644 index 1ae753c1d0..0000000000 --- a/progs/fp/point-position.c +++ /dev/null @@ -1,120 +0,0 @@ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glew.h> -#include <GL/glut.h> - - - -static void Init( void ) -{ - static const char *modulate2D = - "!!ARBfp1.0\n" - "MUL result.color, fragment.position, {.005}.x; \n" - "END" - ; - GLuint modulateProg; - - if (!GLEW_ARB_fragment_program) { - printf("Error: GL_ARB_fragment_program not supported!\n"); - exit(1); - } - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - - /* Setup the fragment program */ - glGenProgramsARB(1, &modulateProg); - glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, modulateProg); - glProgramStringARB(GL_FRAGMENT_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, - strlen(modulate2D), (const GLubyte *)modulate2D); - - printf("glGetError = 0x%x\n", (int) glGetError()); - printf("glError(GL_PROGRAM_ERROR_STRING_ARB) = %s\n", - (char *) glGetString(GL_PROGRAM_ERROR_STRING_ARB)); - - glEnable(GL_FRAGMENT_PROGRAM_ARB); - - glClearColor(.3, .3, .3, 0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - -#if 0 - glBegin(GL_QUADS); - glTexCoord2f(1,0); - glVertex3f( 0.9, -0.9, -30.0); - glTexCoord2f(1,1); - glVertex3f( 0.9, 0.9, -30.0); - glTexCoord2f(0,1); - glVertex3f(-0.9, 0.9, -30.0); - glTexCoord2f(0,0); - glVertex3f(-0.9, -0.9, -30.0); - glEnd(); -#else - glPointSize(100); - glBegin(GL_POINTS); - glColor3f(0,0,1); - glVertex3f( 0, 0, -30.0); - glEnd(); -#endif - - glFlush(); - - -} - - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB; - type |= GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow("First Tri") == GL_FALSE) { - exit(1); - } - - glewInit(); - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/fp/position.txt b/progs/fp/position.txt deleted file mode 100644 index 1875897d78..0000000000 --- a/progs/fp/position.txt +++ /dev/null @@ -1,4 +0,0 @@ -!!ARBfp1.0 -MOV result.color, {0}.x; -MUL result.color.xy, fragment.position, {.005}.x; -END diff --git a/progs/fp/pow.txt b/progs/fp/pow.txt deleted file mode 100644 index 35c738556e..0000000000 --- a/progs/fp/pow.txt +++ /dev/null @@ -1,4 +0,0 @@ -!!ARBfp1.0 -TEMP R0; -POW result.color, fragment.color.x, fragment.color.y; -END diff --git a/progs/fp/rcp.txt b/progs/fp/rcp.txt deleted file mode 100644 index 122161c49e..0000000000 --- a/progs/fp/rcp.txt +++ /dev/null @@ -1,5 +0,0 @@ -!!ARBfp1.0 -TEMP R0; -ADD R0, fragment.color.x, fragment.color.x; -RCP result.color, R0.x; -END diff --git a/progs/fp/rsq.txt b/progs/fp/rsq.txt deleted file mode 100644 index b28de4bdb6..0000000000 --- a/progs/fp/rsq.txt +++ /dev/null @@ -1,5 +0,0 @@ -!!ARBfp1.0 -TEMP R0; -MUL R0, fragment.color, {3.0}.x; -RSQ result.color, R0.x; -END diff --git a/progs/fp/run.sh b/progs/fp/run.sh deleted file mode 100755 index 480f8108a3..0000000000 --- a/progs/fp/run.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh - -for i in *.txt ; do -echo $i -./fp-tri $i -done - diff --git a/progs/fp/scs.txt b/progs/fp/scs.txt deleted file mode 100644 index 5a8c9f16e9..0000000000 --- a/progs/fp/scs.txt +++ /dev/null @@ -1,5 +0,0 @@ -!!ARBfp1.0 -TEMP R0; -MUL R0, fragment.color, {3.14}.x; -SCS result.color, R0.x; -END diff --git a/progs/fp/sge.txt b/progs/fp/sge.txt deleted file mode 100644 index 5385692467..0000000000 --- a/progs/fp/sge.txt +++ /dev/null @@ -1,3 +0,0 @@ -!!ARBfp1.0 -SGE result.color, {0.5}.x, fragment.color; -END diff --git a/progs/fp/sge2.txt b/progs/fp/sge2.txt deleted file mode 100644 index e02a50d477..0000000000 --- a/progs/fp/sge2.txt +++ /dev/null @@ -1,8 +0,0 @@ -!!ARBfp1.0 -TEMP R0; -TEMP R1; -SGE R0, fragment.color, fragment.color.yzxw; -SGE R1, fragment.color, fragment.color.zxyw; -MUL R0, R0, R1; -MUL result.color, R0, fragment.color; -END diff --git a/progs/fp/sin.txt b/progs/fp/sin.txt deleted file mode 100644 index 4a8cdb69f9..0000000000 --- a/progs/fp/sin.txt +++ /dev/null @@ -1,8 +0,0 @@ -!!ARBfp1.0 -TEMP R0; -MUL R0, fragment.color, {3.14}.x; -MOV result.color, {0.0}.x; -SIN result.color.x, R0.x; -SIN result.color.y, R0.y; -SIN result.color.z, R0.z; -END diff --git a/progs/fp/slt.txt b/progs/fp/slt.txt deleted file mode 100644 index a3b3ff5656..0000000000 --- a/progs/fp/slt.txt +++ /dev/null @@ -1,3 +0,0 @@ -!!ARBfp1.0 -SLT result.color, {0.5}.x, fragment.color; -END diff --git a/progs/fp/sub.txt b/progs/fp/sub.txt deleted file mode 100644 index b4e5cc0e9f..0000000000 --- a/progs/fp/sub.txt +++ /dev/null @@ -1,3 +0,0 @@ -!!ARBfp1.0 -SUB result.color, fragment.color.yzxw, fragment.color; -END diff --git a/progs/fp/swz.txt b/progs/fp/swz.txt deleted file mode 100644 index e28f112b14..0000000000 --- a/progs/fp/swz.txt +++ /dev/null @@ -1,3 +0,0 @@ -!!ARBfp1.0 -SWZ result.color, fragment.color, 1,x,y,z; -END diff --git a/progs/fp/swz2.txt b/progs/fp/swz2.txt deleted file mode 100644 index 5c12b84815..0000000000 --- a/progs/fp/swz2.txt +++ /dev/null @@ -1,4 +0,0 @@ -!!ARBfp1.0 -TEMP R0, R1; -SWZ result.color, fragment.color, 1, 0, 0, 1; -END diff --git a/progs/fp/swz3.txt b/progs/fp/swz3.txt deleted file mode 100644 index 382f5880d3..0000000000 --- a/progs/fp/swz3.txt +++ /dev/null @@ -1,5 +0,0 @@ -!!ARBfp1.0 -TEMP R0, R1; -MOV R0, -fragment.color; -SWZ result.color, R0, -y, -x, z, 1; -END diff --git a/progs/fp/tex-pos-kil-1.txt b/progs/fp/tex-pos-kil-1.txt deleted file mode 100644 index 3f01e79ffe..0000000000 --- a/progs/fp/tex-pos-kil-1.txt +++ /dev/null @@ -1,7 +0,0 @@ -!!ARBfp1.0 -TEMP R0; -MUL R0, fragment.position, {0.03125}.x; -TEX R0, R0, texture[1], 2D; -KIL -R0; -MOV result.color, fragment.color; -END diff --git a/progs/fp/tex-pos-kil.txt b/progs/fp/tex-pos-kil.txt deleted file mode 100644 index b7aaa9f7c8..0000000000 --- a/progs/fp/tex-pos-kil.txt +++ /dev/null @@ -1,8 +0,0 @@ -!!ARBfp1.0 -TEMP R0; -MUL R0, fragment.position, {0.008}.x; -TEX R0, R0, texture[0], 2D; -SUB R0, R0, {0.25}.x; -KIL R0.xyzz; -MOV result.color, fragment.color; -END diff --git a/progs/fp/tex-pos.txt b/progs/fp/tex-pos.txt deleted file mode 100644 index b969f423f5..0000000000 --- a/progs/fp/tex-pos.txt +++ /dev/null @@ -1,6 +0,0 @@ -!!ARBfp1.0 -TEMP R0; -MOV R0, {0.0}.x; -MUL R0.xy, fragment.position, {0.008}.x; -TEX result.color, R0, texture[0], 2D; -END diff --git a/progs/fp/tex.txt b/progs/fp/tex.txt deleted file mode 100644 index b3a885d9e0..0000000000 --- a/progs/fp/tex.txt +++ /dev/null @@ -1,3 +0,0 @@ -!!ARBfp1.0 -TEX result.color, fragment.color, texture[0], 2D; -END diff --git a/progs/fp/tri-depth.c b/progs/fp/tri-depth.c deleted file mode 100644 index a9f3a6a5be..0000000000 --- a/progs/fp/tri-depth.c +++ /dev/null @@ -1,110 +0,0 @@ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glew.h> -#include <GL/glut.h> - - - -static void Init( void ) -{ - /* scale of 10.0 gives me a visible result on nv hardware. - */ - static const char *modulate2D = - "!!ARBfp1.0\n" - "MUL result.color, fragment.position.z, {10.0}.x; \n" - "END" - ; - GLuint modulateProg; - - if (!GLEW_ARB_fragment_program) { - printf("Error: GL_ARB_fragment_program not supported!\n"); - exit(1); - } - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - - /* Setup the fragment program */ - glGenProgramsARB(1, &modulateProg); - glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, modulateProg); - glProgramStringARB(GL_FRAGMENT_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, - strlen(modulate2D), (const GLubyte *)modulate2D); - - printf("glGetError = 0x%x\n", (int) glGetError()); - printf("glError(GL_PROGRAM_ERROR_STRING_ARB) = %s\n", - (char *) glGetString(GL_PROGRAM_ERROR_STRING_ARB)); - - glEnable(GL_FRAGMENT_PROGRAM_ARB); - - glClearColor(.3, .3, .3, 0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_TRIANGLES); - glColor3f(0,0,1); - glVertex3f( 0.9, -0.9, -40.0); - glColor3f(1,0,0); - glVertex3f( 0.9, 0.9, -40.0); - glColor3f(0,1,0); - glVertex3f(-0.9, 0.0, -25.0); - glEnd(); - - glFlush(); - - -} - - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB; - type |= GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow("First Tri") == GL_FALSE) { - exit(1); - } - - glewInit(); - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/fp/tri-depth2.c b/progs/fp/tri-depth2.c deleted file mode 100644 index 8c4336817b..0000000000 --- a/progs/fp/tri-depth2.c +++ /dev/null @@ -1,117 +0,0 @@ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glew.h> -#include <GL/glut.h> - - - -static void Init( void ) -{ - /* scale of 10.0 gives me a visible result on nv hardware. - */ - static const char *modulate2D = - "!!ARBfp1.0\n" - "TEMP R0;\n" - "MUL R0, fragment.position.z, {10.0}.x;\n" - "MOV result.color, R0; \n" - "END" - ; - GLuint modulateProg; - - if (!GLEW_ARB_fragment_program) { - printf("Error: GL_ARB_fragment_program not supported!\n"); - exit(1); - } - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - - /* Setup the fragment program */ - glGenProgramsARB(1, &modulateProg); - glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, modulateProg); - glProgramStringARB(GL_FRAGMENT_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, - strlen(modulate2D), (const GLubyte *)modulate2D); - - printf("glGetError = 0x%x\n", (int) glGetError()); - printf("glError(GL_PROGRAM_ERROR_STRING_ARB) = %s\n", - (char *) glGetString(GL_PROGRAM_ERROR_STRING_ARB)); - - glEnable(GL_FRAGMENT_PROGRAM_ARB); - - glClearColor(.3, .3, .3, 0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); - glEnable(GL_DEPTH_TEST); - - glBegin(GL_TRIANGLES); - glColor3f(0,0,1); - glVertex3f( 0.9, -0.9, -30.0); - glVertex3f( 0.9, 0.9, -30.0); - glVertex3f(-0.9, 0.0, -30.0); - glColor3f(0,1,0); - glVertex3f(-0.9, -0.9, -40.0); - glVertex3f(-0.9, 0.9, -40.0); - glVertex3f( 0.9, 0.0, -25.0); - glEnd(); - - glFlush(); - - -} - - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_DEPTH; - type |= GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow("First Tri") == GL_FALSE) { - exit(1); - } - - glewInit(); - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/fp/tri-depthwrite.c b/progs/fp/tri-depthwrite.c deleted file mode 100644 index 7b9d70f292..0000000000 --- a/progs/fp/tri-depthwrite.c +++ /dev/null @@ -1,109 +0,0 @@ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glew.h> -#include <GL/glut.h> - - -static void Init(void) -{ - static const char *modulate2D = - "!!ARBfp1.0\n" - "MUL result.depth.z, fragment.color.z, {.1}.x; \n" - "MOV result.color.xy, fragment.color; \n" - "END" - ; - GLuint modulateProg; - - if (!GLEW_ARB_fragment_program) { - printf("Error: GL_ARB_fragment_program not supported!\n"); - exit(1); - } - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - - /* Setup the fragment program */ - glGenProgramsARB(1, &modulateProg); - glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, modulateProg); - glProgramStringARB(GL_FRAGMENT_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, - strlen(modulate2D), (const GLubyte *)modulate2D); - - printf("glGetError = 0x%x\n", (int) glGetError()); - printf("glError(GL_PROGRAM_ERROR_STRING_ARB) = %s\n", - (char *) glGetString(GL_PROGRAM_ERROR_STRING_ARB)); - - glEnable(GL_FRAGMENT_PROGRAM_ARB); - - glClearColor(.3, .3, .3, 0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); - glEnable(GL_DEPTH_TEST); - - - glBegin(GL_TRIANGLES); - glColor4f(.8,0,.5,0); - glVertex3f( 0.9, -0.9, -30.0); - glVertex3f( 0.9, 0.9, -30.0); - glVertex3f(-0.9, 0.0, -30.0); - - glColor4f(0,.8,.7,0); - glVertex3f(-0.9, -0.9, -40.0); - glColor4f(0,.8,.7,0); - glVertex3f(-0.9, 0.9, -40.0); - glColor4f(0,.8,.3,0); - glVertex3f( 0.9, 0.0, -40.0); - glEnd(); - - glFlush(); -} - - -int main(int argc, char **argv) -{ - glutInit(&argc, argv); - - glutInitWindowPosition(0, 0); glutInitWindowSize( 300, 300); - - glutInitDisplayMode(GLUT_DEPTH | GLUT_RGB | GLUT_SINGLE); - - if (glutCreateWindow("Depth Test") == GL_FALSE) { - exit(1); - } - - glewInit(); - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/fp/tri-depthwrite2.c b/progs/fp/tri-depthwrite2.c deleted file mode 100644 index 599949551d..0000000000 --- a/progs/fp/tri-depthwrite2.c +++ /dev/null @@ -1,109 +0,0 @@ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glew.h> -#include <GL/glut.h> - - -static void Init(void) -{ - static const char *modulate2D = - "!!ARBfp1.0\n" - "MUL result.depth.z, fragment.color.z, {.1}.x; \n" - "MOV result.color, fragment.color.z; \n" - "END" - ; - GLuint modulateProg; - - if (!GLEW_ARB_fragment_program) { - printf("Error: GL_ARB_fragment_program not supported!\n"); - exit(1); - } - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - - /* Setup the fragment program */ - glGenProgramsARB(1, &modulateProg); - glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, modulateProg); - glProgramStringARB(GL_FRAGMENT_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, - strlen(modulate2D), (const GLubyte *)modulate2D); - - printf("glGetError = 0x%x\n", (int) glGetError()); - printf("glError(GL_PROGRAM_ERROR_STRING_ARB) = %s\n", - (char *) glGetString(GL_PROGRAM_ERROR_STRING_ARB)); - - glEnable(GL_FRAGMENT_PROGRAM_ARB); - - glClearColor(.3, .3, .3, 0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); - glEnable(GL_DEPTH_TEST); - - - glBegin(GL_TRIANGLES); - glColor4f(.8,0,.5,0); - glVertex3f( 0.9, -0.9, -30.0); - glVertex3f( 0.9, 0.9, -30.0); - glVertex3f(-0.9, 0.0, -30.0); - - glColor4f(0,.8,.7,0); - glVertex3f(-0.9, -0.9, -40.0); - glColor4f(0,.8,.7,0); - glVertex3f(-0.9, 0.9, -40.0); - glColor4f(0,.8,.3,0); - glVertex3f( 0.9, 0.0, -40.0); - glEnd(); - - glFlush(); -} - - -int main(int argc, char **argv) -{ - glutInit(&argc, argv); - - glutInitWindowPosition(0, 0); glutInitWindowSize( 300, 300); - - glutInitDisplayMode(GLUT_DEPTH | GLUT_RGB | GLUT_SINGLE); - - if (glutCreateWindow("Depth Test") == GL_FALSE) { - exit(1); - } - - glewInit(); - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/fp/tri-param.c b/progs/fp/tri-param.c deleted file mode 100644 index 26a804d4b3..0000000000 --- a/progs/fp/tri-param.c +++ /dev/null @@ -1,116 +0,0 @@ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glew.h> -#include <GL/glut.h> - - -static void Init( void ) -{ - static const char *modulate2D = - "!!ARBfp1.0\n" - "MOV result.color, program.local[32]; \n" - "END" - ; - GLuint modulateProg; - - if (!GLEW_ARB_fragment_program) { - printf("Error: GL_ARB_fragment_program not supported!\n"); - exit(1); - } - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - - /* Setup the fragment program */ - glGenProgramsARB(1, &modulateProg); - glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, modulateProg); - glProgramStringARB(GL_FRAGMENT_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, - strlen(modulate2D), (const GLubyte *)modulate2D); - - printf("glGetError = 0x%x\n", (int) glGetError()); - printf("glError(GL_PROGRAM_ERROR_STRING_ARB) = %s\n", - (char *) glGetString(GL_PROGRAM_ERROR_STRING_ARB)); - - glEnable(GL_FRAGMENT_PROGRAM_ARB); - - glClearColor(.3, .3, .3, 0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glProgramLocalParameter4fARB(GL_FRAGMENT_PROGRAM_ARB, 32, 0.25, .5, 0.25, 1); - - glBegin(GL_TRIANGLES); - glColor3f(0,0,1); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(1,0,0); - glVertex3f( 0.9, 0.0, -30.0); - glColor3f(0,1,0); - glVertex3f(-0.9, 0.0, -30.0); - glEnd(); - - glProgramLocalParameter4fARB(GL_FRAGMENT_PROGRAM_ARB, 32, 0.25, 0, 0.25, 1); - - glBegin(GL_TRIANGLES); - glColor3f(0,0,1); - glVertex3f( 0.9, 0.0, -30.0); - glColor3f(1,0,0); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(0,1,0); - glVertex3f(-0.9, 0.0, -30.0); - glEnd(); - - glFlush(); -} - - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow("First Tri") == GL_FALSE) { - exit(1); - } - - glewInit(); - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/fp/tri-tex.c b/progs/fp/tri-tex.c deleted file mode 100644 index 64299e9453..0000000000 --- a/progs/fp/tri-tex.c +++ /dev/null @@ -1,132 +0,0 @@ - -#include <assert.h> -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glew.h> -#include <GL/glut.h> - -#include "readtex.c" - - -#define TEXTURE_FILE "../images/girl.rgb" - - - -static void Init( void ) -{ - static const char *modulate2D = - "!!ARBfp1.0\n" - "TEX result.color, fragment.color, texture[0], 2D; \n" - "END" - ; - GLuint modulateProg; - GLuint Texture; - - if (!GLEW_ARB_fragment_program) { - printf("Error: GL_ARB_fragment_program not supported!\n"); - exit(1); - } - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - - /* Setup the fragment program */ - glGenProgramsARB(1, &modulateProg); - glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, modulateProg); - glProgramStringARB(GL_FRAGMENT_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, - strlen(modulate2D), (const GLubyte *)modulate2D); - - printf("glGetError = 0x%x\n", (int) glGetError()); - printf("glError(GL_PROGRAM_ERROR_STRING_ARB) = %s\n", - (char *) glGetString(GL_PROGRAM_ERROR_STRING_ARB)); - assert(glIsProgramARB(modulateProg)); - - glEnable(GL_FRAGMENT_PROGRAM_ARB); - - /* Load texture */ - glGenTextures(1, &Texture); - glBindTexture(GL_TEXTURE_2D, Texture); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - if (!LoadRGBMipmaps(TEXTURE_FILE, GL_RGB)) { - printf("Error: couldn't load texture image file %s\n", TEXTURE_FILE); - exit(1); - } - /* XXX this enable shouldn't really be needed!!! */ - glEnable(GL_TEXTURE_2D); - - glClearColor(.3, .3, .3, 0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_TRIANGLES); - glColor3f(0,0,1); -/* glTexCoord2f(1, 0); */ - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(1,0,0); -/* glTexCoord2f(1, 1); */ - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(0,1,0); -/* glTexCoord2f(0, .5); */ - glVertex3f(-0.9, 0.0, -30.0); - glEnd(); - - glFlush(); -} - - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB; - type |= GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow("First Tri") == GL_FALSE) { - exit(1); - } - - glewInit(); - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/fp/xpd.txt b/progs/fp/xpd.txt deleted file mode 100644 index d8dc08dcf7..0000000000 --- a/progs/fp/xpd.txt +++ /dev/null @@ -1,3 +0,0 @@ -!!ARBfp1.0 -XPD result.color, fragment.color, {2,2,2,0}; -END diff --git a/progs/glsl/SConscript b/progs/glsl/SConscript deleted file mode 100644 index 7a4549cd70..0000000000 --- a/progs/glsl/SConscript +++ /dev/null @@ -1,55 +0,0 @@ -Import('*') - -if not env['GLUT']: - Return() - -env = env.Clone() - -env.Prepend(CPPPATH = [ - '../util', -]) - -env.Prepend(LIBS = [ - util, - '$GLUT_LIB' -]) - -if env['platform'] == 'windows': - env.Append(CPPDEFINES = ['NOMINMAX']) - env.Prepend(LIBS = ['winmm']) - -progs = [ - 'array', - 'bitmap', - 'brick', - 'bump', - 'convolutions', - 'deriv', - 'fragcoord', - 'identity', - 'linktest', - 'mandelbrot', - 'multinoise', - 'multitex', - 'noise', - 'noise2', - 'pointcoord', - 'points', - 'samplers', - 'shadow_sampler', - 'skinning', - 'texaaline', - 'texdemo1', - 'toyball', - 'trirast', - 'twoside', - 'vert-or-frag-only', - 'vert-tex', -] - -for prog in progs: - env.Program( - target = prog, - source = prog + '.c', - ) - diff --git a/progs/miniglx/Makefile b/progs/miniglx/Makefile deleted file mode 100644 index e6f5fa558e..0000000000 --- a/progs/miniglx/Makefile +++ /dev/null @@ -1,61 +0,0 @@ -# Makefile for miniglx demo programs - -TOP = ../.. - -include $(TOP)/configs/current - - -SOURCES = miniglxtest.c \ - miniglxsample.c \ - sample_server.c \ - sample_server2.c \ - manytex.c \ - texline.c - -OBJECTS = $(SOURCES:.c=.o) - -PROGS = $(SOURCES:%.c=%) - -INCLUDES = \ - -I. \ - -I$(TOP)/include - -LIBS = -L$(TOP)/$(LIB_DIR) -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) $(APP_LIB_DEPS) - - -##### RULES ##### - -.SUFFIXES: -.SUFFIXES: .c - -.c: - $(CC) $(INCLUDES) $(CFLAGS) $(LDFLAGS) $< $(LIBS) -o $@ - -.c.o: - $(CC) -c $(INCLUDES) $(CFLAGS) $< -o $@ - -.S.o: - $(CC) -c $(INCLUDES) $(CFLAGS) $< -o $@ - - -##### TARGETS ##### - -default: depend $(PROGS) - -clean: - -rm -f $(PROGS) - -rm -f *.o - - -depend: $(SOURCES) - rm -f depend - touch depend - $(MKDEP) $(MKDEP_OPTIONS) $(INCLUDES) $(SOURCES) > /dev/null - - -# Emacs tags -tags: - etags `find . -name \*.[ch]` `find ../include` - - -include depend diff --git a/progs/miniglx/glfbdevtest.c b/progs/miniglx/glfbdevtest.c deleted file mode 100644 index d4efb96930..0000000000 --- a/progs/miniglx/glfbdevtest.c +++ /dev/null @@ -1,477 +0,0 @@ - -/* - * Test the GLFBDev interface. Only tested with radeonfb driver!!!! - */ - - -#include <assert.h> -#include <errno.h> -#include <signal.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <fcntl.h> -#include <unistd.h> -#include <sys/ioctl.h> -#include <sys/mman.h> -#include <sys/types.h> -#include <linux/fb.h> -#include <linux/kd.h> -#include <linux/vt.h> -#include <GL/glut.h> -#include "GL/glfbdev.h" - -#define DEFAULT_DEPTH 8 - -static struct fb_fix_screeninfo FixedInfo; -static struct fb_var_screeninfo VarInfo, OrigVarInfo; -static int DesiredDepth = 0; -static int OriginalVT = -1; -static int ConsoleFD = -1; -static int FrameBufferFD = -1; -static caddr_t FrameBuffer = (caddr_t) -1; -static caddr_t MMIOAddress = (caddr_t) -1; - - -static void -print_fixed_info(const struct fb_fix_screeninfo *fixed, const char *s) -{ - static const char *visuals[] = { - "MONO01", "MONO10", "TRUECOLOR", "PSEUDOCOLOR", - "DIRECTCOLOR", "STATIC_PSEUDOCOLOR" - }; - - printf("%s info -----------------------\n", s); - printf("id = %16s\n", fixed->id); - printf("smem_start = 0x%x\n", fixed->smem_start); - printf("smem_len = %d (0x%x)\n", fixed->smem_len, fixed->smem_len); - printf("type = 0x%x\n", fixed->type); - printf("type_aux = 0x%x\n", fixed->type_aux); - printf("visual = 0x%x (%s)\n", fixed->visual, visuals[fixed->visual]); - printf("xpanstep = %d\n", fixed->xpanstep); - printf("ypanstep = %d\n", fixed->ypanstep); - printf("ywrapstep = %d\n", fixed->ywrapstep); - printf("line_length = %d\n", fixed->line_length); - printf("mmio_start = 0x%x\n", fixed->mmio_start); - printf("mmio_len = %d (0x%x)\n", fixed->mmio_len, fixed->mmio_len); - printf("accel = 0x%x\n", fixed->accel); -} - - -static void -print_var_info(const struct fb_var_screeninfo *var, const char *s) -{ - printf("%s info -----------------------\n", s); - printf("xres = %d\n", var->xres); - printf("yres = %d\n", var->yres); - printf("xres_virtual = %d\n", var->xres_virtual); - printf("yres_virtual = %d\n", var->yres_virtual); - printf("xoffset = %d\n", var->xoffset); - printf("yoffset = %d\n", var->yoffset); - printf("bits_per_pixel = %d\n", var->bits_per_pixel); - printf("grayscale = %d\n", var->grayscale); - - printf("red.offset = %d length = %d msb_right = %d\n", - var->red.offset, var->red.length, var->red.msb_right); - printf("green.offset = %d length = %d msb_right = %d\n", - var->green.offset, var->green.length, var->green.msb_right); - printf("blue.offset = %d length = %d msb_right = %d\n", - var->blue.offset, var->blue.length, var->blue.msb_right); - printf("transp.offset = %d length = %d msb_right = %d\n", - var->transp.offset, var->transp.length, var->transp.msb_right); - - printf("nonstd = %d\n", var->nonstd); - printf("activate = %d\n", var->activate); - printf("height = %d mm\n", var->height); - printf("width = %d mm\n", var->width); - printf("accel_flags = 0x%x\n", var->accel_flags); - printf("pixclock = %d\n", var->pixclock); - printf("left_margin = %d\n", var->left_margin); - printf("right_margin = %d\n", var->right_margin); - printf("upper_margin = %d\n", var->upper_margin); - printf("lower_margin = %d\n", var->lower_margin); - printf("hsync_len = %d\n", var->hsync_len); - printf("vsync_len = %d\n", var->vsync_len); - printf("sync = %d\n", var->sync); - printf("vmode = %d\n", var->vmode); -} - - -static void -signal_handler(int signumber) -{ - signal(signumber, SIG_IGN); /* prevent recursion! */ - fprintf(stderr, "error: got signal %d (exiting)\n", signumber); - exit(1); -} - - -static void -initialize_fbdev( void ) -{ - char ttystr[1000]; - int fd, vtnumber, ttyfd; - int sz; - - if (geteuid()) { - fprintf(stderr, "error: you need to be root\n"); - exit(1); - } - -#if 1 - /* open the framebuffer device */ - FrameBufferFD = open("/dev/fb0", O_RDWR); - if (FrameBufferFD < 0) { - fprintf(stderr, "Error opening /dev/fb0: %s\n", strerror(errno)); - exit(1); - } -#endif - - /* open /dev/tty0 and get the vt number */ - if ((fd = open("/dev/tty0", O_WRONLY, 0)) < 0) { - fprintf(stderr, "error opening /dev/tty0\n"); - exit(1); - } - if (ioctl(fd, VT_OPENQRY, &vtnumber) < 0 || vtnumber < 0) { - fprintf(stderr, "error: couldn't get a free vt\n"); - exit(1); - } - close(fd); - - /* open the console tty */ - sprintf(ttystr, "/dev/tty%d", vtnumber); /* /dev/tty1-64 */ - ConsoleFD = open(ttystr, O_RDWR | O_NDELAY, 0); - if (ConsoleFD < 0) { - fprintf(stderr, "error couldn't open console fd\n"); - exit(1); - } - - /* save current vt number */ - { - struct vt_stat vts; - if (ioctl(ConsoleFD, VT_GETSTATE, &vts) == 0) - OriginalVT = vts.v_active; - } - - /* disconnect from controlling tty */ - ttyfd = open("/dev/tty", O_RDWR); - if (ttyfd >= 0) { - ioctl(ttyfd, TIOCNOTTY, 0); - close(ttyfd); - } - - /* some magic to restore the vt when we exit */ - { - struct vt_mode vt; - if (ioctl(ConsoleFD, VT_ACTIVATE, vtnumber) != 0) - printf("ioctl VT_ACTIVATE: %s\n", strerror(errno)); - if (ioctl(ConsoleFD, VT_WAITACTIVE, vtnumber) != 0) - printf("ioctl VT_WAITACTIVE: %s\n", strerror(errno)); - - if (ioctl(ConsoleFD, VT_GETMODE, &vt) < 0) { - fprintf(stderr, "error: ioctl VT_GETMODE: %s\n", strerror(errno)); - exit(1); - } - - vt.mode = VT_PROCESS; - vt.relsig = SIGUSR1; - vt.acqsig = SIGUSR1; - if (ioctl(ConsoleFD, VT_SETMODE, &vt) < 0) { - fprintf(stderr, "error: ioctl(VT_SETMODE) failed: %s\n", - strerror(errno)); - exit(1); - } - } - - /* go into graphics mode */ - if (ioctl(ConsoleFD, KDSETMODE, KD_GRAPHICS) < 0) { - fprintf(stderr, "error: ioctl(KDSETMODE, KD_GRAPHICS) failed: %s\n", - strerror(errno)); - exit(1); - } - - -#if 0 - /* open the framebuffer device */ - FrameBufferFD = open("/dev/fb0", O_RDWR); - if (FrameBufferFD < 0) { - fprintf(stderr, "Error opening /dev/fb0: %s\n", strerror(errno)); - exit(1); - } -#endif - - /* Get the fixed screen info */ - if (ioctl(FrameBufferFD, FBIOGET_FSCREENINFO, &FixedInfo)) { - fprintf(stderr, "error: ioctl(FBIOGET_FSCREENINFO) failed: %s\n", - strerror(errno)); - exit(1); - } - - print_fixed_info(&FixedInfo, "Fixed"); - - - /* get the variable screen info */ - if (ioctl(FrameBufferFD, FBIOGET_VSCREENINFO, &OrigVarInfo)) { - fprintf(stderr, "error: ioctl(FBIOGET_VSCREENINFO) failed: %s\n", - strerror(errno)); - exit(1); - } - - print_var_info(&OrigVarInfo, "Orig Var"); - - /* operate on a copy */ - VarInfo = OrigVarInfo; - - /* set the depth, resolution, etc */ - DesiredDepth = 32; - if (DesiredDepth) - VarInfo.bits_per_pixel = DesiredDepth; - - if (VarInfo.bits_per_pixel == 16) { - VarInfo.red.offset = 11; - VarInfo.green.offset = 5; - VarInfo.blue.offset = 0; - VarInfo.red.length = 5; - VarInfo.green.length = 6; - VarInfo.blue.length = 5; - VarInfo.transp.offset = 0; - VarInfo.transp.length = 0; - } - else if (VarInfo.bits_per_pixel == 32) { - VarInfo.red.offset = 16; - VarInfo.green.offset = 8; - VarInfo.blue.offset = 0; - VarInfo.transp.offset = 24; - VarInfo.red.length = 8; - VarInfo.green.length = 8; - VarInfo.blue.length = 8; - VarInfo.transp.length = 8; - } - /* timing values taken from /etc/fb.modes (1280x1024 @ 75Hz) */ - VarInfo.xres_virtual = VarInfo.xres = 1280; - VarInfo.yres_virtual = VarInfo.yres = 1024; - VarInfo.pixclock = 7408; - VarInfo.left_margin = 248; - VarInfo.right_margin = 16; - VarInfo.upper_margin = 38; - VarInfo.lower_margin = 1; - VarInfo.hsync_len = 144; - VarInfo.vsync_len = 3; - - VarInfo.xoffset = 0; - VarInfo.yoffset = 0; - VarInfo.nonstd = 0; - VarInfo.vmode &= ~FB_VMODE_YWRAP; /* turn off scrolling */ - - /* set new variable screen info */ - if (ioctl(FrameBufferFD, FBIOPUT_VSCREENINFO, &VarInfo)) { - fprintf(stderr, "ioctl(FBIOPUT_VSCREENINFO failed): %s\n", - strerror(errno)); - exit(1); - } - - print_var_info(&VarInfo, "New Var"); - - if (FixedInfo.visual != FB_VISUAL_TRUECOLOR && - FixedInfo.visual != FB_VISUAL_DIRECTCOLOR) { - fprintf(stderr, "non-TRUE/DIRECT-COLOR visuals (0x%x) not supported by this demo.\n", FixedInfo.visual); - exit(1); - } - - /* initialize colormap */ - if (FixedInfo.visual == FB_VISUAL_DIRECTCOLOR) { - struct fb_cmap cmap; - unsigned short red[256], green[256], blue[256]; - int i; - - /* we're assuming 256 entries here */ - printf("initializing directcolor colormap\n"); - cmap.start = 0; - cmap.len = 256; - cmap.red = red; - cmap.green = green; - cmap.blue = blue; - cmap.transp = NULL; - for (i = 0; i < cmap.len; i++) { - red[i] = green[i] = blue[i] = (i << 8) | i; - } - if (ioctl(FrameBufferFD, FBIOPUTCMAP, (void *) &cmap) < 0) { - fprintf(stderr, "ioctl(FBIOPUTCMAP) failed [%d]\n", i); - } - } - - /* - * fbdev says the frame buffer is at offset zero, and the mmio region - * is immediately after. - */ - - /* mmap the framebuffer into our address space */ - FrameBuffer = (caddr_t) mmap(0, /* start */ - FixedInfo.smem_len, /* bytes */ - PROT_READ | PROT_WRITE, /* prot */ - MAP_SHARED, /* flags */ - FrameBufferFD, /* fd */ - 0 /* offset */); - if (FrameBuffer == (caddr_t) - 1) { - fprintf(stderr, "error: unable to mmap framebuffer: %s\n", - strerror(errno)); - exit(1); - } - printf("FrameBuffer = %p\n", FrameBuffer); - -#if 1 - /* mmap the MMIO region into our address space */ - MMIOAddress = (caddr_t) mmap(0, /* start */ - FixedInfo.mmio_len, /* bytes */ - PROT_READ | PROT_WRITE, /* prot */ - MAP_SHARED, /* flags */ - FrameBufferFD, /* fd */ - FixedInfo.smem_len /* offset */); - if (MMIOAddress == (caddr_t) - 1) { - fprintf(stderr, "error: unable to mmap mmio region: %s\n", - strerror(errno)); - } - printf("MMIOAddress = %p\n", MMIOAddress); - - /* try out some simple MMIO register reads */ - if (1) - { - typedef unsigned int CARD32; - typedef unsigned char CARD8; -#define RADEON_CONFIG_MEMSIZE 0x00f8 -#define RADEON_MEM_SDRAM_MODE_REG 0x0158 -#define MMIO_IN32(base, offset) \ - *(volatile CARD32 *)(void *)(((CARD8*)(base)) + (offset)) -#define INREG(addr) MMIO_IN32(MMIOAddress, addr) - int sz, type; - const char *typeStr[] = {"SDR", "DDR", "64-bit SDR"}; - sz = INREG(RADEON_CONFIG_MEMSIZE); - type = INREG(RADEON_MEM_SDRAM_MODE_REG); - printf("RADEON_CONFIG_MEMSIZE = %d (%d MB)\n", sz, sz / 1024 / 1024); - printf("RADEON_MEM_SDRAM_MODE_REG >> 30 = %d (%s)\n", - type >> 30, typeStr[type>>30]); - } -#endif - -} - - -static void -shutdown_fbdev( void ) -{ - struct vt_mode VT; - - printf("cleaning up...\n"); - /* restore original variable screen info */ - if (ioctl(FrameBufferFD, FBIOPUT_VSCREENINFO, &OrigVarInfo)) { - fprintf(stderr, "ioctl(FBIOPUT_VSCREENINFO failed): %s\n", - strerror(errno)); - exit(1); - } - - munmap(MMIOAddress, FixedInfo.mmio_len); - munmap(FrameBuffer, FixedInfo.smem_len); - close(FrameBufferFD); - - /* restore text mode */ - ioctl(ConsoleFD, KDSETMODE, KD_TEXT); - - /* set vt */ - if (ioctl(ConsoleFD, VT_GETMODE, &VT) != -1) { - VT.mode = VT_AUTO; - ioctl(ConsoleFD, VT_SETMODE, &VT); - } - - /* restore original vt */ - if (OriginalVT >= 0) { - ioctl(ConsoleFD, VT_ACTIVATE, OriginalVT); - OriginalVT = -1; - } - - close(ConsoleFD); -} - - -static void -gltest( void ) -{ - static const int attribs[] = { - GLFBDEV_DOUBLE_BUFFER, - GLFBDEV_DEPTH_SIZE, 16, - GLFBDEV_NONE - }; - GLFBDevContextPtr ctx; - GLFBDevBufferPtr buf; - GLFBDevVisualPtr vis; - int bytes, r, g, b, a; - float ang; - - printf("GLFBDEV_VENDOR = %s\n", glFBDevGetString(GLFBDEV_VENDOR)); - printf("GLFBDEV_VERSION = %s\n", glFBDevGetString(GLFBDEV_VERSION)); - - /* framebuffer size */ - bytes = VarInfo.xres_virtual * VarInfo.yres_virtual * VarInfo.bits_per_pixel / 8; - - vis = glFBDevCreateVisual( &FixedInfo, &VarInfo, attribs ); - assert(vis); - - buf = glFBDevCreateBuffer( &FixedInfo, &VarInfo, vis, FrameBuffer, NULL, bytes ); - assert(buf); - - ctx = glFBDevCreateContext( vis, NULL ); - assert(buf); - - b = glFBDevMakeCurrent( ctx, buf, buf ); - assert(b); - - /*printf("GL_EXTENSIONS: %s\n", glGetString(GL_EXTENSIONS));*/ - glGetIntegerv(GL_RED_BITS, &r); - glGetIntegerv(GL_GREEN_BITS, &g); - glGetIntegerv(GL_BLUE_BITS, &b); - glGetIntegerv(GL_ALPHA_BITS, &a); - printf("RED_BITS=%d GREEN_BITS=%d BLUE_BITS=%d ALPHA_BITS=%d\n", - r, g, b, a); - - glClearColor(0.5, 0.5, 1.0, 0); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-1, 1, -1, 1, 2, 30); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0, 0, -15); - glViewport(0, 0, VarInfo.xres_virtual, VarInfo.yres_virtual); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_DEPTH_TEST); - - for (ang = 0; ang <= 180; ang += 15) { - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glPushMatrix(); - glRotatef(ang, 1, 0, 0); - glutSolidTorus(1, 3, 40, 20); - glPopMatrix(); - glFBDevSwapBuffers(buf); - } - - /* clean up */ - b = glFBDevMakeCurrent( NULL, NULL, NULL); - assert(b); - - glFBDevDestroyContext(ctx); - glFBDevDestroyBuffer(buf); - glFBDevDestroyVisual(vis); -} - - -int -main( int argc, char *argv[] ) -{ - signal(SIGUSR1, signal_handler); /* exit if someone tries a vt switch */ - signal(SIGSEGV, signal_handler); /* catch segfaults */ - - initialize_fbdev(); - gltest(); - shutdown_fbdev(); - - return 0; -} diff --git a/progs/miniglx/manytex.c b/progs/miniglx/manytex.c deleted file mode 100644 index 74b06649f6..0000000000 --- a/progs/miniglx/manytex.c +++ /dev/null @@ -1,381 +0,0 @@ - -/* - * test handling of many texture maps - * Also tests texture priority and residency. - * - * Brian Paul - * August 2, 2000 - */ - - -#include <assert.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <math.h> -#include <GL/glut.h> - - -static GLint NumTextures = 20; -static GLuint *TextureID = NULL; -static GLint *TextureWidth = NULL, *TextureHeight = NULL; -static GLboolean *TextureResidency = NULL; -static GLint TexWidth = 128, TexHeight = 128; -static GLfloat Zrot = 0; -static GLboolean Anim = GL_TRUE; -static GLint WinWidth = 500, WinHeight = 400; -static GLboolean MipMap = GL_FALSE; -static GLboolean LinearFilter = GL_FALSE; -static GLboolean RandomSize = GL_FALSE; -static GLint Rows, Columns; -static GLint LowPriorityCount = 0; - - -static void Idle( void ) -{ - Zrot += 1.0; - glutPostRedisplay(); -} - - -static void Display( void ) -{ - GLfloat spacing = WinWidth / Columns; - GLfloat size = spacing * 0.4; - GLint i; - - /* test residency */ - if (0) - { - GLboolean b; - GLint i, resident; - b = glAreTexturesResident(NumTextures, TextureID, TextureResidency); - if (b) { - printf("all resident\n"); - } - else { - resident = 0; - for (i = 0; i < NumTextures; i++) { - if (TextureResidency[i]) { - resident++; - } - } - printf("%d of %d texture resident\n", resident, NumTextures); - } - } - - /* render the textured quads */ - glClear( GL_COLOR_BUFFER_BIT ); - for (i = 0; i < NumTextures; i++) { - GLint row = i / Columns; - GLint col = i % Columns; - GLfloat x = col * spacing + spacing * 0.5; - GLfloat y = row * spacing + spacing * 0.5; - - GLfloat maxDim = (TextureWidth[i] > TextureHeight[i]) - ? TextureWidth[i] : TextureHeight[i]; - GLfloat w = TextureWidth[i] / maxDim; - GLfloat h = TextureHeight[i] / maxDim; - - glPushMatrix(); - glTranslatef(x, y, 0.0); - glRotatef(Zrot, 0, 0, 1); - glScalef(size, size, 1); - - glBindTexture(GL_TEXTURE_2D, TextureID[i]); - glBegin(GL_POLYGON); -#if 0 - glTexCoord2f(0, 0); glVertex2f(-1, -1); - glTexCoord2f(1, 0); glVertex2f( 1, -1); - glTexCoord2f(1, 1); glVertex2f( 1, 1); - glTexCoord2f(0, 1); glVertex2f(-1, 1); -#else - glTexCoord2f(0, 0); glVertex2f(-w, -h); - glTexCoord2f(1, 0); glVertex2f( w, -h); - glTexCoord2f(1, 1); glVertex2f( w, h); - glTexCoord2f(0, 1); glVertex2f(-w, h); -#endif - glEnd(); - glPopMatrix(); - } - - glutSwapBuffers(); -} - - -static void Reshape( int width, int height ) -{ - WinWidth = width; - WinHeight = height; - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glOrtho(0, width, 0, height, -1, 1); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); -} - - -/* - * Return a random int in [min, max]. - */ -static int RandomInt(int min, int max) -{ - int i = rand(); - int j = i % (max - min + 1); - return min + j; -} - - - -static void Init( void ) -{ - GLint i; - - if (RandomSize) { - printf("Creating %d %s random-size textures, ", NumTextures, - MipMap ? "Mipmapped" : "non-Mipmapped"); - } - else { - printf("Creating %d %s %d x %d textures, ", NumTextures, - MipMap ? "Mipmapped" : "non-Mipmapped", - TexWidth, TexHeight); - } - - if (LinearFilter) { - printf("bilinear filtering\n"); - } - else { - printf("nearest filtering\n"); - } - - - /* compute number of rows and columns of rects */ - { - GLfloat area = (GLfloat) (WinWidth * WinHeight) / (GLfloat) NumTextures; - GLfloat edgeLen = sqrt(area); - - Columns = WinWidth / edgeLen; - Rows = (NumTextures + Columns - 1) / Columns; - printf("Rows: %d Cols: %d\n", Rows, Columns); - } - - - if (!TextureID) { - TextureID = (GLuint *) malloc(sizeof(GLuint) * NumTextures); - assert(TextureID); - glGenTextures(NumTextures, TextureID); - } - - if (!TextureResidency) { - TextureResidency = (GLboolean *) malloc(sizeof(GLboolean) * NumTextures); - assert(TextureResidency); - } - - if (!TextureWidth) { - TextureWidth = (GLint *) malloc(sizeof(GLint) * NumTextures); - assert(TextureWidth); - } - if (!TextureHeight) { - TextureHeight = (GLint *) malloc(sizeof(GLint) * NumTextures); - assert(TextureHeight); - } - - for (i = 0; i < NumTextures; i++) { - GLubyte color[4]; - GLubyte *texImage; - GLint j, row, col; - - row = i / Columns; - col = i % Columns; - - glBindTexture(GL_TEXTURE_2D, TextureID[i]); - - if (i < LowPriorityCount) - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_PRIORITY, 0.5F); - - if (RandomSize) { -#if 0 - int k = (glutGet(GLUT_ELAPSED_TIME) % 7) + 2; - TexWidth = 1 << k; - TexHeight = 1 << k; -#else - TexWidth = 1 << RandomInt(2, 7); - TexHeight = 1 << RandomInt(2, 7); - printf("Random size of %3d: %d x %d\n", i, TexWidth, TexHeight); -#endif - } - - TextureWidth[i] = TexWidth; - TextureHeight[i] = TexHeight; - - texImage = (GLubyte*) malloc(4 * TexWidth * TexHeight * sizeof(GLubyte)); - assert(texImage); - - /* determine texture color */ - color[0] = (GLint) (255.0 * ((float) col / (Columns - 1))); - color[1] = 127; - color[2] = (GLint) (255.0 * ((float) row / (Rows - 1))); - color[3] = 255; - - /* fill in solid-colored teximage */ - for (j = 0; j < TexWidth * TexHeight; j++) { - texImage[j*4+0] = color[0]; - texImage[j*4+1] = color[1]; - texImage[j*4+2] = color[2]; - texImage[j*4+3] = color[3]; - } - - if (MipMap) { - GLint level = 0; - GLint w = TexWidth, h = TexHeight; - while (1) { - glTexImage2D(GL_TEXTURE_2D, level, GL_RGBA, w, h, 0, - GL_RGBA, GL_UNSIGNED_BYTE, texImage); - if (w == 1 && h == 1) - break; - if (w > 1) - w /= 2; - if (h > 1) - h /= 2; - level++; - /*printf("%d: %d x %d\n", level, w, h);*/ - } - if (LinearFilter) { - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, - GL_LINEAR_MIPMAP_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - } - else { - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, - GL_NEAREST_MIPMAP_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - } - } - else { - /* Set corners to white */ - int k = 0; - texImage[k+0] = texImage[k+1] = texImage[k+2] = texImage[k+3] = 255; - k = (TexWidth - 1) * 4; - texImage[k+0] = texImage[k+1] = texImage[k+2] = texImage[k+3] = 255; - k = (TexWidth * TexHeight - TexWidth) * 4; - texImage[k+0] = texImage[k+1] = texImage[k+2] = texImage[k+3] = 255; - k = (TexWidth * TexHeight - 1) * 4; - texImage[k+0] = texImage[k+1] = texImage[k+2] = texImage[k+3] = 255; - - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, TexWidth, TexHeight, 0, - GL_RGBA, GL_UNSIGNED_BYTE, texImage); - if (LinearFilter) { - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - } - else { - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - } - } - - free(texImage); - } - - glEnable(GL_TEXTURE_2D); -} - - -static void Key( unsigned char key, int x, int y ) -{ - const GLfloat step = 3.0; - (void) x; - (void) y; - switch (key) { - case 'a': - Anim = !Anim; - if (Anim) - glutIdleFunc(Idle); - else - glutIdleFunc(NULL); - break; - case 's': - Idle(); - break; - case 'z': - Zrot -= step; - break; - case 'Z': - Zrot += step; - break; - case ' ': - Init(); - break; - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -int main( int argc, char *argv[] ) -{ - GLint i; - - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( WinWidth, WinHeight ); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE ); - glutCreateWindow(argv[0]); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - if (Anim) - glutIdleFunc(Idle); - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-n") == 0) { - NumTextures = atoi(argv[i+1]); - if (NumTextures <= 0) { - printf("Error, bad number of textures\n"); - return 1; - } - i++; - } - else if (strcmp(argv[i], "-mipmap") == 0) { - MipMap = GL_TRUE; - } - else if (strcmp(argv[i], "-linear") == 0) { - LinearFilter = GL_TRUE; - } - else if (strcmp(argv[i], "-size") == 0) { - TexWidth = atoi(argv[i+1]); - TexHeight = atoi(argv[i+2]); - assert(TexWidth >= 1); - assert(TexHeight >= 1); - i += 2; - } - else if (strcmp(argv[i], "-randomsize") == 0) { - RandomSize = GL_TRUE; - } - else if (strcmp(argv[i], "-lowpri") == 0) { - LowPriorityCount = atoi(argv[i+1]); - i++; - } - else { - printf("Usage:\n"); - printf(" manytex [options]\n"); - printf("Options:\n"); - printf(" -n <number of texture objects>\n"); - printf(" -size <width> <height> - specify texture size\n"); - printf(" -randomsize - use random size textures\n"); - printf(" -mipmap - generate mipmaps\n"); - printf(" -linear - use linear filtering instead of nearest\n"); - printf(" -lowpri <n> - Set lower priority on <n> textures\n"); - return 0; - } - } - - Init(); - - glutMainLoop(); - - return 0; -} diff --git a/progs/miniglx/miniglxsample.c b/progs/miniglx/miniglxsample.c deleted file mode 100644 index d4d6729f93..0000000000 --- a/progs/miniglx/miniglxsample.c +++ /dev/null @@ -1,128 +0,0 @@ - -#define USE_MINIGLX 1 /* 1 = use Mini GLX, 0 = use Xlib/GLX */ - -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> -#include <GL/gl.h> - -#if USE_MINIGLX -#include <GL/miniglx.h> -#else -#include <GL/glx.h> -#include <X11/Xlib.h> -#endif - -static void _subset_Rectf( GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2 ) -{ - glBegin( GL_QUADS ); - glVertex2f( x1, y1 ); - glVertex2f( x2, y1 ); - glVertex2f( x2, y2 ); - glVertex2f( x1, y2 ); - glEnd(); -} - - -/* - * Create a simple double-buffered RGBA window. - */ -static Window -MakeWindow(Display * dpy, unsigned int width, unsigned int height) -{ - int visAttributes[] = { - GLX_RGBA, - GLX_RED_SIZE, 1, - GLX_GREEN_SIZE, 1, - GLX_BLUE_SIZE, 1, - GLX_DOUBLEBUFFER, - None - }; - XSetWindowAttributes attr; - unsigned long attrMask; - Window root; - Window win; - GLXContext ctx; - XVisualInfo *visinfo; - - root = RootWindow(dpy, 0); - - /* Choose GLX visual / pixel format */ - visinfo = glXChooseVisual(dpy, 0, visAttributes); - if (!visinfo) { - printf("Error: couldn't get an RGB, Double-buffered visual\n"); - exit(1); - } - - /* Create the window */ - attr.background_pixel = 0; - attr.border_pixel = 0; - attr.colormap = XCreateColormap(dpy, root, visinfo->visual, AllocNone); - attrMask = CWBackPixel | CWBorderPixel | CWColormap; - win = XCreateWindow(dpy, root, 0, 0, width, height, - 0, visinfo->depth, InputOutput, - visinfo->visual, attrMask, &attr); - if (!win) { - printf("Error: XCreateWindow failed\n"); - exit(1); - } - - /* Display the window */ - XMapWindow(dpy, win); - - /* Create GLX rendering context */ - ctx = glXCreateContext(dpy, visinfo, NULL, True); - if (!ctx) { - printf("Error: glXCreateContext failed\n"); - exit(1); - } - - /* Bind the rendering context and window */ - glXMakeCurrent(dpy, win, ctx); - - glViewport(0, 0, width, height); - - return win; -} - - -/* - * Draw a few frames of a rotating square. - */ -static void -DrawFrames(Display * dpy, Window win) -{ - int angle; - glShadeModel(GL_FLAT); - glClearColor(0.5, 0.5, 0.5, 1.0); - for (angle = 0; angle < 360; angle += 10) { - glClear(GL_COLOR_BUFFER_BIT); - glColor3f(1.0, 1.0, 0.0); - glPushMatrix(); - glRotatef(angle, 0, 0, 1); - _subset_Rectf(-0.8, -0.8, 0.8, 0.8); - glPopMatrix(); - glXSwapBuffers(dpy, win); - sleep(1); - } -} - - -int -main(int argc, char *argv[]) -{ - Display *dpy; - Window win; - - dpy = XOpenDisplay(NULL); - if (!dpy) { - printf("Error: XOpenDisplay failed\n"); - return 1; - } - - win = MakeWindow(dpy, 300, 300); - - DrawFrames(dpy, win); - - return 0; -} diff --git a/progs/miniglx/miniglxtest.c b/progs/miniglx/miniglxtest.c deleted file mode 100644 index 85c25be4ed..0000000000 --- a/progs/miniglx/miniglxtest.c +++ /dev/null @@ -1,272 +0,0 @@ -/* - * Test the mini GLX interface. - */ - - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> -#include <GL/gl.h> -#define USE_MINI_GLX 1 -#if USE_MINI_GLX -#include <GL/miniglx.h> -#else -#include <GL/glx.h> -#endif - -static GLXContext ctx; - -static GLuint NumFrames = 100; -static GLuint NumDisplays = 1; -static GLboolean Texture = GL_FALSE; -static GLboolean SingleBuffer = GL_FALSE; -static GLboolean Sleeps = GL_TRUE; - - -static void -rect(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2) -{ - glBegin(GL_QUADS); - glTexCoord2f(0, 0); glColor3f(0, 0, 1); glVertex2f(x1, y1); - glTexCoord2f(1, 0); glColor3f(1, 0, 0); glVertex2f(x2, y1); - glTexCoord2f(1, 1); glColor3f(0, 1, 0); glVertex2f(x2, y2); - glTexCoord2f(0, 1); glColor3f(0, 0, 0); glVertex2f(x1, y2); - glEnd(); -} - - -static void -redraw(Display *dpy, Window w, int rot) -{ - GLfloat a; - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glPushMatrix(); - glRotatef(rot, 0, 0, 1); - glScalef(.5, .5, .5); - for (a = 0.0; a < 360.0; a += 30.0) { - glPushMatrix(); - glRotatef(a, 0, 0, 1); - glRotatef(40, 1, 0, 0); - glColor3f(a / 360.0, 1-a/360.0, 0); - rect(0.3, -0.25, 1.5, 0.25); - glPopMatrix(); - } - glPopMatrix(); - - if (SingleBuffer) - glFlush(); - else - glXSwapBuffers(dpy, w); -} - - -static Window -make_window(Display *dpy, unsigned int width, unsigned int height) -{ - int attrib_single[] = { GLX_RGBA, - GLX_RED_SIZE, 1, - GLX_GREEN_SIZE, 1, - GLX_BLUE_SIZE, 1, - GLX_DEPTH_SIZE, 1, - None }; - int attrib_double[] = { GLX_RGBA, - GLX_RED_SIZE, 1, - GLX_GREEN_SIZE, 1, - GLX_BLUE_SIZE, 1, - GLX_DEPTH_SIZE, 1, - GLX_DOUBLEBUFFER, - None }; - int *attrib = SingleBuffer ? attrib_single : attrib_double; - int scrnum = 0; - XSetWindowAttributes attr; - unsigned long mask; - Window root; - Window win; - XVisualInfo *visinfo; - - root = RootWindow(dpy, scrnum); - - if (!(visinfo = glXChooseVisual(dpy, scrnum, attrib))) { - printf("Error: couldn't get an RGB, Double-buffered visual\n"); - exit(1); - } - - if (!(ctx = glXCreateContext(dpy, visinfo, NULL, True))) { - printf("Error: glXCreateContext failed\n"); - exit(1); - } - - /* window attributes */ - attr.background_pixel = 0; - attr.border_pixel = 0; - attr.colormap = XCreateColormap(dpy, root, visinfo->visual, AllocNone); - attr.event_mask = StructureNotifyMask | ExposureMask; - mask = CWBackPixel | CWBorderPixel | CWColormap | CWEventMask; - - win = XCreateWindow(dpy, root, 0, 0, width, height, - 0, visinfo->depth, InputOutput, - visinfo->visual, mask, &attr); - if (!win) { - printf("Error: XCreateWindow failed\n"); - exit(1); - } - - glXMakeCurrent(dpy, win, ctx); - - glViewport(0, 0, width, height); - - return win; -} - - -static void -event_loop(Display *dpy, Window win) -{ - int i; - - printf("Drawing %d frames\n", NumFrames); - - for (i = 0; i < NumFrames; i++) { - redraw(dpy, win, -i*2); - if (Sleeps) { - usleep(20000); - } - } -} - - -static int -runtest(void) -{ - Display *dpy; - Window win; - - dpy = XOpenDisplay(NULL); - if (!dpy) { - printf("Error: XOpenDisplay failed\n"); - return 1; - } - - win = make_window(dpy, 800, 600); - - srand(getpid()); - - /* init GL state */ - glClearColor(0.5, 0.5, 0.5, 1.0); - glEnable(GL_DEPTH_TEST); - if (Texture) { - GLubyte image[16][16][4]; - GLint i, j; - for (i = 0; i < 16; i++) { - for (j = 0; j < 16; j++) { - if (((i / 2) ^ (j / 2)) & 1) { - image[i][j][0] = 255; - image[i][j][1] = 255; - image[i][j][2] = 255; - image[i][j][3] = 255; - } - else { - image[i][j][0] = 128; - image[i][j][1] = 128; - image[i][j][2] = 128; - image[i][j][3] = 128; - } - } - } - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 16, 16, 0, - GL_RGBA, GL_UNSIGNED_BYTE, image); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glEnable(GL_TEXTURE_2D); - } - if (SingleBuffer) { - glDrawBuffer(GL_FRONT); - glReadBuffer(GL_FRONT); - } - else { - glDrawBuffer(GL_BACK); - } - - XMapWindow(dpy, win); - - /* wait for window to get mapped */ - { - XEvent e; - while (1) { - XNextEvent(dpy, &e); - if (e.type == MapNotify && e.xmap.window == win) { - break; - } - } - } - - event_loop(dpy, win); - - glXDestroyContext(dpy, ctx); - XDestroyWindow(dpy, win); - - XCloseDisplay(dpy); - - return 0; -} - - -static void -usage(void) -{ - printf("Usage:\n"); - printf(" -f N render N frames (default %d)\n", NumFrames); - printf(" -d N do N display cycles\n"); - printf(" -t texturing\n"); - printf(" -s single buffering\n"); - printf(" -n no usleep() delay\n"); -} - - -static void -parse_args(int argc, char *argv[]) -{ - int i; - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-f") == 0) { - NumFrames = atoi(argv[i + 1]); - i++; - } - else if (strcmp(argv[i], "-d") == 0) { - NumDisplays = atoi(argv[i + 1]); - i++; - } - else if (strcmp(argv[i], "-n") == 0) { - Sleeps = GL_FALSE; - } - else if (strcmp(argv[i], "-s") == 0) { - SingleBuffer = GL_TRUE; - } - else if (strcmp(argv[i], "-t") == 0) { - Texture = GL_TRUE; - } - else { - usage(); - exit(1); - } - } -} - - -int -main(int argc, char *argv[]) -{ - int i; - - parse_args(argc, argv); - - for (i = 0; i < NumDisplays; i++) { - if (runtest() != 0) - break; - } - - return 0; -} diff --git a/progs/miniglx/sample_server.c b/progs/miniglx/sample_server.c deleted file mode 100644 index 62456eca25..0000000000 --- a/progs/miniglx/sample_server.c +++ /dev/null @@ -1,111 +0,0 @@ - -/* - * Sample server that just keeps first available window mapped. - */ - - -#include <stdio.h> -#include <stdlib.h> -#include <GL/gl.h> -#include <GL/miniglx.h> - -struct client { - struct client *next; - Window windowid; - int mappable; -}; - -struct client *clients = 0, *mapped_client = 0; - - -static struct client *find_client( Window id ) -{ - struct client *c; - - for (c = clients ; c ; c = c->next) - if (c->windowid == id) - return c; - - return 0; -} - -int main( int argc, char *argv[] ) -{ - Display *dpy; - XEvent ev; - - dpy = __miniglx_StartServer(NULL); - if (!dpy) { - fprintf(stderr, "Error: __miniglx_StartServer failed\n"); - return 1; - } - - while (XNextEvent( dpy, &ev )) { - struct client *c; - - switch (ev.type) { - case MapRequest: - fprintf(stderr, "MapRequest\n"); - c = find_client(ev.xmaprequest.window); - if (!c) break; - c->mappable = True; - break; - - case UnmapNotify: - fprintf(stderr, "UnmapNotify\n"); - c = find_client(ev.xunmap.window); - if (!c) break; - c->mappable = False; - if (c == mapped_client) - mapped_client = 0; - break; - - case CreateNotify: - fprintf(stderr, "CreateNotify\n"); - c = malloc(sizeof(*c)); - c->next = clients; - c->windowid = ev.xcreatewindow.window; - c->mappable = False; - clients = c; - break; - - case DestroyNotify: - fprintf(stderr, "DestroyNotify\n"); - c = find_client(ev.xdestroywindow.window); - if (!c) break; - if (c == clients) - clients = c->next; - else { - struct client *t; - for (t = clients ; t->next != c ; t = t->next) - ; - t->next = c->next; - } - - if (c == mapped_client) - mapped_client = 0; - - free(c); - break; - - default: - break; - } - - /* Search for first mappable client if none already mapped. - */ - if (!mapped_client) { - for (c = clients ; c ; c = c->next) { - if (c->mappable) { - XMapWindow( dpy, c->windowid ); - mapped_client = c; - break; - } - } - } - } - - XCloseDisplay( dpy ); - - return 0; -} diff --git a/progs/miniglx/sample_server2.c b/progs/miniglx/sample_server2.c deleted file mode 100644 index efd382a6d9..0000000000 --- a/progs/miniglx/sample_server2.c +++ /dev/null @@ -1,228 +0,0 @@ - -/* - * Sample server that just keeps first available window mapped. - * - * It also reads and echos anything that happens on stdin as an - * example of tracking events from sources other than miniglx clients. - * - * It reads & writes without blocking, so that eg. piping a lot of - * text to stdin and then hitting 'ctrl-S' on the output stream won't - * cause it to stop handling miniglx events. - * - * See select_tut in the linux manual pages for a good overview of the - * select(2) system call. - */ - - -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> -#include <string.h> -#include <GL/gl.h> -#include <GL/miniglx.h> -#include <errno.h> -#include <assert.h> - -struct client { - struct client *next; - Window windowid; - int mappable; -}; - -struct client *clients = 0, *mapped_client = 0; - -#define BUFSZ 4096 -char rbuf[BUFSZ]; -int rbuf_count; - - -static struct client *find_client( Window id ) -{ - struct client *c; - - for (c = clients ; c ; c = c->next) - if (c->windowid == id) - return c; - - return 0; -} - -int main( int argc, char *argv[] ) -{ - Display *dpy; - XEvent ev; - int autostart = 0; - - if (argc == 2 && strcmp(argv[1], "-autostart") == 0) - autostart = 1; - - dpy = __miniglx_StartServer(NULL); - if (!dpy) { - fprintf(stderr, "Error: __miniglx_StartServer failed\n"); - return 1; - } - - /* How is vt switching communicated through the XNextEvent interface? - */ - while (1) { - int r, n; - struct timeval tv; - fd_set rfds, wfds; - int bored = 0; - - FD_ZERO(&rfds); - FD_ZERO(&wfds); - tv.tv_sec = 1; - tv.tv_usec = 0; - - if (rbuf_count) { - FD_SET( 1, &wfds ); /* notify when we can write out buffer */ - n = 1; - } - else { - FD_SET( 0, &rfds ); /* else notify when new data to read */ - n = 0; - } - - /* __miniglx_Select waits until any of these file groups becomes - * readable/writable/etc (like regular select), until timeout - * expires (like regular select), until a signal is received - * (like regular select) or until an event is available for - * XCheckMaskEvent(). - */ - r = __miniglx_Select( dpy, n+1, &rfds, &wfds, 0, &tv ); - - /* This can happen if select() is interrupted by a signal: - */ - if (r < 0 && errno != EINTR && errno != EAGAIN) { - perror ("select()"); - exit (1); - } - - if (tv.tv_sec == 0 && tv.tv_usec == 0) - bored = 1; - - /* Check and handle events on our local file descriptors - */ - if (FD_ISSET( 0, &rfds )) { - /* Something on stdin */ - assert(rbuf_count == 0); - r = read(0, rbuf, BUFSZ); - if (r < 1) { - perror("read"); - abort(); - } - rbuf_count = r; - } - - if (FD_ISSET( 1, &wfds )) { - /* Can write to stdout */ - assert(rbuf_count > 0); - r = write(1, rbuf, rbuf_count); - if (r < 1) { - perror("write"); - abort(); - } - rbuf_count -= r; - if (rbuf_count) - memmove(rbuf + r, rbuf, rbuf_count); - } - - - /* Check and handle events generated by miniglx: - */ - while (XCheckMaskEvent( dpy, ~0, &ev )) { - struct client *c; - bored = 0; - - fprintf(stderr, "Received event %d\n", ev.type); - - switch (ev.type) { - case CreateNotify: - fprintf(stderr, "CreateNotify -- new client\n"); - c = malloc(sizeof(*c)); - c->next = clients; - c->windowid = ev.xcreatewindow.window; - c->mappable = False; - clients = c; - break; - - case DestroyNotify: - fprintf(stderr, "DestroyNotify\n"); - c = find_client(ev.xdestroywindow.window); - if (!c) break; - if (c == clients) - clients = c->next; - else { - struct client *t; - for (t = clients ; t->next != c ; t = t->next) - ; - t->next = c->next; - } - - if (c == mapped_client) - mapped_client = 0; - - free(c); - break; - - case MapRequest: - fprintf(stderr, "MapRequest\n"); - c = find_client(ev.xmaprequest.window); - if (!c) break; - c->mappable = True; - break; - - case UnmapNotify: - fprintf(stderr, "UnmapNotify\n"); - c = find_client(ev.xunmap.window); - if (!c) break; - c->mappable = False; - if (c == mapped_client) - mapped_client = 0; - break; - - default: - break; - } - } - - - /* Search for first mappable client if none already mapped. - */ - if (!mapped_client) { - struct client *c; - for (c = clients ; c ; c = c->next) { - if (c->mappable) { - XMapWindow( dpy, c->windowid ); - mapped_client = c; - break; - } - } - if (!clients && autostart) { - system("nohup ./texline &"); - system("nohup ./manytex &"); - } - } - else if (bored) { - struct client *c; - /* bored of mapped client now, let's try & find another one */ - for (c = mapped_client->next ; c && !c->mappable ; c = c->next) - ; - if (!c) - for (c = clients ; c && !c->mappable ; c = c->next) - ; - if (c && c != mapped_client) { - XUnmapWindow( dpy, mapped_client->windowid ); - XMapWindow( dpy, c->windowid ); - mapped_client = c; - } - else - fprintf(stderr, "I'm bored!\n"); - } - } - - XCloseDisplay( dpy ); - - return 0; -} diff --git a/progs/miniglx/texline.c b/progs/miniglx/texline.c deleted file mode 100644 index 098077f247..0000000000 --- a/progs/miniglx/texline.c +++ /dev/null @@ -1,267 +0,0 @@ - -/* - * Test textured lines. - * - * Brian Paul - * September 2000 - */ - - -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glut.h> -#include "../util/readtex.c" /* I know, this is a hack. */ - -#define TEXTURE_FILE "../images/girl.rgb" - -static GLboolean Antialias = GL_FALSE; -static GLboolean Animate = GL_FALSE; -static GLint Texture = 1; -static GLboolean Stipple = GL_FALSE; -static GLfloat LineWidth = 1.0; - -static GLfloat Xrot = -60.0, Yrot = 0.0, Zrot = 0.0; -static GLfloat DYrot = 1.0; -static GLboolean Points = GL_FALSE; -static GLfloat Scale = 1.0; - -static void Idle( void ) -{ - if (Animate) { - Zrot += DYrot; - glutPostRedisplay(); - } -} - - -static void Display( void ) -{ - GLfloat x, y, s, t; - - glClear( GL_COLOR_BUFFER_BIT ); - - glPushMatrix(); - glRotatef(Xrot, 1.0, 0.0, 0.0); - glRotatef(Yrot, 0.0, 1.0, 0.0); - glRotatef(Zrot, 0.0, 0.0, 1.0); - glScalef(Scale, Scale, Scale); - - if (Texture) - glColor3f(1, 1, 1); - - if (Points) { - glBegin(GL_POINTS); - for (t = 0.0; t <= 1.0; t += 0.025) { - for (s = 0.0; s <= 1.0; s += 0.025) { - x = s * 2.0 - 1.0; - y = t * 2.0 - 1.0; - if (!Texture) - glColor3f(1, 0, 1); - glMultiTexCoord2fARB(GL_TEXTURE1_ARB, t, s); - glTexCoord2f(s, t); - glVertex2f(x, y); - } - } - glEnd(); - } - else { - glBegin(GL_LINES); - for (t = 0.0; t <= 1.0; t += 0.025) { - x = t * 2.0 - 1.0; - if (!Texture) - glColor3f(1, 0, 1); - glTexCoord2f(t, 0.0); - glMultiTexCoord2fARB(GL_TEXTURE1_ARB, 0.0, t); - glVertex2f(x, -1.0); - if (!Texture) - glColor3f(0, 1, 0); - glTexCoord2f(t, 1.0); - glMultiTexCoord2fARB(GL_TEXTURE1_ARB, 1.0, t); - glVertex2f(x, 1.0); - } - glEnd(); - } - - glPopMatrix(); - - glutSwapBuffers(); -} - - -static void Reshape( int width, int height ) -{ - GLfloat ar = (float) width / height; - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -ar, ar, -1.0, 1.0, 10.0, 100.0 ); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - glTranslatef( 0.0, 0.0, -12.0 ); -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 'a': - Antialias = !Antialias; - if (Antialias) { - glEnable(GL_LINE_SMOOTH); - glEnable(GL_POINT_SMOOTH); - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - } - else { - glDisable(GL_LINE_SMOOTH); - glDisable(GL_POINT_SMOOTH); - glDisable(GL_BLEND); - } - break; - case 't': - Texture++; - if (Texture > 2) - Texture = 0; - if (Texture == 0) { - glActiveTextureARB(GL_TEXTURE0_ARB); - glDisable(GL_TEXTURE_2D); - glActiveTextureARB(GL_TEXTURE1_ARB); - glDisable(GL_TEXTURE_2D); - } - else if (Texture == 1) { - glActiveTextureARB(GL_TEXTURE0_ARB); - glEnable(GL_TEXTURE_2D); - glActiveTextureARB(GL_TEXTURE1_ARB); - glDisable(GL_TEXTURE_2D); - } - else { - glActiveTextureARB(GL_TEXTURE0_ARB); - glEnable(GL_TEXTURE_2D); - glActiveTextureARB(GL_TEXTURE1_ARB); - glEnable(GL_TEXTURE_2D); - } - break; - case 'w': - LineWidth -= 0.25; - if (LineWidth < 0.25) - LineWidth = 0.25; - glLineWidth(LineWidth); - glPointSize(LineWidth); - break; - case 'W': - LineWidth += 0.25; - if (LineWidth > 8.0) - LineWidth = 8.0; - glLineWidth(LineWidth); - glPointSize(LineWidth); - break; - case 'p': - Points = !Points; - break; - case 's': - Stipple = !Stipple; - if (Stipple) - glEnable(GL_LINE_STIPPLE); - else - glDisable(GL_LINE_STIPPLE); - break; - case ' ': - Animate = !Animate; - if (Animate) - glutIdleFunc(Idle); - else - glutIdleFunc(NULL); - break; - case 27: - exit(0); - break; - } - printf("LineWidth, PointSize = %f\n", LineWidth); - glutPostRedisplay(); -} - - -static void SpecialKey( int key, int x, int y ) -{ - float step = 3.0; - (void) x; - (void) y; - - switch (key) { - case GLUT_KEY_UP: - Xrot += step; - break; - case GLUT_KEY_DOWN: - Xrot -= step; - break; - case GLUT_KEY_LEFT: - Yrot += step; - break; - case GLUT_KEY_RIGHT: - Yrot -= step; - break; - } - glutPostRedisplay(); -} - - -static void Init( int argc, char *argv[] ) -{ - GLuint u; - for (u = 0; u < 2; u++) { - glActiveTextureARB(GL_TEXTURE0_ARB + u); - glBindTexture(GL_TEXTURE_2D, 10+u); - if (u == 0) - glEnable(GL_TEXTURE_2D); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - - if (u == 0) - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - else - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_ADD); - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - if (!LoadRGBMipmaps(TEXTURE_FILE, GL_RGB)) { - printf("Error: couldn't load texture image\n"); - exit(1); - } - } - - glLineStipple(1, 0xff); - - if (argc > 1 && strcmp(argv[1], "-info")==0) { - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - printf("GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - printf("GL_EXTENSIONS = %s\n", (char *) glGetString(GL_EXTENSIONS)); - } -} - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowSize( 400, 300 ); - - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE ); - - glutCreateWindow(argv[0] ); - - Init(argc, argv); - - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutSpecialFunc( SpecialKey ); - glutDisplayFunc( Display ); - if (Animate) - glutIdleFunc( Idle ); - - glutMainLoop(); - return 0; -} diff --git a/progs/openvg/demos/Makefile b/progs/openvg/demos/Makefile deleted file mode 100644 index 89b0ce441b..0000000000 --- a/progs/openvg/demos/Makefile +++ /dev/null @@ -1,39 +0,0 @@ -# progs/vg/Makefile - -TOP = ../../.. -include $(TOP)/configs/current - -VG_LIBS=-lm -pthread -lX11 -lEGL -lOpenVG -INCLUDE_DIRS = -I$(TOP)/include - -PROGRAMS = \ - lion \ - sp - -.c.o: - $(CC) -c $(INCLUDE_DIRS) $(CFLAGS) $< -o $@ - - - -default: $(PROGRAMS) - -lion: lion.o lion-render.o - $(CC) $(CFLAGS) lion.o lion-render.o -L$(TOP)/$(LIB_DIR) $(VG_LIBS) -o $@ - -lion.o: lion.c lion-render.h $(HEADERS) - $(CC) -c $(CFLAGS) -I$(TOP)/include lion.c -lion-render.o: lion-render.c lion-render.h $(HEADERS) - $(CC) -c $(CFLAGS) -I$(TOP)/include lion-render.c - - -sp: sp.c eglcommon.o - $(CC) $(INCLUDE_DIRS) $(CFLAGS) $^ -L$(TOP)/$(LIB_DIR) $(LIBS) $(VG_LIBS) $(APP_LIB_DEPS) -o $@ - -eglcommon.o: eglcommon.c $(HEADERS) - $(CC) -c $(INCLUDE_DIRS) $(CFLAGS) eglcommon.c - - -clean: - rm -f *.o *~ - rm -f *.so - rm -f $(PROGRAMS) diff --git a/progs/openvg/demos/eglcommon.c b/progs/openvg/demos/eglcommon.c deleted file mode 100644 index bacd5685d7..0000000000 --- a/progs/openvg/demos/eglcommon.c +++ /dev/null @@ -1,288 +0,0 @@ -#include "eglcommon.h" - - -#include <assert.h> -#include <math.h> -#include <stdlib.h> -#include <stdio.h> -#include <string.h> -#include <X11/Xlib.h> -#include <X11/Xutil.h> -#include <X11/keysym.h> -#include <VG/openvg.h> /* using full OpenGL for now */ -#include <GLES/egl.h> - - -static init_func init = 0; -static draw_func draw = 0; -static reshape_func reshape = 0; -static key_func keyPress = 0; -static VGint width = 300, height = 300; - - -void set_window_size(int w, int h) -{ - width = w; - height = h; -} - -/* - * Create an RGB, double-buffered X window. - * Return the window and context handles. - */ -static void -make_x_window(Display *x_dpy, EGLDisplay egl_dpy, - const char *name, - int x, int y, int width, int height, - Window *winRet, - EGLContext *ctxRet, - EGLSurface *surfRet) -{ - static const EGLint attribs[] = { - EGL_RED_SIZE, 1, - EGL_GREEN_SIZE, 1, - EGL_BLUE_SIZE, 1, - EGL_NONE - }; - - int scrnum; - XSetWindowAttributes attr; - unsigned long mask; - Window root; - Window win; - XVisualInfo *visInfo, visTemplate; - int num_visuals; - EGLContext ctx; - EGLConfig config; - EGLint num_configs; - EGLint vid; - - scrnum = DefaultScreen( x_dpy ); - root = RootWindow( x_dpy, scrnum ); - - if (!eglChooseConfig( egl_dpy, attribs, &config, 1, &num_configs)) { - printf("Error: couldn't get an EGL visual config\n"); - exit(1); - } - - assert(config); - assert(num_configs > 0); - - if (!eglGetConfigAttrib(egl_dpy, config, EGL_NATIVE_VISUAL_ID, &vid)) { - printf("Error: eglGetConfigAttrib() failed\n"); - exit(1); - } - - /* The X window visual must match the EGL config */ - visTemplate.visualid = vid; - visInfo = XGetVisualInfo(x_dpy, VisualIDMask, &visTemplate, &num_visuals); - if (!visInfo) { - printf("Error: couldn't get X visual\n"); - exit(1); - } - - /* window attributes */ - attr.background_pixel = 0; - attr.border_pixel = 0; - attr.colormap = XCreateColormap( x_dpy, root, visInfo->visual, AllocNone); - attr.event_mask = StructureNotifyMask | ExposureMask | KeyPressMask; - mask = CWBackPixel | CWBorderPixel | CWColormap | CWEventMask; - - win = XCreateWindow( x_dpy, root, 0, 0, width, height, - 0, visInfo->depth, InputOutput, - visInfo->visual, mask, &attr ); - - /* set hints and properties */ - { - XSizeHints sizehints; - sizehints.x = x; - sizehints.y = y; - sizehints.width = width; - sizehints.height = height; - sizehints.flags = USSize | USPosition; - XSetNormalHints(x_dpy, win, &sizehints); - XSetStandardProperties(x_dpy, win, name, name, - None, (char **)NULL, 0, &sizehints); - } - - eglBindAPI(EGL_OPENVG_API); - - ctx = eglCreateContext(egl_dpy, config, EGL_NO_CONTEXT, NULL ); - if (!ctx) { - printf("Error: eglCreateContext failed\n"); - exit(1); - } - - *surfRet = eglCreateWindowSurface(egl_dpy, config, win, NULL); - - if (!*surfRet) { - printf("Error: eglCreateWindowSurface failed\n"); - exit(1); - } - - XFree(visInfo); - - *winRet = win; - *ctxRet = ctx; -} - -static void -event_loop(Display *dpy, Window win, - EGLDisplay egl_dpy, EGLSurface egl_surf) -{ - while (1) { - int redraw = 0; - XEvent event; - - XNextEvent(dpy, &event); - - switch (event.type) { - case Expose: - redraw = 1; - break; - case ConfigureNotify: - if (reshape) { - width = event.xconfigure.width; - height = event.xconfigure.height; - reshape(event.xconfigure.width, event.xconfigure.height); - } - break; - case KeyPress: - { - char buffer[10]; - int r, code; - code = XLookupKeysym(&event.xkey, 0); - if (!keyPress || !keyPress(code)) { - r = XLookupString(&event.xkey, buffer, sizeof(buffer), - NULL, NULL); - if (buffer[0] == 27) { - /* escape */ - return; - } - } - } - redraw = 1; - break; - default: - ; /*no-op*/ - } - - if (redraw) { - draw(); - eglSwapBuffers(egl_dpy, egl_surf); - } - } -} - -int window_width(void) -{ - return width; -} - -int window_height(void) -{ - return height; -} - -static void -usage(void) -{ - printf("Usage:\n"); - printf(" -display <displayname> set the display to run on\n"); - printf(" -info display OpenGL renderer info\n"); -} - -int run(int argc, char **argv, - init_func init_f, - reshape_func resh_f, - draw_func draw_f, - key_func key_f) -{ - const int winWidth = width, winHeight = height; - Display *x_dpy; - Window win; - EGLSurface egl_surf; - EGLContext egl_ctx; - EGLDisplay egl_dpy; - char *dpyName = NULL; - GLboolean printInfo = GL_FALSE; - EGLint egl_major, egl_minor; - int i; - const char *s; - - init = init_f; - draw = draw_f; - reshape = resh_f; - keyPress = key_f; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-display") == 0) { - dpyName = argv[i+1]; - i++; - } - else if (strcmp(argv[i], "-info") == 0) { - printInfo = GL_TRUE; - } - } - - x_dpy = XOpenDisplay(dpyName); - if (!x_dpy) { - printf("Error: couldn't open display %s\n", - dpyName ? dpyName : getenv("DISPLAY")); - return -1; - } - - egl_dpy = eglGetDisplay(x_dpy); - if (!egl_dpy) { - printf("Error: eglGetDisplay() failed\n"); - return -1; - } - - if (!eglInitialize(egl_dpy, &egl_major, &egl_minor)) { - printf("Error: eglInitialize() failed\n"); - return -1; - } - - s = eglQueryString(egl_dpy, EGL_VERSION); - printf("EGL_VERSION = %s\n", s); - - make_x_window(x_dpy, egl_dpy, - "OpenVG Example", 0, 0, winWidth, winHeight, - &win, &egl_ctx, &egl_surf); - - XMapWindow(x_dpy, win); - if (!eglMakeCurrent(egl_dpy, egl_surf, egl_surf, egl_ctx)) { - printf("Error: eglMakeCurrent() failed\n"); - return -1; - } - - if (printInfo) { - printf("VG_RENDERER = %s\n", (char *) vgGetString(VG_RENDERER)); - printf("VG_VERSION = %s\n", (char *) vgGetString(VG_VERSION)); - printf("VG_VENDOR = %s\n", (char *) vgGetString(VG_VENDOR)); - } - - if (init) - init(); - - /* Set initial projection/viewing transformation. - * We can't be sure we'll get a ConfigureNotify event when the window - * first appears. - */ - if (reshape) - reshape(winWidth, winHeight); - - event_loop(x_dpy, win, egl_dpy, egl_surf); - - eglMakeCurrent(egl_dpy, 0, 0, 0); - eglDestroyContext(egl_dpy, egl_ctx); - eglDestroySurface(egl_dpy, egl_surf); - eglTerminate(egl_dpy); - - - XDestroyWindow(x_dpy, win); - XCloseDisplay(x_dpy); - - return 0; -} - diff --git a/progs/openvg/demos/eglcommon.h b/progs/openvg/demos/eglcommon.h deleted file mode 100644 index 958dae9f98..0000000000 --- a/progs/openvg/demos/eglcommon.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef EGLCOMMON_H -#define EGLCOMMON_H - -typedef void (*init_func)(); -typedef void (*reshape_func)(int, int); -typedef void (*draw_func)(); -typedef int (*key_func)(unsigned key); - - -void set_window_size(int width, int height); -int window_width(void); -int window_height(void); - -int run(int argc, char **argv, - init_func init, - reshape_func resh, - draw_func draw, - key_func key); - -#endif diff --git a/progs/openvg/demos/lion-render.c b/progs/openvg/demos/lion-render.c deleted file mode 100644 index f3f151f552..0000000000 --- a/progs/openvg/demos/lion-render.c +++ /dev/null @@ -1,1573 +0,0 @@ -#include "lion-render.h" - -#include <stdlib.h> -#include <stdio.h> - -#define ELEMENTS(x) (sizeof(x)/sizeof((x)[0])) - -static void init(struct lion *l, int i, VGint hexColor, const VGfloat *coords, int elems) -{ - static VGubyte cmds[128]; - VGfloat color[4]; - VGint j; - - color[0] = ((hexColor >> 16) & 0xff) / 255.f; - color[1] = ((hexColor >> 8) & 0xff) / 255.f; - color[2] = ((hexColor >> 0) & 0xff) / 255.f; - color[3] = 1.0; - - l->paths[i] = vgCreatePath(VG_PATH_FORMAT_STANDARD, VG_PATH_DATATYPE_F, 1.0f, 0.0f, - 0, 0, (unsigned int)VG_PATH_CAPABILITY_ALL); - l->fills[i] = vgCreatePaint(); - vgSetParameterfv(l->fills[i], VG_PAINT_COLOR, 4, color); - - cmds[0] = VG_MOVE_TO_ABS; - for (j = 1; j < elems; ++j) { - cmds[j] = VG_LINE_TO_ABS; - } - - vgAppendPathData(l->paths[i], elems, cmds, coords); -} - -static void poly0(struct lion *l) -{ - VGfloat color = 0xf2cc99; - static const VGfloat coords[] = {69,18, 82,8, 99,3, 118,5, 135,12, 149,21, 156,13, 165,9, 177,13, 183,28, - 180,50, 164,91, 155,107, 154,114, 151,121, 141,127, 139,136, 155,206, 157,251, 126,342, - 133,357, 128,376, 83,376, 75,368, 67,350, 61,350, 53,369, 4,369, 2,361, 5,354, - 12,342, 16,321, 4,257, 4,244, 7,218, 9,179, 26,127, 43,93, 32,77, 30,70, - 24,67, 16,49, 17,35, 18,23, 30,12, 40,7, 53,7, 62,12 - }; - - init(l, 0, color, coords, ELEMENTS(coords)/2); -} - -static void poly1(struct lion *l) -{ - VGfloat color = 0xe5b27f; - static const VGfloat coords[] = {142,79, 136,74, 138,82, 133,78, 133,84, 127,78, 128,85, - 124,80, 125,87, 119,82, 119,90, 125,99, 125,96, 128,100, 128,94, - 131,98, 132,93, 135,97, 136,93, 138,97, 139,94, 141,98, 143,94, - 144,85 - }; - - init(l, 1, color, coords, ELEMENTS(coords)/2); -} - -static void poly2(struct lion *l) -{ - VGfloat color = 0xeb8080; - static const VGfloat coords[] = {127,101, 132,100, 137,99, 144,101, 143,105, 135,110 - }; - - init(l, 2, color, coords, ELEMENTS(coords)/2); -} - -static void poly3(struct lion *l) -{ - VGfloat color = 0xf2cc99; - static const VGfloat coords[] = {178,229, 157,248, 139,296, 126,349, 137,356, - 158,357, 183,342, 212,332, 235,288, 235,261, - 228,252, 212,250, 188,251 - }; - - init(l, 3, color, coords, ELEMENTS(coords)/2); -} - -static void poly4(struct lion *l) -{ - VGfloat color = 0x9c826b; - static const VGfloat coords[] = {56,229, 48,241, 48,250, 57,281, 63,325, 71,338, - 81,315, 76,321, 79,311, 83,301, 75,308, 80,298, - 73,303, 76,296, 71,298, 74,292, 69,293, 74,284, - 78,278, 71,278, 74,274, 68,273, 70,268, 66,267, - 68,261, 60,266, 62,259, 65,253, 57,258, 59,251, - 55,254, 55,248, 60,237, 54,240, 58,234, 54,236 - }; - - init(l, 4, color, coords, ELEMENTS(coords)/2); -} - -static void poly5(struct lion *l) -{ - VGfloat color = 0x9c826b; - static const VGfloat coords[] = {74,363, 79,368, 81,368, 85,362, 89,363, 92,370, 96,373, - 101,372, 108,361, 110,371, 113,373, 116,371, 120,358, 122,363, - 123,371, 126,371, 129,367, 132,357, 135,361, 130,376, 127,377, - 94,378, 84,376, 76,371 - }; - - init(l, 5, color, coords, ELEMENTS(coords)/2); -} - -static void poly6(struct lion *l) -{ - VGfloat color = 0x9c826b; - static const VGfloat coords[] = {212,250, 219,251, 228,258, 236,270, 235,287, 225,304, - 205,332, 177,343, 171,352, 158,357, 166,352, 168,346, - 168,339, 165,333, 155,327, 155,323, 161,320, 165,316, - 169,316, 167,312, 171,313, 168,308, 173,309, 170,306, - 177,306, 175,308, 177,311, 174,311, 176,316, 171,315, - 174,319, 168,320, 168,323, 175,327, 179,332, 183,326, - 184,332, 189,323, 190,328, 194,320, 194,325, 199,316, - 201,320, 204,313, 206,316, 208,310, 211,305, 219,298, - 226,288, 229,279, 228,266, 224,259, 217,253 - }; - - init(l, 6, color, coords, ELEMENTS(coords)/2); -} - -static void poly7(struct lion *l) -{ - VGfloat color = 0x9c826b; - static const VGfloat coords[] = {151,205, 151,238, 149,252, 141,268, 128,282, 121,301, - 130,300, 126,313, 118,324, 116,337, 120,346, 133,352, - 133,340, 137,333, 145,329, 156,327, 153,319, 153,291, - 157,271, 170,259, 178,277, 193,250, 174,216 - }; - - init(l, 7, color, coords, ELEMENTS(coords)/2); -} - -static void poly8(struct lion *l) -{ - VGfloat color = 0x9c826b; - static const VGfloat coords[] = {78,127, 90,142, 95,155, 108,164, 125,167, 139,175, - 150,206, 152,191, 141,140, 121,148, 100,136 - }; - - init(l, 8, color, coords, ELEMENTS(coords)/2); -} - -static void poly9(struct lion *l) -{ - VGfloat color = 0x9c826b; - static const VGfloat coords[] = {21,58, 35,63, 38,68, 32,69, 42,74, 40,79, 47,80, 54,83, - 45,94, 34,81, 32,73, 24,66 - }; - - init(l, 9, color, coords, ELEMENTS(coords)/2); -} - -static void poly10(struct lion *l) -{ - VGfloat color = 0x9c826b; - static const VGfloat coords[] = {71,34, 67,34, 66,27, 59,24, 54,17, 48,17, 39,22, - 30,26, 28,31, 31,39, 38,46, 29,45, 36,54, 41,61, - 41,70, 50,69, 54,71, 55,58, 67,52, 76,43, 76,39, - 68,44 - }; - - init(l, 10, color, coords, ELEMENTS(coords)/2); -} - -static void poly11(struct lion *l) -{ - VGfloat color = 0x9c826b; - static const VGfloat coords[] = {139,74, 141,83, 143,89, 144,104, 148,104, 155,106, - 154,86, 157,77, 155,72, 150,77, 144,77 - }; - - init(l, 11, color, coords, ELEMENTS(coords)/2); -} - -static void poly12(struct lion *l) -{ - VGfloat color = 0x9c826b; - static const VGfloat coords[] = {105,44, 102,53, 108,58, 111,62, 112,55 - }; - - init(l, 12, color, coords, ELEMENTS(coords)/2); -} - -static void poly13(struct lion *l) -{ - VGfloat color = 0x9c826b; - static const VGfloat coords[] = {141,48, 141,54, 144,58, 139,62, 137,66, 136,59, 137,52 - }; - - init(l, 13, color, coords, ELEMENTS(coords)/2); -} - -static void poly14(struct lion *l) -{ - VGfloat color = 0x9c826b; - static const VGfloat coords[] = {98,135, 104,130, 105,134, 108,132, 108,135, 112,134, - 113,137, 116,136, 116,139, 119,139, 124,141, 128,140, - 133,138, 140,133, 139,140, 126,146, 104,144 - }; - - init(l, 14, color, coords, ELEMENTS(coords)/2); -} - -static void poly15(struct lion *l) -{ - VGfloat color = 0x9c826b; - static const VGfloat coords[] = {97,116, 103,119, 103,116, 111,118, 116,117, 122,114, - 127,107, 135,111, 142,107, 141,114, 145,118, 149,121, - 145,125, 140,124, 127,121, 113,125, 100,124 - }; - - init(l, 15, color, coords, ELEMENTS(coords)/2); -} - -static void poly16(struct lion *l) -{ - VGfloat color = 0x9c826b; - static const VGfloat coords[] = {147,33, 152,35, 157,34, 153,31, 160,31, 156,28, 161,28, - 159,24, 163,25, 163,21, 165,22, 170,23, 167,17, 172,21, - 174,18, 175,23, 176,22, 177,28, 177,33, 174,37, 176,39, - 174,44, 171,49, 168,53, 164,57, 159,68, 156,70, 154,60, - 150,51, 146,43, 144,35 - }; - - init(l, 16, color, coords, ELEMENTS(coords)/2); -} - -static void poly17(struct lion *l) -{ - VGfloat color = 0x9c826b; - static const VGfloat coords[] = {85,72, 89,74, 93,75, 100,76, 105,75, 102,79, 94,79, 88,76 - }; - - init(l, 17, color, coords, ELEMENTS(coords)/2); -} - -static void poly18(struct lion *l) -{ - VGfloat color = 0x9c826b; - static const VGfloat coords[] = {86,214, 79,221, 76,232, 82,225, 78,239, 82,234, 78,245, - 81,243, 79,255, 84,250, 84,267, 87,254, 90,271, 90,257, - 95,271, 93,256, 95,249, 92,252, 93,243, 89,253, 89,241, - 86,250, 87,236, 83,245, 87,231, 82,231, 90,219, 84,221 - }; - - init(l, 18, color, coords, ELEMENTS(coords)/2); -} - -static void poly19(struct lion *l) -{ - VGfloat color = 0xffcc7f; - static const VGfloat coords[] = {93,68, 96,72, 100,73, 106,72, 108,66, 105,63, 100,62 - }; - - init(l, 19, color, coords, ELEMENTS(coords)/2); -} - -static void poly20(struct lion *l) -{ - VGfloat color = 0xffcc7f; - static const VGfloat coords[] = {144,64, 142,68, 142,73, 146,74, 150,73, 154,64, 149,62 - }; - - init(l, 20, color, coords, ELEMENTS(coords)/2); -} - -static void poly21(struct lion *l) -{ - VGfloat color = 0x9c826b; - static const VGfloat coords[] = {57,91, 42,111, 52,105, 41,117, 53,112, 46,120, 53,116, - 50,124, 57,119, 55,127, 61,122, 60,130, 67,126, 66,134, - 71,129, 72,136, 77,130, 76,137, 80,133, 82,138, 86,135, - 96,135, 94,129, 86,124, 83,117, 77,123, 79,117, 73,120, - 75,112, 68,116, 71,111, 65,114, 69,107, 63,110, 68,102, - 61,107, 66,98, 61,103, 63,97, 57,99 - }; - - init(l, 21, color, coords, ELEMENTS(coords)/2); -} - -static void poly22(struct lion *l) -{ - VGfloat color = 0x9c826b; - static const VGfloat coords[] = {83,79, 76,79, 67,82, 75,83, 65,88, 76,87, 65,92, 76,91, - 68,96, 77,95, 70,99, 80,98, 72,104, 80,102, 76,108, 85,103, - 92,101, 87,98, 93,96, 86,94, 91,93, 85,91, 93,89, 99,89, 105,93, - 107,85, 102,82, 92,80 - }; - - init(l, 22, color, coords, ELEMENTS(coords)/2); -} - -static void poly23(struct lion *l) -{ - VGfloat color = 0x9c826b; - static const VGfloat coords[] = {109,77, 111,83, 109,89, 113,94, 117,90, 117,81, 114,78 - }; - - init(l, 23, color, coords, ELEMENTS(coords)/2); -} - -static void poly24(struct lion *l) -{ - VGfloat color = 0x9c826b; - static const VGfloat coords[] = {122,128, 127,126, 134,127, 136,129, 134,130, 130,128, 124,129 - }; - - init(l, 24, color, coords, ELEMENTS(coords)/2); -} - -static void poly25(struct lion *l) -{ - VGfloat color = 0x9c826b; - static const VGfloat coords[] = {78,27, 82,32, 80,33, 82,36, 78,37, 82,40, 78,42, 81,46, 76,47, - 78,49, 74,50, 82,52, 87,50, 83,48, 91,46, 86,45, 91,42, 88,40, - 92,37, 86,34, 90,31, 86,29, 89,26 - }; - - init(l, 25, color, coords, ELEMENTS(coords)/2); -} - -static void poly26(struct lion *l) -{ - VGfloat color = 0x9c826b; - static const VGfloat coords[] = {82,17, 92,20, 79,21, 90,25, 81,25, 94,28, 93,26, 101,30, - 101,26, 107,33, 108,28, 111,40, 113,34, 115,45, 117,39, - 119,54, 121,46, 124,58, 126,47, 129,59, 130,49, 134,58, - 133,44, 137,48, 133,37, 137,40, 133,32, 126,20, 135,26, - 132,19, 138,23, 135,17, 142,18, 132,11, 116,6, 94,6, 78,11, - 92,12, 80,14, 90,16 - }; - - init(l, 26, color, coords, ELEMENTS(coords)/2); -} - -static void poly27(struct lion *l) -{ - VGfloat color = 0x9c826b; - static const VGfloat coords[] = {142,234, 132,227, 124,223, 115,220, 110,225, 118,224, 127,229, - 135,236, 122,234, 115,237, 113,242, 121,238, 139,243, 121,245, - 111,254, 95,254, 102,244, 104,235, 110,229, 100,231, 104,224, - 113,216, 122,215, 132,217, 141,224, 145,230, 149,240 - }; - - init(l, 27, color, coords, ELEMENTS(coords)/2); -} - -static void poly28(struct lion *l) -{ - VGfloat color = 0x9c826b; - static const VGfloat coords[] = {115,252, 125,248, 137,249, 143,258, 134,255, 125,254 - }; - - init(l, 28, color, coords, ELEMENTS(coords)/2); -} - -static void poly29(struct lion *l) -{ - VGfloat color = 0x9c826b; - static const VGfloat coords[] = {114,212, 130,213, 140,219, 147,225, 144,214, 137,209, 128,207 - }; - - init(l, 29, color, coords, ELEMENTS(coords)/2); -} - -static void poly30(struct lion *l) -{ - VGfloat color = 0x9c826b; - static const VGfloat coords[] = {102,263, 108,258, 117,257, 131,258, 116,260, 109,265 - }; - - init(l, 30, color, coords, ELEMENTS(coords)/2); -} - -static void poly31(struct lion *l) -{ - VGfloat color = 0x9c826b; - static const VGfloat coords[] = {51,241, 35,224, 40,238, 23,224, 31,242, 19,239, 28,247, 17,246, - 25,250, 37,254, 39,263, 44,271, 47,294, 48,317, 51,328, 60,351, - 60,323, 53,262, 47,246 - }; - - init(l, 31, color, coords, ELEMENTS(coords)/2); -} - -static void poly32(struct lion *l) -{ - VGfloat color = 0x9c826b; - static const VGfloat coords[] = {2,364, 9,367, 14,366, 18,355, 20,364, 26,366, 31,357, 35,364, - 39,364, 42,357, 47,363, 53,360, 59,357, 54,369, 7,373 - }; - - init(l, 32, color, coords, ELEMENTS(coords)/2); -} - -static void poly33(struct lion *l) -{ - VGfloat color = 0x9c826b; - static const VGfloat coords[] = {7,349, 19,345, 25,339, 18,341, 23,333, 28,326, 23,326, 27,320, - 23,316, 25,311, 20,298, 15,277, 12,264, 9,249, 10,223, 3,248, - 5,261, 15,307, 17,326, 11,343 - }; - - init(l, 33, color, coords, ELEMENTS(coords)/2); -} - -static void poly34(struct lion *l) -{ - VGfloat color = 0x9c826b; - static const VGfloat coords[] = {11,226, 15,231, 25,236, 18,227 - }; - - init(l, 34, color, coords, ELEMENTS(coords)/2); -} - -static void poly35(struct lion *l) -{ - VGfloat color = 0x9c826b; - static const VGfloat coords[] = {13,214, 19,217, 32,227, 23,214, 16,208, 15,190, 24,148, - 31,121, 24,137, 14,170, 8,189 - }; - - init(l, 35, color, coords, ELEMENTS(coords)/2); -} - -static void poly36(struct lion *l) -{ - VGfloat color = 0x9c826b; - static const VGfloat coords[] = {202,254, 195,258, 199,260, 193,263, 197,263, 190,268, - 196,268, 191,273, 188,282, 200,272, 194,272, 201,266, - 197,265, 204,262, 200,258, 204,256 - }; - - init(l, 36, color, coords, ELEMENTS(coords)/2); -} - -static void poly37(struct lion *l) -{ - VGfloat color = 0x845433; - static const VGfloat coords[] = {151,213, 165,212, 179,225, 189,246, 187,262, 179,275, - 176,263, 177,247, 171,233, 163,230, 165,251, 157,264, - 146,298, 145,321, 133,326, 143,285, 154,260, 153,240 - }; - - init(l, 37, color, coords, ELEMENTS(coords)/2); -} - -static void poly38(struct lion *l) -{ - VGfloat color = 0x845433; - static const VGfloat coords[] = {91,132, 95,145, 97,154, 104,148, 107,155, 109,150, 111,158, - 115,152, 118,159, 120,153, 125,161, 126,155, 133,164, 132,154, - 137,163, 137,152, 142,163, 147,186, 152,192, 148,167, 141,143, - 124,145, 105,143 - }; - - init(l, 38, color, coords, ELEMENTS(coords)/2); -} - -static void poly39(struct lion *l) -{ - VGfloat color = 0x9c826b; - static const VGfloat coords[] = {31,57, 23,52, 26,51, 20,44, 23,42, 21,36, 22,29, 25,23, - 24,32, 30,43, 26,41, 30,50, 26,48 - }; - - init(l, 39, color, coords, ELEMENTS(coords)/2); -} - -static void poly40(struct lion *l) -{ - VGfloat color = 0x9c826b; - static const VGfloat coords[] = {147,21, 149,28, 155,21, 161,16, 167,14, 175,15, 173,11, 161,9 - }; - - init(l, 40, color, coords, ELEMENTS(coords)/2); -} - -static void poly41(struct lion *l) -{ - VGfloat color = 0x9c826b; - static const VGfloat coords[] = {181,39, 175,51, 169,57, 171,65, 165,68, 165,75, 160,76, - 162,91, 171,71, 180,51 - }; - - init(l, 41, color, coords, ELEMENTS(coords)/2); -} - -static void poly42(struct lion *l) -{ - VGfloat color = 0x9c826b; - static const VGfloat coords[] = {132,346, 139,348, 141,346, 142,341, 147,342, 143,355, 133,350 - }; - - init(l, 42, color, coords, ELEMENTS(coords)/2); -} - -static void poly43(struct lion *l) -{ - VGfloat color = 0x9c826b; - static const VGfloat coords[] = {146,355, 151,352, 155,348, 157,343, 160,349, 151,356, 147,357 - }; - - init(l, 43, color, coords, ELEMENTS(coords)/2); -} - -static void poly44(struct lion *l) -{ - VGfloat color = 0x9c826b; - static const VGfloat coords[] = {99,266, 100,281, 94,305, 86,322, 78,332, 72,346, 73,331, 91,291 - }; - - init(l, 44, color, coords, ELEMENTS(coords)/2); -} - -static void poly45(struct lion *l) -{ - VGfloat color = 0x9c826b; - static const VGfloat coords[] = {20,347, 32,342, 45,340, 54,345, 45,350, 42,353, 38,350, - 31,353, 29,356, 23,350, 19,353, 15,349 - }; - - init(l, 45, color, coords, ELEMENTS(coords)/2); -} - -static void poly46(struct lion *l) -{ - VGfloat color = 0x9c826b; - static const VGfloat coords[] = {78,344, 86,344, 92,349, 88,358, 84,352 - }; - - init(l, 46, color, coords, ELEMENTS(coords)/2); -} - -static void poly47(struct lion *l) -{ - VGfloat color = 0x9c826b; - static const VGfloat coords[] = {93,347, 104,344, 117,345, 124,354, 121,357, 116,351, - 112,351, 108,355, 102,351 - }; - - init(l, 47, color, coords, ELEMENTS(coords)/2); -} - -static void poly48(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {105,12, 111,18, 113,24, 113,29, 119,34, 116,23, 112,16 - }; - - init(l, 48, color, coords, ELEMENTS(coords)/2); -} - -static void poly49(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {122,27, 125,34, 127,43, 128,34, 125,29 - }; - - init(l, 49, color, coords, ELEMENTS(coords)/2); -} - -static void poly50(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {115,13, 122,19, 122,15, 113,10 - }; - - init(l, 50, color, coords, ELEMENTS(coords)/2); -} - -static void poly51(struct lion *l) -{ - VGfloat color = 0xffe5b2; - static const VGfloat coords[] = {116,172, 107,182, 98,193, 98,183, 90,199, 89,189, 84,207, - 88,206, 87,215, 95,206, 93,219, 91,230, 98,216, 97,226, - 104,214, 112,209, 104,208, 113,202, 126,200, 139,207, 132,198, - 142,203, 134,192, 142,195, 134,187, 140,185, 130,181, 136,177, - 126,177, 125,171, 116,180 - }; - - init(l, 51, color, coords, ELEMENTS(coords)/2); -} - -static void poly52(struct lion *l) -{ - VGfloat color = 0xffe5b2; - static const VGfloat coords[] = {74,220, 67,230, 67,221, 59,235, 63,233, 60,248, 70,232, 65,249, - 71,243, 67,256, 73,250, 69,262, 73,259, 71,267, 76,262, 72,271, - 78,270, 76,275, 82,274, 78,290, 86,279, 86,289, 92,274, 88,275, - 87,264, 82,270, 82,258, 77,257, 78,247, 73,246, 77,233, 72,236 - }; - - init(l, 52, color, coords, ELEMENTS(coords)/2); -} - -static void poly53(struct lion *l) -{ - VGfloat color = 0xffe5b2; - static const VGfloat coords[] = {133,230, 147,242, 148,250, 145,254, 138,247, 129,246, 142,245, - 138,241, 128,237, 137,238 - }; - - init(l, 53, color, coords, ELEMENTS(coords)/2); -} - -static void poly54(struct lion *l) -{ - VGfloat color = 0xffe5b2; - static const VGfloat coords[] = {133,261, 125,261, 116,263, 111,267, 125,265 - }; - - init(l, 54, color, coords, ELEMENTS(coords)/2); -} - -static void poly55(struct lion *l) -{ - VGfloat color = 0xffe5b2; - static const VGfloat coords[] = {121,271, 109,273, 103,279, 99,305, 92,316, 85,327, 83,335, - 89,340, 97,341, 94,336, 101,336, 96,331, 103,330, 97,327, 108,325, - 99,322, 109,321, 100,318, 110,317, 105,314, 110,312, 107,310, 113,308, - 105,306, 114,303, 105,301, 115,298, 107,295, 115,294, 108,293, 117,291, - 109,289, 117,286, 109,286, 118,283, 112,281, 118,279, 114,278, - 119,276, 115,274 - }; - - init(l, 55, color, coords, ELEMENTS(coords)/2); -} - -static void poly56(struct lion *l) -{ - VGfloat color = 0xffe5b2; - static const VGfloat coords[] = {79,364, 74,359, 74,353, 76,347, 80,351, 83,356, 82,360 - }; - - init(l, 56, color, coords, ELEMENTS(coords)/2); -} - -static void poly57(struct lion *l) -{ - VGfloat color = 0xffe5b2; - static const VGfloat coords[] = {91,363, 93,356, 97,353, 103,355, 105,360, 103,366, 99,371, 94,368 - }; - - init(l, 57, color, coords, ELEMENTS(coords)/2); -} - -static void poly58(struct lion *l) -{ - VGfloat color = 0xffe5b2; - static const VGfloat coords[] = {110,355, 114,353, 118,357, 117,363, 113,369, 111,362 - }; - - init(l, 58, color, coords, ELEMENTS(coords)/2); -} - -static void poly59(struct lion *l) -{ - VGfloat color = 0xffe5b2; - static const VGfloat coords[] = {126,354, 123,358, 124,367, 126,369, 129,361, 129,357 - }; - - init(l, 59, color, coords, ELEMENTS(coords)/2); -} - -static void poly60(struct lion *l) -{ - VGfloat color = 0xffe5b2; - static const VGfloat coords[] = {30,154, 24,166, 20,182, 23,194, 29,208, 37,218, 41,210, 41,223, - 46,214, 46,227, 52,216, 52,227, 61,216, 59,225, 68,213, 73,219, - 70,207, 77,212, 69,200, 77,202, 70,194, 78,197, 68,187, 76,182, - 64,182, 58,175, 58,185, 53,177, 50,186, 46,171, 44,182, 39,167, - 36,172, 36,162, 30,166 - }; - - init(l, 60, color, coords, ELEMENTS(coords)/2); -} - -static void poly61(struct lion *l) -{ - VGfloat color = 0xffe5b2; - static const VGfloat coords[] = {44,130, 41,137, 45,136, 43,150, 48,142, 48,157, 53,150, - 52,164, 60,156, 61,169, 64,165, 66,175, 70,167, 74,176, - 77,168, 80,183, 85,172, 90,182, 93,174, 98,181, 99,173, - 104,175, 105,169, 114,168, 102,163, 95,157, 94,166, 90,154, - 87,162, 82,149, 75,159, 72,148, 68,155, 67,143, 62,148, 62,138, - 58,145, 56,133, 52,142, 52,128, 49,134, 47,125 - }; - - init(l, 61, color, coords, ELEMENTS(coords)/2); -} - -static void poly62(struct lion *l) -{ - VGfloat color = 0xffe5b2; - static const VGfloat coords[] = {13,216, 19,219, 36,231, 22,223, 16,222, 22,227, 12,224, 13,220, 16,220 - }; - - init(l, 62, color, coords, ELEMENTS(coords)/2); -} - -static void poly63(struct lion *l) -{ - VGfloat color = 0xffe5b2; - static const VGfloat coords[] = {10,231, 14,236, 25,239, 27,237, 19,234 - }; - - init(l, 63, color, coords, ELEMENTS(coords)/2); -} - -static void poly64(struct lion *l) -{ - VGfloat color = 0xffe5b2; - static const VGfloat coords[] = {9,245, 14,242, 25,245, 13,245 - }; - - init(l, 64, color, coords, ELEMENTS(coords)/2); -} - -static void poly65(struct lion *l) -{ - VGfloat color = 0xffe5b2; - static const VGfloat coords[] = {33,255, 26,253, 18,254, 25,256, 18,258, 27,260, 18,263, - 27,265, 19,267, 29,270, 21,272, 29,276, 21,278, 30,281, - 22,283, 31,287, 24,288, 32,292, 23,293, 34,298, 26,299, - 37,303, 32,305, 39,309, 33,309, 39,314, 34,314, 40,318, - 34,317, 40,321, 34,321, 41,326, 33,326, 40,330, 33,332, - 39,333, 33,337, 42,337, 54,341, 49,337, 52,335, 47,330, - 50,330, 45,325, 49,325, 45,321, 48,321, 45,316, 46,306, - 45,286, 43,274, 36,261 - }; - - init(l, 65, color, coords, ELEMENTS(coords)/2); -} - -static void poly66(struct lion *l) -{ - VGfloat color = 0xffe5b2; - static const VGfloat coords[] = {7,358, 9,351, 14,351, 17,359, 11,364 - }; - - init(l, 66, color, coords, ELEMENTS(coords)/2); -} - -static void poly67(struct lion *l) -{ - VGfloat color = 0xffe5b2; - static const VGfloat coords[] = {44,354, 49,351, 52,355, 49,361 - }; - - init(l, 67, color, coords, ELEMENTS(coords)/2); -} - -static void poly68(struct lion *l) -{ - VGfloat color = 0xffe5b2; - static const VGfloat coords[] = {32,357, 37,353, 40,358, 36,361 - }; - - init(l, 68, color, coords, ELEMENTS(coords)/2); -} - -static void poly69(struct lion *l) -{ - VGfloat color = 0xffe5b2; - static const VGfloat coords[] = {139,334, 145,330, 154,330, 158,334, 154,341, 152,348, - 145,350, 149,340, 147,336, 141,339, 139,345, 136,342, - 136,339 - }; - - init(l, 69, color, coords, ELEMENTS(coords)/2); -} - -static void poly70(struct lion *l) -{ - VGfloat color = 0xffe5b2; - static const VGfloat coords[] = {208,259, 215,259, 212,255, 220,259, 224,263, 225,274, 224,283, - 220,292, 208,300, 206,308, 203,304, 199,315, 197,309, 195,318, - 193,313, 190,322, 190,316, 185,325, 182,318, 180,325, 172,321, - 178,320, 176,313, 186,312, 180,307, 188,307, 184,303, 191,302, - 186,299, 195,294, 187,290, 197,288, 192,286, 201,283, 194,280, - 203,277, 198,275, 207,271, 200,269, 209,265, 204,265, 212,262 - }; - - init(l, 70, color, coords, ELEMENTS(coords)/2); -} - -static void poly71(struct lion *l) -{ - VGfloat color = 0xffe5b2; - static const VGfloat coords[] = {106,126, 106,131, 109,132, 111,134, 115,132, 115,135, 119,133, 118,137, - 123,137, 128,137, 133,134, 136,130, 136,127, 132,124, 118,128, 112,128, - 106,126, 106,126, 106,126 - }; - - init(l, 71, color, coords, ELEMENTS(coords)/2); -} - -static void poly72(struct lion *l) -{ - VGfloat color = 0xffe5b2; - static const VGfloat coords[] = {107,114, 101,110, 98,102, 105,97, 111,98, 119,102, 121,108, 118,112, 113,115 - }; - - init(l, 72, color, coords, ELEMENTS(coords)/2); -} - -static void poly73(struct lion *l) -{ - VGfloat color = 0xffe5b2; - static const VGfloat coords[] = {148,106, 145,110, 146,116, 150,118, 152,111, 151,107 - }; - - init(l, 73, color, coords, ELEMENTS(coords)/2); -} - -static void poly74(struct lion *l) -{ - VGfloat color = 0xffe5b2; - static const VGfloat coords[] = {80,55, 70,52, 75,58, 63,57, 72,61, 57,61, 67,66, 57,67, 62,69, 54,71, - 61,73, 54,77, 63,78, 53,85, 60,84, 56,90, 69,84, 63,82, 75,76, 70,75, - 77,72, 72,71, 78,69, 72,66, 81,67, 78,64, 82,63, 80,60, 86,62 - }; - - init(l, 74, color, coords, ELEMENTS(coords)/2); -} - -static void poly75(struct lion *l) -{ - VGfloat color = 0xffe5b2; - static const VGfloat coords[] = {87,56, 91,52, 96,50, 102,56, 98,56, 92,60 - }; - - init(l, 75, color, coords, ELEMENTS(coords)/2); -} - -static void poly76(struct lion *l) -{ - VGfloat color = 0xffe5b2; - static const VGfloat coords[] = {85,68, 89,73, 98,76, 106,74, 96,73, 91,70 - }; - - init(l, 76, color, coords, ELEMENTS(coords)/2); -} - -static void poly77(struct lion *l) -{ - VGfloat color = 0xffe5b2; - static const VGfloat coords[] = {115,57, 114,64, 111,64, 115,75, 122,81, 122,74, 126,79, - 126,74, 131,78, 130,72, 133,77, 131,68, 126,61, 119,57 - }; - - init(l, 77, color, coords, ELEMENTS(coords)/2); -} - -static void poly78(struct lion *l) -{ - VGfloat color = 0xffe5b2; - static const VGfloat coords[] = {145,48, 143,53, 147,59, 151,59, 150,55 - }; - - init(l, 78, color, coords, ELEMENTS(coords)/2); -} - -static void poly79(struct lion *l) -{ - VGfloat color = 0xffe5b2; - static const VGfloat coords[] = {26,22, 34,15, 43,10, 52,10, 59,16, 47,15, 32,22 - }; - - init(l, 79, color, coords, ELEMENTS(coords)/2); -} - -static void poly80(struct lion *l) -{ - VGfloat color = 0xffe5b2; - static const VGfloat coords[] = {160,19, 152,26, 149,34, 154,33, 152,30, 157,30, 155,26, 158,27, - 157,23, 161,23 - }; - - init(l, 80, color, coords, ELEMENTS(coords)/2); -} - -static void poly81(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {98,117, 105,122, 109,122, 105,117, 113,120, 121,120, 130,112, 128,108, - 123,103, 123,99, 128,101, 132,106, 135,109, 142,105, 142,101, 145,101, - 145,91, 148,101, 145,105, 136,112, 135,116, 143,124, 148,120, 150,122, - 142,128, 133,122, 121,125, 112,126, 103,125, 100,129, 96,124 - }; - - init(l, 81, color, coords, ELEMENTS(coords)/2); -} - -static void poly82(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {146,118, 152,118, 152,115, 149,115 - }; - - init(l, 82, color, coords, ELEMENTS(coords)/2); -} - -static void poly83(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {148,112, 154,111, 154,109, 149,109 - }; - - init(l, 83, color, coords, ELEMENTS(coords)/2); -} - -static void poly84(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {106,112, 108,115, 114,116, 118,114 - }; - - init(l, 84, color, coords, ELEMENTS(coords)/2); -} - -static void poly85(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {108,108, 111,110, 116,110, 119,108 - }; - - init(l, 85, color, coords, ELEMENTS(coords)/2); -} - -static void poly86(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {106,104, 109,105, 117,106, 115,104 - }; - - init(l, 86, color, coords, ELEMENTS(coords)/2); -} - -static void poly87(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {50,25, 41,26, 34,33, 39,43, 49,58, 36,51, 47,68, 55,69, 54,59, - 61,57, 74,46, 60,52, 67,42, 57,48, 61,40, 54,45, 60,36, 59,29, - 48,38, 52,30, 47,32 - }; - - init(l, 87, color, coords, ELEMENTS(coords)/2); -} - -static void poly88(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {147,34, 152,41, 155,49, 161,53, 157,47, 164,47, 158,43, 168,44, - 159,40, 164,37, 169,37, 164,33, 169,34, 165,28, 170,30, 170,25, - 173,29, 175,27, 176,32, 173,36, 175,39, 172,42, 172,46, 168,49, - 170,55, 162,57, 158,63, 155,58, 153,50, 149,46 - }; - - init(l, 88, color, coords, ELEMENTS(coords)/2); -} - -static void poly89(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {155,71, 159,80, 157,93, 157,102, 155,108, 150,101, 149,93, - 154,101, 152,91, 151,83, 155,79 - }; - - init(l, 89, color, coords, ELEMENTS(coords)/2); -} - -static void poly90(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {112,78, 115,81, 114,91, 112,87, 113,82 - }; - - init(l, 90, color, coords, ELEMENTS(coords)/2); -} - -static void poly91(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {78,28, 64,17, 58,11, 47,9, 36,10, 28,16, 21,26, 18,41, - 20,51, 23,61, 33,65, 28,68, 37,74, 36,81, 43,87, 48,90, - 43,100, 40,98, 39,90, 31,80, 30,72, 22,71, 17,61, 14,46, - 16,28, 23,17, 33,9, 45,6, 54,6, 65,12 - }; - - init(l, 91, color, coords, ELEMENTS(coords)/2); -} - -static void poly92(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {67,18, 76,9, 87,5, 101,2, 118,3, 135,8, 149,20, 149,26, - 144,19, 132,12, 121,9, 105,7, 89,8, 76,14, 70,20 - }; - - init(l, 92, color, coords, ELEMENTS(coords)/2); -} - -static void poly93(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {56,98, 48,106, 56,103, 47,112, 56,110, 52,115, 57,113, 52,121, 62,115, - 58,123, 65,119, 63,125, 69,121, 68,127, 74,125, 74,129, 79,128, 83,132, - 94,135, 93,129, 85,127, 81,122, 76,126, 75,121, 71,124, 71,117, 66,121, - 66,117, 62,117, 64,112, 60,113, 60,110, 57,111, 61,105, 57,107, 60,101, - 55,102 - }; - - init(l, 93, color, coords, ELEMENTS(coords)/2); -} - -static void poly94(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {101,132, 103,138, 106,134, 106,139, 112,136, 111,142, 115,139, - 114,143, 119,142, 125,145, 131,142, 135,138, 140,134, 140,129, - 143,135, 145,149, 150,171, 149,184, 145,165, 141,150, 136,147, - 132,151, 131,149, 126,152, 125,150, 121,152, 117,148, 111,152, - 110,148, 105,149, 104,145, 98,150, 96,138, 94,132, 94,130, 98,132 - }; - - init(l, 94, color, coords, ELEMENTS(coords)/2); -} - -static void poly95(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {41,94, 32,110, 23,132, 12,163, 6,190, 7,217, 5,236, - 3,247, 9,230, 12,211, 12,185, 18,160, 26,134, 35,110, - 43,99 - }; - - init(l, 95, color, coords, ELEMENTS(coords)/2); -} - -static void poly96(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {32,246, 41,250, 50,257, 52,267, 53,295, 53,323, 59,350, - 54,363, 51,365, 44,366, 42,360, 40,372, 54,372, 59,366, - 62,353, 71,352, 75,335, 73,330, 66,318, 68,302, 64,294, - 67,288, 63,286, 63,279, 59,275, 58,267, 56,262, 50,247, - 42,235, 44,246, 32,236, 35,244 - }; - - init(l, 96, color, coords, ELEMENTS(coords)/2); -} - -static void poly97(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {134,324, 146,320, 159,322, 173,327, 179,337, 179,349, - 172,355, 158,357, 170,350, 174,343, 170,333, 163,328, 152,326, - 134,329 - }; - - init(l, 97, color, coords, ELEMENTS(coords)/2); -} - -static void poly98(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {173,339, 183,334, 184,338, 191,329, 194,332, 199,323, 202,325, - 206,318, 209,320, 213,309, 221,303, 228,296, 232,289, 234,279, - 233,269, 230,262, 225,256, 219,253, 208,252, 198,252, 210,249, - 223,250, 232,257, 237,265, 238,277, 238,291, 232,305, 221,323, - 218,335, 212,342, 200,349, 178,348 - }; - - init(l, 98, color, coords, ELEMENTS(coords)/2); -} - -static void poly99(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {165,296, 158,301, 156,310, 156,323, 162,324, 159,318, - 162,308, 162,304 - }; - - init(l, 99, color, coords, ELEMENTS(coords)/2); -} - -static void poly100(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {99,252, 105,244, 107,234, 115,228, 121,228, 131,235, - 122,233, 113,235, 109,246, 121,239, 133,243, 121,243, - 110,251 - }; - - init(l, 100, color, coords, ELEMENTS(coords)/2); -} - -static void poly101(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {117,252, 124,247, 134,249, 136,253, 126,252 - }; - - init(l, 101, color, coords, ELEMENTS(coords)/2); -} - -static void poly102(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {117,218, 132,224, 144,233, 140,225, 132,219, 117,218, - 117,218, 117,218 - }; - - init(l, 102, color, coords, ELEMENTS(coords)/2); -} - -static void poly103(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {122,212, 134,214, 143,221, 141,213, 132,210 - }; - - init(l, 103, color, coords, ELEMENTS(coords)/2); -} - -static void poly104(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {69,352, 70,363, 76,373, 86,378, 97,379, 108,379, 120,377, - 128,378, 132,373, 135,361, 133,358, 132,366, 127,375, 121,374, - 121,362, 119,367, 117,374, 110,376, 110,362, 107,357, 106,371, - 104,375, 97,376, 90,375, 90,368, 86,362, 83,364, 86,369, 85,373, - 78,370, 73,362, 71,351 - }; - - init(l, 104, color, coords, ELEMENTS(coords)/2); -} - -static void poly105(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {100,360, 96,363, 99,369, 102,364 - }; - - init(l, 105, color, coords, ELEMENTS(coords)/2); -} - -static void poly106(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {115,360, 112,363, 114,369, 117,364 - }; - - init(l, 106, color, coords, ELEMENTS(coords)/2); -} - -static void poly107(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {127,362, 125,364, 126,369, 128,365 - }; - - init(l, 107, color, coords, ELEMENTS(coords)/2); -} - -static void poly108(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {5,255, 7,276, 11,304, 15,320, 13,334, 6,348, 2,353, 0,363, - 5,372, 12,374, 25,372, 38,372, 44,369, 42,367, 36,368, 31,369, - 30,360, 27,368, 20,370, 16,361, 15,368, 10,369, 3,366, 3,359, 6,352, - 11,348, 17,331, 19,316, 12,291, 9,274 - }; - - init(l, 108, color, coords, ELEMENTS(coords)/2); -} - -static void poly109(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {10,358, 7,362, 10,366, 11,362 - }; - - init(l, 109, color, coords, ELEMENTS(coords)/2); -} - -static void poly110(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {25,357, 22,360, 24,366, 27,360 - }; - - init(l, 110, color, coords, ELEMENTS(coords)/2); -} - -static void poly111(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {37,357, 34,361, 36,365, 38,361 - }; - - init(l, 111, color, coords, ELEMENTS(coords)/2); -} - -static void poly112(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {49,356, 46,359, 47,364, 50,360 - }; - - init(l, 112, color, coords, ELEMENTS(coords)/2); -} - -static void poly113(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {130,101, 132,102, 135,101, 139,102, 143,103, - 142,101, 137,100, 133,100 - }; - - init(l, 113, color, coords, ELEMENTS(coords)/2); -} - -static void poly114(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {106,48, 105,52, 108,56, 109,52 - }; - - init(l, 114, color, coords, ELEMENTS(coords)/2); -} - -static void poly115(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {139,52, 139,56, 140,60, 142,58, 141,56 - }; - - init(l, 115, color, coords, ELEMENTS(coords)/2); -} - -static void poly116(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {25,349, 29,351, 30,355, 33,350, 37,348, 42,351, 45,347, - 49,345, 44,343, 36,345 - }; - - init(l, 116, color, coords, ELEMENTS(coords)/2); -} - -static void poly117(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {98,347, 105,351, 107,354, 109,349, 115,349, 120,353, 118,349, - 113,346, 104,346 - }; - - init(l, 117, color, coords, ELEMENTS(coords)/2); -} - -static void poly118(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {83,348, 87,352, 87,357, 89,351, 87,348 - }; - - init(l, 118, color, coords, ELEMENTS(coords)/2); -} - -static void poly119(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {155,107, 163,107, 170,107, 186,108, 175,109, 155,109 - }; - - init(l, 119, color, coords, ELEMENTS(coords)/2); -} - -static void poly120(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {153,114, 162,113, 175,112, 192,114, 173,114, 154,115 - }; - - init(l, 120, color, coords, ELEMENTS(coords)/2); -} - -static void poly121(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {152,118, 164,120, 180,123, 197,129, 169,123, 151,120 - }; - - init(l, 121, color, coords, ELEMENTS(coords)/2); -} - -static void poly122(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {68,109, 87,106, 107,106, 106,108, 88,108 - }; - - init(l, 122, color, coords, ELEMENTS(coords)/2); -} - -static void poly123(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {105,111, 95,112, 79,114, 71,116, 85,115, 102,113 - }; - - init(l, 123, color, coords, ELEMENTS(coords)/2); -} - -static void poly124(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {108,101, 98,99, 87,99, 78,99, 93,100, 105,102 - }; - - init(l, 124, color, coords, ELEMENTS(coords)/2); -} - -static void poly125(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {85,63, 91,63, 97,60, 104,60, 108,62, 111,69, 112,75, - 110,74, 108,71, 103,73, 106,69, 105,65, 103,64, 103,67, - 102,70, 99,70, 97,66, 94,67, 97,72, 88,67, 84,66 - }; - - init(l, 125, color, coords, ELEMENTS(coords)/2); -} - -static void poly126(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {140,74, 141,66, 144,61, 150,61, 156,62, 153,70, 150,73, - 152,65, 150,65, 151,68, 149,71, 146,71, 144,66, 143,70, - 143,74 - }; - - init(l, 126, color, coords, ELEMENTS(coords)/2); -} - -static void poly127(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {146,20, 156,11, 163,9, 172,9, 178,14, 182,18, 184,32, 182,42, - 182,52, 177,58, 176,67, 171,76, 165,90, 157,105, 160,92, 164,85, - 168,78, 167,73, 173,66, 172,62, 175,59, 174,55, 177,53, 180,46, - 181,29, 179,21, 173,13, 166,11, 159,13, 153,18, 148,23 - }; - - init(l, 127, color, coords, ELEMENTS(coords)/2); -} - -static void poly128(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {150,187, 148,211, 150,233, 153,247, 148,267, 135,283, 125,299, - 136,292, 131,313, 122,328, 122,345, 129,352, 133,359, 133,367, - 137,359, 148,356, 140,350, 131,347, 129,340, 132,332, 140,328, - 137,322, 140,304, 154,265, 157,244, 155,223, 161,220, 175,229, - 186,247, 185,260, 176,275, 178,287, 185,277, 188,261, 196,253, - 189,236, 174,213 - }; - - init(l, 128, color, coords, ELEMENTS(coords)/2); -} - -static void poly129(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {147,338, 142,341, 143,345, 141,354, 147,343 - }; - - init(l, 129, color, coords, ELEMENTS(coords)/2); -} - -static void poly130(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {157,342, 156,349, 150,356, 157,353, 163,346, 162,342 - }; - - init(l, 130, color, coords, ELEMENTS(coords)/2); -} - -static void poly131(struct lion *l) -{ - VGfloat color = 0x000000; - static const VGfloat coords[] = {99,265, 96,284, 92,299, 73,339, 73,333, 87,300 - }; - - init(l, 131, color, coords, ELEMENTS(coords)/2); -} - - -struct lion * lion_create(void) -{ - struct lion *l = calloc(1, sizeof(struct lion)); - - poly0(l); - poly1(l); - poly2(l); - poly3(l); - poly4(l); - poly5(l); - poly6(l); - poly7(l); - poly8(l); - poly9(l); - - poly10(l); - poly11(l); - poly12(l); - poly13(l); - poly14(l); - poly15(l); - poly16(l); - poly17(l); - poly18(l); - poly19(l); - - poly20(l); - poly21(l); - poly22(l); - poly23(l); - poly24(l); - poly25(l); - poly26(l); - poly27(l); - poly28(l); - poly29(l); - - poly30(l); - poly31(l); - poly32(l); - poly33(l); - poly34(l); - poly35(l); - poly36(l); - poly37(l); - poly38(l); - poly39(l); - - poly40(l); - poly41(l); - poly42(l); - poly43(l); - poly44(l); - poly45(l); - poly46(l); - poly47(l); - poly48(l); - poly49(l); - - poly50(l); - poly51(l); - poly52(l); - poly53(l); - poly54(l); - poly55(l); - poly56(l); - poly57(l); - poly58(l); - poly59(l); - - poly60(l); - poly61(l); - poly62(l); - poly63(l); - poly64(l); - poly65(l); - poly66(l); - poly67(l); - poly68(l); - poly69(l); - - poly70(l); - poly71(l); - poly72(l); - poly73(l); - poly74(l); - poly75(l); - poly76(l); - poly77(l); - poly78(l); - poly79(l); - - poly80(l); - poly81(l); - poly82(l); - poly83(l); - poly84(l); - poly85(l); - poly86(l); - poly87(l); - poly88(l); - poly89(l); - - poly90(l); - poly91(l); - poly92(l); - poly93(l); - poly94(l); - poly95(l); - poly96(l); - poly97(l); - poly98(l); - poly99(l); - - poly100(l); - poly101(l); - poly102(l); - poly103(l); - poly104(l); - poly105(l); - poly106(l); - poly107(l); - poly108(l); - poly109(l); - - poly110(l); - poly111(l); - poly112(l); - poly113(l); - poly114(l); - poly115(l); - poly116(l); - poly117(l); - poly118(l); - poly119(l); - - poly120(l); - poly121(l); - poly122(l); - poly123(l); - poly124(l); - poly125(l); - poly126(l); - poly127(l); - poly128(l); - poly129(l); - - poly130(l); - poly131(l); - - return l; -} - -void lion_render(struct lion *l) -{ - VGint i; - - for (i = 0; i < LION_SIZE; ++i) { - vgSetPaint(l->fills[i], VG_FILL_PATH); - vgDrawPath(l->paths[i], VG_FILL_PATH); - } -} - -void lion_destroy(struct lion *l) -{ - VGint i; - for (i = 0; i < LION_SIZE; ++i) { - vgDestroyPaint(l->fills[i]); - vgDestroyPath(l->paths[i]); - } - free(l); -} diff --git a/progs/openvg/demos/lion-render.h b/progs/openvg/demos/lion-render.h deleted file mode 100644 index c4c020b7ed..0000000000 --- a/progs/openvg/demos/lion-render.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef LION_RENDER_H -#define LION_RENDER_H - -#include <VG/openvg.h> - -#define LION_SIZE 132 -struct lion { - VGPath paths[LION_SIZE]; - VGPaint fills[LION_SIZE]; -}; - -struct lion *lion_create(void); -void lion_render(struct lion *l); -void lion_destroy(struct lion *l); - -#endif diff --git a/progs/openvg/demos/lion.c b/progs/openvg/demos/lion.c deleted file mode 100644 index 7224fed399..0000000000 --- a/progs/openvg/demos/lion.c +++ /dev/null @@ -1,288 +0,0 @@ -#include <assert.h> -#include <math.h> -#include <stdlib.h> -#include <stdio.h> -#include <string.h> -#include <X11/Xlib.h> -#include <X11/Xutil.h> -#include <X11/keysym.h> -#include <VG/openvg.h> -#include <GLES/egl.h> - -#include "lion-render.h" - -static VGint width, height; -struct lion *lion = 0; -VGfloat angle = 0; - -static void -draw(void) -{ - vgClear(0, 0, width, height); - - vgSeti(VG_MATRIX_MODE, VG_MATRIX_PATH_USER_TO_SURFACE); - vgLoadIdentity(); - vgTranslate(width/2, height/2); - vgRotate(angle); - vgTranslate(-width/2, -height/2); - - lion_render(lion); - - ++angle; -} - - -/* new window size or exposure */ -static void -reshape(int w, int h) -{ - width = w; - height = h; -} - - -static void -init(void) -{ - float clear_color[4] = {1.0, 1.0, 1.0, 1.0}; - vgSetfv(VG_CLEAR_COLOR, 4, clear_color); - - lion = lion_create(); -} - - -/* - * Create an RGB, double-buffered X window. - * Return the window and context handles. - */ -static void -make_x_window(Display *x_dpy, EGLDisplay egl_dpy, - const char *name, - int x, int y, int width, int height, - Window *winRet, - EGLContext *ctxRet, - EGLSurface *surfRet) -{ - static const EGLint attribs[] = { - EGL_RED_SIZE, 1, - EGL_GREEN_SIZE, 1, - EGL_BLUE_SIZE, 1, - EGL_NONE - }; - - int scrnum; - XSetWindowAttributes attr; - unsigned long mask; - Window root; - Window win; - XVisualInfo *visInfo, visTemplate; - int num_visuals; - EGLContext ctx; - EGLConfig config; - EGLint num_configs; - EGLint vid; - - scrnum = DefaultScreen( x_dpy ); - root = RootWindow( x_dpy, scrnum ); - - if (!eglChooseConfig( egl_dpy, attribs, &config, 1, &num_configs)) { - printf("Error: couldn't get an EGL visual config\n"); - exit(1); - } - - assert(config); - assert(num_configs > 0); - - if (!eglGetConfigAttrib(egl_dpy, config, EGL_NATIVE_VISUAL_ID, &vid)) { - printf("Error: eglGetConfigAttrib() failed\n"); - exit(1); - } - - /* The X window visual must match the EGL config */ - visTemplate.visualid = vid; - visInfo = XGetVisualInfo(x_dpy, VisualIDMask, &visTemplate, &num_visuals); - if (!visInfo) { - printf("Error: couldn't get X visual\n"); - exit(1); - } - - /* window attributes */ - attr.background_pixel = 0; - attr.border_pixel = 0; - attr.colormap = XCreateColormap( x_dpy, root, visInfo->visual, AllocNone); - attr.event_mask = StructureNotifyMask | ExposureMask | KeyPressMask; - mask = CWBackPixel | CWBorderPixel | CWColormap | CWEventMask; - - win = XCreateWindow( x_dpy, root, 0, 0, width, height, - 0, visInfo->depth, InputOutput, - visInfo->visual, mask, &attr ); - - /* set hints and properties */ - { - XSizeHints sizehints; - sizehints.x = x; - sizehints.y = y; - sizehints.width = width; - sizehints.height = height; - sizehints.flags = USSize | USPosition; - XSetNormalHints(x_dpy, win, &sizehints); - XSetStandardProperties(x_dpy, win, name, name, - None, (char **)NULL, 0, &sizehints); - } - - eglBindAPI(EGL_OPENVG_API); - - ctx = eglCreateContext(egl_dpy, config, EGL_NO_CONTEXT, NULL ); - if (!ctx) { - printf("Error: eglCreateContext failed\n"); - exit(1); - } - - *surfRet = eglCreateWindowSurface(egl_dpy, config, win, NULL); - - if (!*surfRet) { - printf("Error: eglCreateWindowSurface failed\n"); - exit(1); - } - - XFree(visInfo); - - *winRet = win; - *ctxRet = ctx; -} - - -static void -event_loop(Display *dpy, Window win, - EGLDisplay egl_dpy, EGLSurface egl_surf) -{ - while (1) { - XEvent event; - - while (XPending(dpy) > 0) { - XNextEvent(dpy, &event); - - switch (event.type) { - case Expose: - break; - case ConfigureNotify: - reshape(event.xconfigure.width, event.xconfigure.height); - break; - case KeyPress: - { - char buffer[10]; - int r, code; - code = XLookupKeysym(&event.xkey, 0); - r = XLookupString(&event.xkey, buffer, sizeof(buffer), - NULL, NULL); - if (buffer[0] == 27) { - /* escape */ - return; - } - } - break; - default: - ; /*no-op*/ - } - } - - draw(); - eglSwapBuffers(egl_dpy, egl_surf); - } -} - - -static void -usage(void) -{ - printf("Usage:\n"); - printf(" -display <displayname> set the display to run on\n"); - printf(" -info display OpenGL renderer info\n"); -} - -int -main(int argc, char *argv[]) -{ - const int winWidth = 350, winHeight = 450; - Display *x_dpy; - Window win; - EGLSurface egl_surf; - EGLContext egl_ctx; - EGLDisplay egl_dpy; - char *dpyName = NULL; - GLboolean printInfo = GL_FALSE; - EGLint egl_major, egl_minor; - int i; - const char *s; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-display") == 0) { - dpyName = argv[i+1]; - i++; - } - else if (strcmp(argv[i], "-info") == 0) { - printInfo = GL_TRUE; - } - else { - usage(); - return -1; - } - } - - x_dpy = XOpenDisplay(dpyName); - if (!x_dpy) { - printf("Error: couldn't open display %s\n", - dpyName ? dpyName : getenv("DISPLAY")); - return -1; - } - - egl_dpy = eglGetDisplay(x_dpy); - if (!egl_dpy) { - printf("Error: eglGetDisplay() failed\n"); - return -1; - } - - if (!eglInitialize(egl_dpy, &egl_major, &egl_minor)) { - printf("Error: eglInitialize() failed\n"); - return -1; - } - - s = eglQueryString(egl_dpy, EGL_VERSION); - printf("EGL_VERSION = %s\n", s); - - make_x_window(x_dpy, egl_dpy, - "Lion Example", 0, 0, winWidth, winHeight, - &win, &egl_ctx, &egl_surf); - - XMapWindow(x_dpy, win); - if (!eglMakeCurrent(egl_dpy, egl_surf, egl_surf, egl_ctx)) { - printf("Error: eglMakeCurrent() failed\n"); - return -1; - } - - if (printInfo) { - printf("VG_RENDERER = %s\n", (char *) vgGetString(VG_RENDERER)); - printf("VG_VERSION = %s\n", (char *) vgGetString(VG_VERSION)); - printf("VG_VENDOR = %s\n", (char *) vgGetString(VG_VENDOR)); - } - - init(); - - /* Set initial projection/viewing transformation. - * We can't be sure we'll get a ConfigureNotify event when the window - * first appears. - */ - reshape(winWidth, winHeight); - - event_loop(x_dpy, win, egl_dpy, egl_surf); - - eglDestroyContext(egl_dpy, egl_ctx); - eglDestroySurface(egl_dpy, egl_surf); - eglTerminate(egl_dpy); - - - XDestroyWindow(x_dpy, win); - XCloseDisplay(x_dpy); - - return 0; -} diff --git a/progs/openvg/demos/sp.c b/progs/openvg/demos/sp.c deleted file mode 100644 index 424ec47d69..0000000000 --- a/progs/openvg/demos/sp.c +++ /dev/null @@ -1,537 +0,0 @@ -#include "eglcommon.h" - -#include <VG/openvg.h> -#include <VG/vgu.h> -#include <stdio.h> -#include <math.h> -#include <stdlib.h> -#include <string.h> - -#include <X11/keysym.h> - -#define ELEMENTS(x) (sizeof(x)/sizeof((x)[0])) - -struct object { - VGPath path; - VGPaint fill; - VGPaint stroke; - VGint draw_mode; - VGfloat matrix[9]; - VGfloat stroke_width; -}; - -struct character { - struct object objects[32]; - VGint num_objects; -}; -VGfloat identity_matrix[] = {1, 0, 0, 0, 1, 0, 0, 0, 1}; - -struct character cartman; - -static void add_object_fill(const VGubyte *segments, VGint num_segments, - const VGfloat *coords, - VGuint color) -{ - struct object object; - - object.path = vgCreatePath(VG_PATH_FORMAT_STANDARD, VG_PATH_DATATYPE_F, - 1, 0, 0, 0, VG_PATH_CAPABILITY_ALL); - vgAppendPathData(object.path, num_segments, segments, coords); - - object.fill = vgCreatePaint(); - vgSetColor(object.fill, color); - memcpy(object.matrix, identity_matrix, 9 * sizeof(VGfloat)); - object.draw_mode = VG_FILL_PATH; - - cartman.objects[cartman.num_objects] = object; - ++cartman.num_objects; -} - - -static void add_object_stroke(const VGubyte *segments, VGint num_segments, - const VGfloat *coords, - VGuint color, VGfloat width) -{ - struct object object; - - object.path = vgCreatePath(VG_PATH_FORMAT_STANDARD, VG_PATH_DATATYPE_F, - 1, 0, 0, 0, VG_PATH_CAPABILITY_ALL); - vgAppendPathData(object.path, num_segments, segments, coords); - - object.stroke = vgCreatePaint(); - vgSetColor(object.stroke, color); - memcpy(object.matrix, identity_matrix, 9 * sizeof(VGfloat)); - object.draw_mode = VG_STROKE_PATH; - object.stroke_width = width; - - cartman.objects[cartman.num_objects] = object; - ++cartman.num_objects; -} - - -static void add_object_fillm(const VGubyte *segments, VGint num_segments, - const VGfloat *coords, - VGuint color, - VGfloat *matrix) -{ - struct object object; - - object.path = vgCreatePath(VG_PATH_FORMAT_STANDARD, VG_PATH_DATATYPE_F, - 1, 0, 0, 0, VG_PATH_CAPABILITY_ALL); - vgAppendPathData(object.path, num_segments, segments, coords); - - object.fill = vgCreatePaint(); - vgSetColor(object.fill, color); - memcpy(object.matrix, matrix, 9 * sizeof(VGfloat)); - object.draw_mode = VG_FILL_PATH; - - cartman.objects[cartman.num_objects] = object; - ++cartman.num_objects; -} - - -static void add_object_m(const VGubyte *segments, VGint num_segments, - const VGfloat *coords, - VGuint fill_color, - VGuint stroke_color, VGfloat stroke_width, - VGfloat *matrix) -{ - struct object object; - - object.path = vgCreatePath(VG_PATH_FORMAT_STANDARD, VG_PATH_DATATYPE_F, - 1, 0, 0, 0, VG_PATH_CAPABILITY_ALL); - vgAppendPathData(object.path, num_segments, segments, coords); - memcpy(object.matrix, matrix, 9 * sizeof(VGfloat)); - - object.fill = vgCreatePaint(); - vgSetColor(object.fill, fill_color); - object.draw_mode = VG_FILL_PATH | VG_STROKE_PATH; - - object.stroke = vgCreatePaint(); - vgSetColor(object.stroke, stroke_color); - object.stroke_width = stroke_width; - - cartman.objects[cartman.num_objects] = object; - ++cartman.num_objects; -} - -static void init_character() -{ - { - const VGubyte segments[] = {VG_MOVE_TO_ABS, - VG_CUBIC_TO_ABS, - VG_CUBIC_TO_ABS, - VG_CUBIC_TO_ABS, - VG_CUBIC_TO_ABS, - VG_CLOSE_PATH}; - const VGfloat coords[] = {181.83267, 102.60408, - 181.83267,102.60408, 185.53793,114.5749, 186.5355,115.00243, - 187.53306,115.42996, 286.0073,115.00243, 286.0073,115.00243, - 286.0073,115.00243, 292.70526,103.45914, 290.85263,101.03648, - 289.00001,98.61381, 181.54765,102.31906, 181.83267,102.60408 - }; - VGuint color = 0x7c4e32ff; - add_object_fill(segments, ELEMENTS(segments), - coords, color); - } - { - const VGubyte segments[] = { - VG_MOVE_TO_ABS, - VG_CUBIC_TO_ABS, - VG_CUBIC_TO_ABS, - VG_LINE_TO_ABS, - VG_CUBIC_TO_ABS, - VG_CUBIC_TO_ABS, - VG_CUBIC_TO_ABS, - VG_CUBIC_TO_ABS, - VG_CUBIC_TO_ABS, - VG_CUBIC_TO_ABS, - VG_CLOSE_PATH - }; - const VGfloat coords[] = {188.62208,50.604156, - 188.62208,50.604156, 176.73127,60.479579, 170.68509,69.548844, - 164.63892,78.618109, 175.11895,79.827344, 175.11895,79.827344, - 176.52973,98.368952, - 176.52973,98.368952, 189.83131,110.05823, 208.97754,110.25976, - 228.12377,110.46131, 244.24691,111.67054, 247.06846,110.25976, - 249.89,108.849, 258.95927,106.8336, 260.16851,105.01975, - 261.37774,103.2059, 296.84865,106.43053, 297.05019,91.919698, - 297.25172,77.408874, 306.11945,64.308824, 282.13628,51.611853, - 258.15311,38.914882, 189.2267,49.999539, 188.62208,50.604156 - }; - - VGuint color = 0xe30000ff; - add_object_fill(segments, ELEMENTS(segments), - coords, color); - } - { - const VGubyte segments[] = { - VG_MOVE_TO_ABS, - VG_CUBIC_TO_ABS, - VG_CUBIC_TO_ABS, - VG_CUBIC_TO_ABS, - VG_CUBIC_TO_ABS, - VG_CLOSE_PATH - }; - const VGfloat coords[] = { - 68.25, 78.875, - 68.25,93.296, 54.642,105, 37.875,105, - 21.108,105, 7.5,93.296, 7.5,78.875, - 7.5,64.454, 21.108,52.75, 37.875,52.75, - 54.642,52.75, 68.25,64.454, 68.25,78.875 - }; - - VGuint color = 0xffe1c4ff; - VGfloat matrix[] = { - 1.6529, 0, 0, - 0, 1.582037, 0, - 172.9649,-90.0116, 1 - }; - add_object_fillm(segments, ELEMENTS(segments), - coords, color, matrix); - } - { - const VGubyte segments[] = { - VG_MOVE_TO_ABS, VG_CUBIC_TO_ABS, VG_CUBIC_TO_ABS, VG_CUBIC_TO_ABS, - VG_CUBIC_TO_ABS, VG_CUBIC_TO_ABS, VG_CLOSE_PATH - }; - const VGfloat coords[] = { - 170.14687,71.536958, - 173.53626,68.814326, 176.70232,68.971782, 180.55009,71.679467, - 184.39785,74.387153, 199.19294,80.036105, 191.52334,86.500482, - 189.02942,88.6025, 183.97032,85.787933, 180.26507,86.928011, - 178.8737,87.356121, 174.71827,89.783259, 171.8028,87.494856, - 166.95426,83.689139, 163.51779,76.861986, 170.14687,71.536958 - }; - - VGuint color = 0xfff200ff; - add_object_fill(segments, ELEMENTS(segments), - coords, color); - } - { - const VGubyte segments[] = { - VG_MOVE_TO_ABS, VG_CUBIC_TO_ABS, VG_CUBIC_TO_ABS, - VG_CUBIC_TO_ABS, VG_CUBIC_TO_ABS, VG_CUBIC_TO_ABS, - VG_CUBIC_TO_ABS, VG_CLOSE_PATH - }; - const VGfloat coords[] = { - 299.83075,66.834136, - 299.83075,66.834136, 287.85993,64.69649, 284.15467,72.962055, - 280.44942,81.227621, 280.1644,78.234916, 280.1644,79.374994, - 280.1644,80.515072, 278.16927,84.077816, 284.86722,83.792796, - 291.56518,83.507777, 291.99271,86.785501, 294.84291,86.642991, - 297.6931,86.500482, 303.536,85.645423, 303.67851,80.657582, - 303.82102,75.66974, 302.68094,65.551548, 299.83075,66.834136 - }; - - VGuint color = 0xfff200ff; - add_object_fill(segments, ELEMENTS(segments), - coords, color); - } - { - const VGubyte segments[] = { - VG_MOVE_TO_ABS, VG_CUBIC_TO_ABS, VG_CUBIC_TO_ABS, VG_CUBIC_TO_ABS - }; - const VGfloat coords[] = { - 240.83171,75.81225, - 240.83171,75.81225, 241.54426,88.495618, 242.25681,91.488323, - 242.96936,94.481028, 240.6892,108.01945, 240.83171,110.01459, - 240.97422,112.00973, 240.97422,111.01216, 240.97422,111.01216 - }; - VGuint color = 0x000000ff; - VGfloat swidth = 1.14007807; - add_object_stroke(segments, ELEMENTS(segments), coords, color, swidth); - } - { - const VGubyte segments[] = { - VG_MOVE_TO_ABS, VG_CUBIC_TO_ABS, VG_CUBIC_TO_ABS, VG_CUBIC_TO_ABS, - VG_CUBIC_TO_ABS, VG_LINE_TO_ABS, VG_LINE_TO_ABS, VG_CLOSE_PATH - }; - const VGfloat coords[] = { - 83.375, 95.5, - 83.375,96.121, 83.067,96.625, 82.6875,96.625, - 82.308,96.625, 82,96.121, 82,95.5, - 82,94.879, 82.308,94.375, 82.6875,94.375, - 83.066677,94.375, 83.374492,94.878024, 83.374999,95.498494, - 82.6875,95.5, - 83.375,95.5 - }; - VGuint fill_color = 0x000000ff; - VGuint stroke_color = 0x000000ff; - VGfloat swidth = 0.60000002; - VGfloat matrix1[] = { - 1.140078, 0, 0, - 0, 1.140078, 0, - 145.4927, -15.10897, 1 - }; - VGfloat matrix2[] = { - 1.140078,0, 0, - 0,1.140078, 0, - 144.2814,-27.93485, 1 - }; - VGfloat matrix3[] = { - 1.140078,0, 0, - 0,1.140078, 0, - 144.1388,-3.70819, 1 - }; - add_object_m(segments, ELEMENTS(segments), coords, - fill_color, stroke_color, swidth, matrix1); - add_object_m(segments, ELEMENTS(segments), coords, - fill_color, stroke_color, swidth, matrix2); - add_object_m(segments, ELEMENTS(segments), coords, - fill_color, stroke_color, swidth, matrix3); - } - { - const VGubyte segments[] = { - VG_MOVE_TO_ABS, - VG_CUBIC_TO_ABS, VG_CUBIC_TO_ABS, - VG_LINE_TO_ABS, VG_CLOSE_PATH - }; - const VGfloat coords[] = { - 179.41001,115.28745, - 179.41001,115.28745, 207.48443,109.30204, 236.84144,115.14494, - 236.84144,115.14494, 274.74903,109.87208, 291.8502,115.42996, - 179.41001,115.28745 - }; - - VGuint color = 0x000000ff; - add_object_fill(segments, ELEMENTS(segments), - coords, color); - } - { - const VGubyte segments[] = { - VG_MOVE_TO_ABS, VG_CUBIC_TO_ABS, VG_CUBIC_TO_ABS, VG_CUBIC_TO_ABS, - VG_CUBIC_TO_ABS, VG_LINE_TO_ABS, VG_LINE_TO_ABS, VG_CLOSE_PATH - }; - const VGfloat coords[] = { - 83.792156,68.157364, - 83.792156,69.669865, 82.72301,70.897403, 81.40567,70.897403, - 80.08833,70.897403, 79.019185,69.669865, 79.019185,68.157364, - 79.019185,66.644862, 80.08833,65.417325, 81.40567,65.417325, - 82.721887,65.417325, 83.790391,66.642485, 83.792153,68.153696, - 81.40567,68.157364, - 83.792156,68.157364 - }; - VGuint fill_color = 0x000000ff; - VGuint stroke_color = 0x000000ff; - VGfloat swidth = 0.52891117; - VGfloat matrix1[] = { - 1.140078,0, 0, - 0,1.140078, 0, - 145.2489,-15.58714, 1 - }; - add_object_m(segments, ELEMENTS(segments), coords, - fill_color, stroke_color, swidth, matrix1); - } - { - const VGubyte segments[] = { - VG_MOVE_TO_ABS, VG_CUBIC_TO_ABS - }; - const VGfloat coords[] = { - 232.28113,66.976646, - 232.28113,66.976646, 237.98152,70.539389, 245.39202,66.549116 - }; - VGuint color = 0x000000ff; - VGfloat swidth = 0.60299999; - add_object_stroke(segments, ELEMENTS(segments), coords, color, swidth); - } - { - const VGubyte segments[] = { - VG_MOVE_TO_ABS, VG_CUBIC_TO_ABS, VG_CUBIC_TO_ABS, VG_CUBIC_TO_ABS, - VG_CUBIC_TO_ABS, VG_CUBIC_TO_ABS, VG_CLOSE_PATH - }; - const VGfloat coords[] = { - 185.96908,30.061986, - 185.96908,30.061986, 187.76995,14.508377, 203.23909,3.7427917, - 209.95028,-0.92779696, 219.37764,-4.9841866, 232.1078,-6.00046, - 246.13578,-7.1203411, 256.92106,-2.8560739, 264.81774,1.9451947, - 280.60485,11.543934, 284.31582,25.937274, 284.08015,26.526452, - 283.7266,27.410336, 240.83461,1.9346323, 185.96908,30.061986 - }; - VGuint color = 0x8ed8f8ff; - add_object_fill(segments, ELEMENTS(segments), coords, color); - } - { - const VGubyte segments[] = { - VG_MOVE_TO_ABS, VG_LINE_TO_ABS, VG_CUBIC_TO_ABS, - VG_LINE_TO_ABS, VG_CUBIC_TO_ABS, VG_CLOSE_PATH - }; - const VGfloat coords[] = { - 185.39542,32.061757, - 185.82295,29.211562, - 185.82295,29.211562, 234.70379,2.277219, 284.01217,25.078779, - 284.86722,27.643954, - 284.86722,27.643954, 236.69893,4.5573746, 185.39542,32.061757 - }; - VGuint color = 0xfff200ff; - add_object_fill(segments, ELEMENTS(segments), coords, color); - } - - { - const VGubyte segments[] = { - VG_MOVE_TO_ABS, VG_CUBIC_TO_ABS, VG_CUBIC_TO_ABS, VG_CUBIC_TO_ABS, - VG_CUBIC_TO_ABS, VG_CUBIC_TO_ABS, VG_CUBIC_TO_ABS, VG_CUBIC_TO_ABS, - VG_CUBIC_TO_ABS, VG_CUBIC_TO_ABS, VG_CUBIC_TO_ABS, VG_CUBIC_TO_ABS, - VG_CUBIC_TO_ABS, VG_CLOSE_PATH - }; - const VGfloat coords[] = { - 219.74027,-5.917093, - 220.49206,-8.44929, 225.15564,-10.904934, 230.21473,-11.189954, - 235.27383,-11.474973, 243.27521,-13.287236, 249.21385,-5.724198, - 249.89961,-4.850868, 249.28247,-4.332166, 248.62298,-3.971398, - 247.79117,-3.516361, 247.13703,-3.392737, 246.16222,-3.408047, - 243.63973,-3.447664, 242.54183,-3.850701, 242.54183,-3.850701, - 242.54183,-3.850701, 238.78367,-1.737343, 236.20014,-3.565682, - 233.88436,-5.204544, 234.27626,-4.56325, 234.27626,-4.56325, - 234.27626,-4.56325, 232.33303,-2.975658, 230.85603,-2.995643, - 228.59433,-3.025282, 227.73672,-4.501857, 227.21966,-4.93027, - 226.76318,-4.932008, 226.50948,-4.491995, 226.50948,-4.491995, - 226.50948,-4.491995, 224.53199,-2.085883, 222.51431,-2.467064, - 221.48814,-2.66093, 218.91968,-3.15318, 219.74027,-5.917093 - }; - VGuint color = 0xfff200ff; - add_object_fill(segments, ELEMENTS(segments), coords, color); - } - { - const VGubyte segments[] = { - VG_MOVE_TO_ABS, VG_CUBIC_TO_ABS, VG_CUBIC_TO_ABS, - VG_CUBIC_TO_ABS, VG_CUBIC_TO_ABS, VG_CLOSE_PATH - }; - const VGfloat coords[] = { - 178.97347,166.06432, - 178.97347,181.2154, 168.0245,193.51193, 154.53381,193.51193, - 141.04312,193.51193, 130.09416,181.2154, 130.09416,166.06432, - 130.09416,150.91323, 141.04312,138.6167, 154.53381,138.6167, - 168.0245,138.6167, 178.97347,150.91323, 178.97347,166.06432 - }; - VGuint color = 0xffffffff; - VGfloat matrix1[] = { - 0.466614,-0.23492, 0, - 0.108683,0.436638, 0, - 134.5504,-0.901632, 1 - }; - VGfloat matrix2[] = { - -0.466614,-0.23492, 0, - -0.108683,0.436638, 0, - 338.4496,-0.512182, 1 - }; - add_object_fillm(segments, ELEMENTS(segments), coords, color, matrix1); - add_object_fillm(segments, ELEMENTS(segments), coords, color, matrix2); - } - { - const VGubyte segments[] = { - VG_MOVE_TO_ABS, VG_CUBIC_TO_ABS, VG_CUBIC_TO_ABS, - VG_CUBIC_TO_ABS, VG_CUBIC_TO_ABS, VG_CLOSE_PATH - }; - const VGfloat coords[] = { - 123.82758,165.06168, - 123.82758,166.79125, 122.59232,168.19497, 121.07029,168.19497, - 119.54826,168.19497, 118.313,166.79125, 118.313,165.06168, - 118.313,163.3321, 119.54826,161.92839, 121.07029,161.92839, - 122.59232,161.92839, 123.82758,163.3321, 123.82758,165.06168 - }; - VGuint color = 0x000000ff; - VGfloat matrix1[] = { - 0.525719,0, 0, - 0,0.479931, 0, - 178.9702,-43.3532, 1 - }; - VGfloat matrix2[] = { - 0.525719,0, 0, - 0,0.479931, 0, - 165.258,-43.46162, 1 - }; - add_object_fillm(segments, ELEMENTS(segments), coords, color, matrix1); - add_object_fillm(segments, ELEMENTS(segments), coords, color, matrix2); - } - { - const VGubyte segments[] = { - VG_MOVE_TO_ABS, VG_CUBIC_TO_ABS, VG_CUBIC_TO_ABS - }; - const VGfloat coords[] = { - 197.25,54.5, - 197.25,54.5, 211.75,71.5, 229.25,71.5, - 246.75,71.5, 261.74147,71.132714, 277.75,50.75 - }; - VGuint color = 0x000000ff; - VGfloat swidth = 0.60299999; - add_object_stroke(segments, ELEMENTS(segments), coords, color, swidth); - } -} - - -static void -init(void) -{ - float clear_color[4] = {1.0, 1.0, 1.0, 1.0}; - vgSetfv(VG_CLEAR_COLOR, 4, clear_color); - - init_character(); -} - -/* new window size or exposure */ -static void -reshape(int w, int h) -{ -} - -static int -key_press(unsigned key) -{ - switch(key) { - case XK_Right: - - break; - case XK_Left: - break; - case XK_Up: - break; - case XK_Down: - break; - case 'a': - break; - case 's': - break; - default: - break; - } - return VG_FALSE; -} - -static void -draw(void) -{ - VGint i; - VGfloat save_matrix[9]; - - vgClear(0, 0, window_width(), window_height()); - - vgSeti(VG_MATRIX_MODE, VG_MATRIX_PATH_USER_TO_SURFACE); - vgLoadIdentity(); - vgScale(2, 2); - vgTranslate(160, 60); - vgRotate(180); - vgTranslate(-160, -100); - vgGetMatrix(save_matrix); - for (i = 0; i < cartman.num_objects; ++i) { - struct object object = cartman.objects[i]; - if ((object.draw_mode & VG_STROKE_PATH)) { - vgSetf(VG_STROKE_LINE_WIDTH, object.stroke_width); - vgSetPaint(object.stroke, VG_STROKE_PATH); - } - if ((object.draw_mode & VG_FILL_PATH)) - vgSetPaint(object.fill, VG_FILL_PATH); - vgMultMatrix(object.matrix); - vgDrawPath(object.path, object.draw_mode); - vgLoadMatrix(save_matrix); - } - - vgFlush(); -} - - -int main(int argc, char **argv) -{ - set_window_size(400, 400); - return run(argc, argv, init, reshape, draw, key_press); -} diff --git a/progs/openvg/trivial/Makefile b/progs/openvg/trivial/Makefile deleted file mode 100644 index fcb3484377..0000000000 --- a/progs/openvg/trivial/Makefile +++ /dev/null @@ -1,127 +0,0 @@ -# These programs aren't intended to be included with the normal distro. -# They're not too interesting but they're good for testing. - -TOP = ../../../ -include $(TOP)/configs/current - -INCLUDES = -I. -I$(TOP)/include -LIBS=-L$(TOP)/$(LIB_DIR) -lm -lX11 -lEGL -lOpenVG -lpthread -CFLAGS += $(INCLUDES) - -HEADERS=eglcommon.h - -PROGRAMS = \ - arc \ - cap \ - clear \ - coord \ - dash \ - ellipse \ - filter \ - gradorigin \ - lineto \ - lingrad \ - lookup \ - mask4 \ - mask \ - path3 \ - radialgrad \ - readpixels \ - roundedrect \ - star-nonzero \ - star-oddeven \ - stroke2 \ - stroke \ - vguarc - - -.c.o: - $(CC) -c $(INCLUDE_DIRS) $(CFLAGS) $< -o $@ - - - -default: $(PROGRAMS) - - -arc: arc.c eglcommon.o - $(CC) $(CFLAGS) $^ $(LIBS) $(APP_LIB_DEPS) -o $@ - -cap: cap.c eglcommon.o - $(CC) $(CFLAGS) $^ $(LIBS) $(APP_LIB_DEPS) -o $@ - -clear: clear.c eglcommon.o - $(CC) $(CFLAGS) $^ $(LIBS) $(APP_LIB_DEPS) -o $@ - -coord: coord.c eglcommon.o - $(CC) $(CFLAGS) $^ $(LIBS) $(APP_LIB_DEPS) -o $@ - -dash: dash.c eglcommon.o - $(CC) $(CFLAGS) $^ $(LIBS) $(APP_LIB_DEPS) -o $@ - -ellipse: ellipse.c eglcommon.o - $(CC) $(CFLAGS) $^ $(LIBS) $(APP_LIB_DEPS) -o $@ - -filter: filter.c eglcommon.o - $(CC) $(CFLAGS) $^ $(LIBS) $(APP_LIB_DEPS) -o $@ - -gradorigin: gradorigin.c eglcommon.o - $(CC) $(CFLAGS) $^ $(LIBS) $(APP_LIB_DEPS) -o $@ - -image: image.c eglcommon.o - $(CC) $(CFLAGS) $^ $(LIBS) $(APP_LIB_DEPS) -o $@ - -lineto: lineto.c eglcommon.o - $(CC) $(CFLAGS) $^ $(LIBS) $(APP_LIB_DEPS) -o $@ - -lingrad: lingrad.c eglcommon.o - $(CC) $(CFLAGS) $^ $(LIBS) $(APP_LIB_DEPS) -o $@ - -lookup: lookup.c eglcommon.o - $(CC) $(CFLAGS) $^ $(LIBS) $(APP_LIB_DEPS) -o $@ - -mask: mask.c eglcommon.o - $(CC) $(CFLAGS) $^ $(LIBS) $(APP_LIB_DEPS) -o $@ - -mask4: mask4.c eglcommon.o - $(CC) $(CFLAGS) $^ $(LIBS) $(APP_LIB_DEPS) -o $@ - -path3: path3.c eglcommon.o - $(CC) $(CFLAGS) $^ $(LIBS) $(APP_LIB_DEPS) -o $@ - -pattern: pattern.c eglcommon.o - $(CC) $(CFLAGS) $^ $(LIBS) $(APP_LIB_DEPS) -o $@ - -radialgrad: radialgrad.c eglcommon.o - $(CC) $(CFLAGS) $^ $(LIBS) $(APP_LIB_DEPS) -o $@ - -readpixels: readpixels.c eglcommon.o - $(CC) $(CFLAGS) $^ $(LIBS) $(APP_LIB_DEPS) -o $@ - -roundedrect: roundedrect.c eglcommon.o - $(CC) $(CFLAGS) $^ $(LIBS) $(APP_LIB_DEPS) -o $@ - -star-nonzero: star-nonzero.c eglcommon.o - $(CC) $(CFLAGS) $^ $(LIBS) $(APP_LIB_DEPS) -o $@ - -star-oddeven: star-oddeven.c eglcommon.o - $(CC) $(CFLAGS) $^ $(LIBS) $(APP_LIB_DEPS) -o $@ - -stroke: stroke.c eglcommon.o - $(CC) $(CFLAGS) $^ $(LIBS) $(APP_LIB_DEPS) -o $@ - -stroke2: stroke2.c eglcommon.o - $(CC) $(CFLAGS) $^ $(LIBS) $(APP_LIB_DEPS) -o $@ - -vguarc: vguarc.c eglcommon.o - $(CC) $(CFLAGS) $^ $(LIBS) $(APP_LIB_DEPS) -o $@ - - - -eglcommon.o: eglcommon.c $(HEADERS) - $(CC) -c $(CFLAGS) eglcommon.c - - -clean: - rm -f *.o *~ - rm -f *.so - rm -f $(PROGRAMS) diff --git a/progs/openvg/trivial/arc.c b/progs/openvg/trivial/arc.c deleted file mode 100644 index db686bea6b..0000000000 --- a/progs/openvg/trivial/arc.c +++ /dev/null @@ -1,139 +0,0 @@ -#include "eglcommon.h" - -#include <VG/openvg.h> -#include <math.h> - -const VGfloat clear_color[4] = {1.0, 1.0, 1.0, 1.0}; -const VGfloat color[4] = {1.0, 1.0, 1.0, 0.5}; - -VGPath vgPath; - -static void ellipse(VGPath vgPath, VGfloat rx, VGfloat ry, VGfloat angle) -{ - static const VGubyte cmd[] = - { VG_MOVE_TO_ABS, VG_SCCWARC_TO_REL, VG_SCCWARC_TO_REL, VG_CLOSE_PATH }; - - VGfloat val[12]; - VGfloat c = cos(angle) * rx; - VGfloat s = sin(angle) * rx; - - val[0] = c; - val[1] = s; - val[2] = rx; - val[3] = ry; - val[4] = angle; - val[5] = -2.0f * c; - val[6] = -2.0f * s; - val[7] = rx; - val[8] = ry; - val[9] = angle; - val[10] = 2.0f * c; - val[11] = 2.0f * s; - - vgClearPath(vgPath, VG_PATH_CAPABILITY_ALL); - vgAppendPathData(vgPath, sizeof(cmd), cmd, val); - vgDrawPath(vgPath, VG_FILL_PATH | VG_STROKE_PATH); -} - -static void -init(void) -{ - VGPaint vgPaint; - - vgSetfv(VG_CLEAR_COLOR, 4, clear_color); - vgPath = vgCreatePath(VG_PATH_FORMAT_STANDARD, - VG_PATH_DATATYPE_F, 1.0f, 0.0f, 0, 0, - VG_PATH_CAPABILITY_ALL); - - vgPaint = vgCreatePaint(); - vgSetParameteri(vgPaint, VG_PAINT_TYPE, VG_PAINT_TYPE_COLOR); - vgSetColor(vgPaint, 0x00ff00ff); - vgSetPaint(vgPaint, VG_FILL_PATH); - - vgSeti(VG_RENDERING_QUALITY, VG_RENDERING_QUALITY_NONANTIALIASED); - vgSeti(VG_BLEND_MODE, VG_BLEND_SRC_OVER); - vgSetf(VG_STROKE_LINE_WIDTH, 2.0f); - vgSeti(VG_STROKE_CAP_STYLE, VG_CAP_SQUARE); - vgSeti(VG_STROKE_JOIN_STYLE, VG_JOIN_MITER); - vgSetf(VG_STROKE_MITER_LIMIT, 4.0f); - vgSeti(VG_MATRIX_MODE, VG_MATRIX_PATH_USER_TO_SURFACE); -} - -/* new window size or exposure */ -static void -reshape(int w, int h) -{ -} - -static void -draw(void) -{ - vgClear(0, 0, window_width(), window_height()); - -#if 0 - vgLoadIdentity(); - vgTranslate(40.0f, 24.0f); - vgScale(0.61804f, 0.61804f); - vgShear(-1.0f, 0.0f); - vgDrawPath(vgPath, VG_FILL_PATH | VG_STROKE_PATH); -#else - - /* row 1, col 1: Identity transform. */ - - vgLoadIdentity(); - vgTranslate(8.0f, 8.0f); - ellipse(vgPath, 4.0f, 4.0f, 0.0f); - - /* row 1, col 2: 10^3 horizontal squeeze. */ - - vgLoadIdentity(); - vgTranslate(24.0f, 8.0f); - vgScale(1.0e-3f, 1.0f); - ellipse(vgPath, 4.0e3f, 4.0f, 0.0f); - - /* row 1, col 3: 10^6 horizontal squeeze. */ - - vgLoadIdentity(); - vgTranslate(40.0f, 8.0f); - vgScale(1.0e-6f, 1.0f); - ellipse(vgPath, 4.0e6f, 4.0f, 0.0f); - - /* row 1, col 4: 10^9 horizontal squeeze. */ - - vgLoadIdentity(); - vgTranslate(56.0f, 8.0f); - vgScale(1.0e-9f, 1.0f); - ellipse(vgPath, 4.0e9f, 4.0f, 0.0f); - - /* row 2, col 1: 10^3 vertical squeeze. */ - - vgLoadIdentity(); - vgTranslate(8.0f, 24.0f); - vgScale(1.0f, 1.0e-3f); - ellipse(vgPath, 4.0f, 4.0e3f, 0.0f); - - /* row 2, col 2: Shear 0. */ - - vgLoadIdentity(); - vgTranslate(24.0f, 24.0f); - vgShear(0.0f, 0.0f); - ellipse(vgPath, 4.0f, 4.0f, 0.0f); - - /* row 2, col 3: Horizontal shear -1. */ - - vgLoadIdentity(); - vgTranslate(40.0f, 24.0f); - vgScale(0.61804f, 0.61804f); - vgShear(-1.0f, 0.0f); - ellipse(vgPath, 10.47213f, 4.0f, 31.717f); -#endif - vgFlush(); -} - - -int main(int argc, char **argv) -{ - set_window_size(64, 64); - return run(argc, argv, init, reshape, - draw, 0); -} diff --git a/progs/openvg/trivial/cap.c b/progs/openvg/trivial/cap.c deleted file mode 100644 index cd84fe3ac0..0000000000 --- a/progs/openvg/trivial/cap.c +++ /dev/null @@ -1,75 +0,0 @@ -#include "eglcommon.h" - -#include <VG/openvg.h> - -#include <math.h> -#include <stdlib.h> -#include <stdio.h> - -static void -init(void) -{ - -} - -/* new window size or exposure */ -static void -reshape(int w, int h) -{ -} - -const int subtest = 0; -static void -draw(void) -{ - VGPath line; - VGPaint fillPaint; - VGubyte lineCommands[3] = {VG_MOVE_TO_ABS, VG_LINE_TO_ABS, VG_LINE_TO_ABS}; - VGfloat lineCoords[] = {-2.0f,-1.0f, 0.0f,0.0f, -1.0f, -2.0f}; - VGfloat clearColor[] = {0.0f, 0.0f, 0.0f, 1.0f};/* black color */ - VGfloat fillColor[] = {1.0f, 1.0f, 1.0f, 1.0f};/* white color */ - //VGfloat testRadius = 60.0f; - VGfloat testRadius = 10.0f; - int WINDSIZEX = window_width(); - int WINDSIZEY = window_height(); - - line = vgCreatePath(VG_PATH_FORMAT_STANDARD, VG_PATH_DATATYPE_F, - 1.0f, 0.0f, 0, 0, VG_PATH_CAPABILITY_ALL); - fillPaint = vgCreatePaint(); - - vgSetf(VG_STROKE_LINE_WIDTH, 1.0f); - //vgSeti(VG_STROKE_CAP_STYLE, VG_CAP_ROUND); - vgSeti(VG_STROKE_CAP_STYLE, VG_CAP_BUTT); - vgSeti(VG_STROKE_JOIN_STYLE, VG_JOIN_ROUND); - //vgSeti(VG_STROKE_JOIN_STYLE, VG_JOIN_BEVEL); - - vgSeti(VG_RENDERING_QUALITY, VG_RENDERING_QUALITY_BETTER); - - vgSeti(VG_MATRIX_MODE, VG_MATRIX_PATH_USER_TO_SURFACE); - vgLoadIdentity(); - vgTranslate(60, 60); - vgScale(testRadius * 2, testRadius * 2); - - vgAppendPathData(line, 3, lineCommands, lineCoords); - - vgSetfv(VG_CLEAR_COLOR, 4, clearColor); - - vgSetPaint(fillPaint, VG_STROKE_PATH); - - vgSetParameterfv(fillPaint, VG_PAINT_COLOR, 4, fillColor); - vgSetParameteri( fillPaint, VG_PAINT_TYPE, VG_PAINT_TYPE_COLOR); - - vgClear(0, 0, WINDSIZEX, WINDSIZEY); - vgDrawPath(line, VG_STROKE_PATH); - - vgDestroyPath(line); - vgDestroyPaint(fillPaint); -} - - -int main(int argc, char **argv) -{ - set_window_size(100, 100); - return run(argc, argv, init, reshape, - draw, 0); -} diff --git a/progs/openvg/trivial/clear.c b/progs/openvg/trivial/clear.c deleted file mode 100644 index efb6bf4182..0000000000 --- a/progs/openvg/trivial/clear.c +++ /dev/null @@ -1,42 +0,0 @@ -#include "eglcommon.h" - -#include <VG/openvg.h> -#include <stdio.h> - -float red_color[4] = {1.0, 0.0, 0.0, 1.0}; -float blue_color[4] = {0.0, 0.0, 1.0, 1.0}; - -static void -init(void) -{ -} - -/* new window size or exposure */ -static void -reshape(int w, int h) -{ - vgLoadIdentity(); -} - -static void -draw(void) -{ - VGint scissor[4] = {100, 100, 25, 25}; - vgSetfv(VG_CLEAR_COLOR, 4, red_color); - vgClear(0, 0, window_width(), window_height()); - - vgSetfv(VG_CLEAR_COLOR, 4, blue_color); - vgClear(50, 50, 50, 50); - - //vgSetiv(VG_SCISSOR_RECTS, 4, scissor); - //vgSeti(VG_SCISSORING, VG_TRUE); - vgCopyPixels(100, 100, 50, 50, 50, 50); - vgClear(150, 150, 50, 50); -} - - -int main(int argc, char **argv) -{ - return run(argc, argv, init, reshape, - draw, 0); -} diff --git a/progs/openvg/trivial/coord.c b/progs/openvg/trivial/coord.c deleted file mode 100644 index 81f7cb6fc9..0000000000 --- a/progs/openvg/trivial/coord.c +++ /dev/null @@ -1,66 +0,0 @@ -#include "eglcommon.h" - -#include <VG/openvg.h> - -const VGfloat white_color[4] = {1.0, 1.0, 1.0, 1.0}; -const VGfloat color[4] = {0.4, 0.1, 1.0, 1.0}; - -VGPath path; -VGPaint fill; - - -static void -init(void) -{ - /* Absent VG_CLOSE_PATH */ - VGubyte commands[] = {VG_MOVE_TO_ABS, VG_LINE_TO_ABS, VG_LINE_TO_ABS, VG_LINE_TO_ABS, - VG_MOVE_TO_ABS, VG_LINE_TO_ABS, VG_LINE_TO_ABS, VG_LINE_TO_ABS}; - VGfloat clearColor[] = {1.0f, 1.0f, 1.0f, 1.0f};/* white color */ - VGfloat fillColor[] = {1.0f, 0.0f, 0.0f, 1.0f};/* red color */ - VGfloat coords[] = {-16.0f, -16.0f, 0.0f, -16.0f, 0.0f, 0.0f, -16.0f, 0.0f, - 0.0f, 0.0f, 16.0f, 0.0f, 16.0f, 16.0f, 0.0f, 16.0f}; - - vgSetfv(VG_CLEAR_COLOR, 4, clearColor); - vgSeti(VG_RENDERING_QUALITY, VG_RENDERING_QUALITY_NONANTIALIASED); - - vgSeti(VG_MATRIX_MODE, VG_MATRIX_PATH_USER_TO_SURFACE); - vgLoadIdentity(); - vgTranslate(32.0f, 32.0f); - - path = vgCreatePath(VG_PATH_FORMAT_STANDARD, VG_PATH_DATATYPE_F, 1.0f, 0.0f, 0, 0, - VG_PATH_CAPABILITY_ALL); - if (path == VG_INVALID_HANDLE) - return; - fill = vgCreatePaint(); - if (fill == VG_INVALID_HANDLE) { - vgDestroyPath(path); - return; - } - vgAppendPathData(path, 8, commands, coords); - vgSetPaint(fill, VG_FILL_PATH); - vgSetParameterfv(fill, VG_PAINT_COLOR, 4, fillColor); - vgSetParameteri(fill, VG_PAINT_TYPE, VG_PAINT_TYPE_COLOR); -} - -/* new window size or exposure */ -static void -reshape(int w, int h) -{ -} - -static void -draw(void) -{ - vgClear(0, 0, window_width(), window_height()); - vgDrawPath(path, VG_FILL_PATH); - - vgFlush(); -} - - -int main(int argc, char **argv) -{ - set_window_size(64, 64); - return run(argc, argv, init, reshape, - draw, 0); -} diff --git a/progs/openvg/trivial/dash.c b/progs/openvg/trivial/dash.c deleted file mode 100644 index 2e84ddbd4e..0000000000 --- a/progs/openvg/trivial/dash.c +++ /dev/null @@ -1,95 +0,0 @@ -#include "eglcommon.h" - -#include <VG/openvg.h> -#include <X11/keysym.h> -#include <stdio.h> - -const VGfloat white_color[4] = {1.0, 1.0, 1.0, 1.0}; -const VGfloat color[4] = {0.4, 0.1, 1.0, 1.0}; - -VGPath path; -VGPaint fill; - -VGint cap_style = VG_CAP_BUTT; - -static void -init(void) -{ - static const VGubyte cmds[] = {VG_MOVE_TO_ABS, - VG_LINE_TO_ABS, - VG_LINE_TO_ABS - }; -#if 1 - static const VGfloat coords[] = {100, 100, 150, 100, - 150, 200 - }; -#else - static const VGfloat coords[] = {100, 20, 100, 220, - }; -#endif - VGfloat dash_pattern[2] = { 20.f, 20.f }; - path = vgCreatePath(VG_PATH_FORMAT_STANDARD, VG_PATH_DATATYPE_F, 1, 0, 0, 0, - VG_PATH_CAPABILITY_APPEND_TO); - vgAppendPathData(path, 3, cmds, coords); - - fill = vgCreatePaint(); - vgSetParameterfv(fill, VG_PAINT_COLOR, 4, color); - vgSetPaint(fill, VG_FILL_PATH); - - vgSetfv(VG_CLEAR_COLOR, 4, white_color); - vgSetf(VG_STROKE_LINE_WIDTH, 20); - vgSeti(VG_STROKE_CAP_STYLE, cap_style); - vgSeti(VG_STROKE_JOIN_STYLE, VG_JOIN_ROUND); - vgSetfv(VG_STROKE_DASH_PATTERN, 2, dash_pattern); - vgSetf(VG_STROKE_DASH_PHASE, 0.0f); -} - -/* new window size or exposure */ -static void -reshape(int w, int h) -{ - vgLoadIdentity(); -} - -static void -draw(void) -{ - vgClear(0, 0, window_width(), window_height()); - vgDrawPath(path, VG_STROKE_PATH); - - vgFlush(); -} - -static int key_press(unsigned key) -{ - switch(key) { - case XK_c: - case XK_C: - ++cap_style; - if (cap_style > VG_CAP_SQUARE) - cap_style = VG_CAP_BUTT; - switch(cap_style) { - case VG_CAP_BUTT: - fprintf(stderr, "Cap style 'butt'\n"); - break; - case VG_CAP_ROUND: - fprintf(stderr, "Cap style 'round'\n"); - break; - case VG_CAP_SQUARE: - fprintf(stderr, "Cap style 'square'\n"); - break; - } - vgSeti(VG_STROKE_CAP_STYLE, cap_style); - break; - default: - break; - } - - return VG_TRUE; -} - -int main(int argc, char **argv) -{ - return run(argc, argv, init, reshape, - draw, key_press); -} diff --git a/progs/openvg/trivial/eglcommon.c b/progs/openvg/trivial/eglcommon.c deleted file mode 100644 index bacd5685d7..0000000000 --- a/progs/openvg/trivial/eglcommon.c +++ /dev/null @@ -1,288 +0,0 @@ -#include "eglcommon.h" - - -#include <assert.h> -#include <math.h> -#include <stdlib.h> -#include <stdio.h> -#include <string.h> -#include <X11/Xlib.h> -#include <X11/Xutil.h> -#include <X11/keysym.h> -#include <VG/openvg.h> /* using full OpenGL for now */ -#include <GLES/egl.h> - - -static init_func init = 0; -static draw_func draw = 0; -static reshape_func reshape = 0; -static key_func keyPress = 0; -static VGint width = 300, height = 300; - - -void set_window_size(int w, int h) -{ - width = w; - height = h; -} - -/* - * Create an RGB, double-buffered X window. - * Return the window and context handles. - */ -static void -make_x_window(Display *x_dpy, EGLDisplay egl_dpy, - const char *name, - int x, int y, int width, int height, - Window *winRet, - EGLContext *ctxRet, - EGLSurface *surfRet) -{ - static const EGLint attribs[] = { - EGL_RED_SIZE, 1, - EGL_GREEN_SIZE, 1, - EGL_BLUE_SIZE, 1, - EGL_NONE - }; - - int scrnum; - XSetWindowAttributes attr; - unsigned long mask; - Window root; - Window win; - XVisualInfo *visInfo, visTemplate; - int num_visuals; - EGLContext ctx; - EGLConfig config; - EGLint num_configs; - EGLint vid; - - scrnum = DefaultScreen( x_dpy ); - root = RootWindow( x_dpy, scrnum ); - - if (!eglChooseConfig( egl_dpy, attribs, &config, 1, &num_configs)) { - printf("Error: couldn't get an EGL visual config\n"); - exit(1); - } - - assert(config); - assert(num_configs > 0); - - if (!eglGetConfigAttrib(egl_dpy, config, EGL_NATIVE_VISUAL_ID, &vid)) { - printf("Error: eglGetConfigAttrib() failed\n"); - exit(1); - } - - /* The X window visual must match the EGL config */ - visTemplate.visualid = vid; - visInfo = XGetVisualInfo(x_dpy, VisualIDMask, &visTemplate, &num_visuals); - if (!visInfo) { - printf("Error: couldn't get X visual\n"); - exit(1); - } - - /* window attributes */ - attr.background_pixel = 0; - attr.border_pixel = 0; - attr.colormap = XCreateColormap( x_dpy, root, visInfo->visual, AllocNone); - attr.event_mask = StructureNotifyMask | ExposureMask | KeyPressMask; - mask = CWBackPixel | CWBorderPixel | CWColormap | CWEventMask; - - win = XCreateWindow( x_dpy, root, 0, 0, width, height, - 0, visInfo->depth, InputOutput, - visInfo->visual, mask, &attr ); - - /* set hints and properties */ - { - XSizeHints sizehints; - sizehints.x = x; - sizehints.y = y; - sizehints.width = width; - sizehints.height = height; - sizehints.flags = USSize | USPosition; - XSetNormalHints(x_dpy, win, &sizehints); - XSetStandardProperties(x_dpy, win, name, name, - None, (char **)NULL, 0, &sizehints); - } - - eglBindAPI(EGL_OPENVG_API); - - ctx = eglCreateContext(egl_dpy, config, EGL_NO_CONTEXT, NULL ); - if (!ctx) { - printf("Error: eglCreateContext failed\n"); - exit(1); - } - - *surfRet = eglCreateWindowSurface(egl_dpy, config, win, NULL); - - if (!*surfRet) { - printf("Error: eglCreateWindowSurface failed\n"); - exit(1); - } - - XFree(visInfo); - - *winRet = win; - *ctxRet = ctx; -} - -static void -event_loop(Display *dpy, Window win, - EGLDisplay egl_dpy, EGLSurface egl_surf) -{ - while (1) { - int redraw = 0; - XEvent event; - - XNextEvent(dpy, &event); - - switch (event.type) { - case Expose: - redraw = 1; - break; - case ConfigureNotify: - if (reshape) { - width = event.xconfigure.width; - height = event.xconfigure.height; - reshape(event.xconfigure.width, event.xconfigure.height); - } - break; - case KeyPress: - { - char buffer[10]; - int r, code; - code = XLookupKeysym(&event.xkey, 0); - if (!keyPress || !keyPress(code)) { - r = XLookupString(&event.xkey, buffer, sizeof(buffer), - NULL, NULL); - if (buffer[0] == 27) { - /* escape */ - return; - } - } - } - redraw = 1; - break; - default: - ; /*no-op*/ - } - - if (redraw) { - draw(); - eglSwapBuffers(egl_dpy, egl_surf); - } - } -} - -int window_width(void) -{ - return width; -} - -int window_height(void) -{ - return height; -} - -static void -usage(void) -{ - printf("Usage:\n"); - printf(" -display <displayname> set the display to run on\n"); - printf(" -info display OpenGL renderer info\n"); -} - -int run(int argc, char **argv, - init_func init_f, - reshape_func resh_f, - draw_func draw_f, - key_func key_f) -{ - const int winWidth = width, winHeight = height; - Display *x_dpy; - Window win; - EGLSurface egl_surf; - EGLContext egl_ctx; - EGLDisplay egl_dpy; - char *dpyName = NULL; - GLboolean printInfo = GL_FALSE; - EGLint egl_major, egl_minor; - int i; - const char *s; - - init = init_f; - draw = draw_f; - reshape = resh_f; - keyPress = key_f; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-display") == 0) { - dpyName = argv[i+1]; - i++; - } - else if (strcmp(argv[i], "-info") == 0) { - printInfo = GL_TRUE; - } - } - - x_dpy = XOpenDisplay(dpyName); - if (!x_dpy) { - printf("Error: couldn't open display %s\n", - dpyName ? dpyName : getenv("DISPLAY")); - return -1; - } - - egl_dpy = eglGetDisplay(x_dpy); - if (!egl_dpy) { - printf("Error: eglGetDisplay() failed\n"); - return -1; - } - - if (!eglInitialize(egl_dpy, &egl_major, &egl_minor)) { - printf("Error: eglInitialize() failed\n"); - return -1; - } - - s = eglQueryString(egl_dpy, EGL_VERSION); - printf("EGL_VERSION = %s\n", s); - - make_x_window(x_dpy, egl_dpy, - "OpenVG Example", 0, 0, winWidth, winHeight, - &win, &egl_ctx, &egl_surf); - - XMapWindow(x_dpy, win); - if (!eglMakeCurrent(egl_dpy, egl_surf, egl_surf, egl_ctx)) { - printf("Error: eglMakeCurrent() failed\n"); - return -1; - } - - if (printInfo) { - printf("VG_RENDERER = %s\n", (char *) vgGetString(VG_RENDERER)); - printf("VG_VERSION = %s\n", (char *) vgGetString(VG_VERSION)); - printf("VG_VENDOR = %s\n", (char *) vgGetString(VG_VENDOR)); - } - - if (init) - init(); - - /* Set initial projection/viewing transformation. - * We can't be sure we'll get a ConfigureNotify event when the window - * first appears. - */ - if (reshape) - reshape(winWidth, winHeight); - - event_loop(x_dpy, win, egl_dpy, egl_surf); - - eglMakeCurrent(egl_dpy, 0, 0, 0); - eglDestroyContext(egl_dpy, egl_ctx); - eglDestroySurface(egl_dpy, egl_surf); - eglTerminate(egl_dpy); - - - XDestroyWindow(x_dpy, win); - XCloseDisplay(x_dpy); - - return 0; -} - diff --git a/progs/openvg/trivial/eglcommon.h b/progs/openvg/trivial/eglcommon.h deleted file mode 100644 index 958dae9f98..0000000000 --- a/progs/openvg/trivial/eglcommon.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef EGLCOMMON_H -#define EGLCOMMON_H - -typedef void (*init_func)(); -typedef void (*reshape_func)(int, int); -typedef void (*draw_func)(); -typedef int (*key_func)(unsigned key); - - -void set_window_size(int width, int height); -int window_width(void); -int window_height(void); - -int run(int argc, char **argv, - init_func init, - reshape_func resh, - draw_func draw, - key_func key); - -#endif diff --git a/progs/openvg/trivial/ellipse.c b/progs/openvg/trivial/ellipse.c deleted file mode 100644 index 4c7d4904f8..0000000000 --- a/progs/openvg/trivial/ellipse.c +++ /dev/null @@ -1,84 +0,0 @@ -#include "eglcommon.h" - -#include <VG/openvg.h> - -#include <math.h> -#include <stdlib.h> - -const VGfloat white_color[4] = {1.0, 1.0, 1.0, 1.0}; -const VGfloat color[4] = {0.0, 0.0, 0.0, 1.0}; - -VGPath path; -VGPaint paint; - -static void -init(void) -{ - VGfloat clearColor[] = {1.0f, 1.0f, 1.0f, 1.0f};/* white color */ - VGfloat fillColor[] = {1.0f, 0.0f, 0.0f, 1.0f};/* red color */ - static const VGubyte segments[4] = {VG_MOVE_TO_ABS, - VG_SCCWARC_TO_ABS, - VG_SCCWARC_TO_ABS, - VG_CLOSE_PATH}; - VGfloat data[12]; - const VGfloat cx = 0, cy=29, width=80, height=40; - const VGfloat hw = width * 0.5f; - const VGfloat hh = height * 0.5f; - - data[0] = cx + hw; - data[1] = cy; - data[2] = hw; - data[3] = hh; - data[4] = 0; - data[5] = cx - hw; - data[6] = cy; - data[7] = hw; - data[8] = hh; - data[9] = 0; - data[10] = data[0]; - data[11] = cy; - - vgSetfv(VG_CLEAR_COLOR, 4, clearColor); - vgSeti(VG_RENDERING_QUALITY, VG_RENDERING_QUALITY_NONANTIALIASED); - - - path = vgCreatePath(VG_PATH_FORMAT_STANDARD, VG_PATH_DATATYPE_F, - 1.0f, 0.0f, 0, 0, VG_PATH_CAPABILITY_ALL); - if (path == VG_INVALID_HANDLE) { - return; - } - paint = vgCreatePaint(); - if (paint == VG_INVALID_HANDLE) { - vgDestroyPath(path); - return; - } - - vgAppendPathData(path, 4, segments, data); - vgSetParameterfv(paint, VG_PAINT_COLOR, 4, fillColor); - vgSetParameteri( paint, VG_PAINT_TYPE, VG_PAINT_TYPE_COLOR); - vgSetPaint(paint, VG_FILL_PATH); -} - -/* new window size or exposure */ -static void -reshape(int w, int h) -{ -} - -static void -draw(void) -{ - vgClear(0, 0, window_width(), window_height()); - vgLoadIdentity(); - vgTranslate(50, 21); - vgDrawPath(path, VG_FILL_PATH); - vgFlush(); -} - - -int main(int argc, char **argv) -{ - set_window_size(100, 100); - return run(argc, argv, init, reshape, - draw, 0); -} diff --git a/progs/openvg/trivial/filter.c b/progs/openvg/trivial/filter.c deleted file mode 100644 index d96257a933..0000000000 --- a/progs/openvg/trivial/filter.c +++ /dev/null @@ -1,107 +0,0 @@ -#include "eglcommon.h" - -#include <VG/openvg.h> - -#include <math.h> -#include <stdlib.h> -#include <stdio.h> - -const VGfloat white_color[4] = {1.0, 1.0, 1.0, 1.0}; -const VGfloat color[4] = {1.0, 1.0, 1.0, 0.5}; - -VGImage srcImg; -VGImage dstImg; - -VGPaint fill; - -VGfloat bgCol[4] = {0.906f, 0.914f, 0.761f, 1.0f}; - -static void -init(void) -{ - VGfloat red[4]; - VGfloat grey[4]; - VGfloat orange[4]; - VGfloat blue[4]; - VGfloat black[4]; - VGfloat white[4]; - VGshort transKernel[49] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; - - red[0] = 0.6710f; - red[1] = 0.1060f; - red[2] = 0.1330f; - red[3] = 1.0f; - - grey[0] = 0.6347f; - grey[1] = 0.6561f; - grey[2] = 0.6057f; - grey[3] = 1.0f; - - orange[0] = 1.0000f; - orange[1] = 0.8227f; - orange[2] = 0.5057f; - orange[3] = 1.0f; - - blue[0] = 0.0000f; - blue[1] = 0.6908f; - blue[2] = 0.8595f; - blue[3] = 1.0f; - - black[0] = 0; - black[1] = 0; - black[2] = 0; - black[3] = 1.0f; - - white[0] = 1; - white[1] = 1; - white[2] = 1; - white[3] = 1.0f; - - vgSetfv(VG_TILE_FILL_COLOR, 4, blue); - - vgSeti(VG_FILTER_CHANNEL_MASK, 14); - - /* Setup images */ - srcImg = vgCreateImage(VG_sRGBA_8888, 32, 32, - VG_IMAGE_QUALITY_NONANTIALIASED); - dstImg = vgCreateImage(VG_sRGBA_8888, 32, 32, - VG_IMAGE_QUALITY_NONANTIALIASED); - - vgSetfv(VG_CLEAR_COLOR, 4, black); - vgClearImage(srcImg, 0, 0, 32, 32); - vgSetfv(VG_CLEAR_COLOR, 4, red); - vgClearImage(srcImg, 3, 3, 27, 27); - - vgSetfv(VG_CLEAR_COLOR, 4, orange); - vgClearImage(dstImg, 0, 0, 32, 32); - - transKernel[8] = 1; - vgConvolve(dstImg, srcImg, 3, 3, 3, 0, transKernel, - 1, 0, VG_TILE_FILL); -} - -/* new window size or exposure */ -static void -reshape(int w, int h) -{ -} - -static void -draw(void) -{ - vgSetfv(VG_CLEAR_COLOR, 4, bgCol); - vgClear(0, 0, window_width(), window_height()); - vgSeti(VG_MATRIX_MODE, VG_MATRIX_IMAGE_USER_TO_SURFACE); - vgLoadIdentity(); - vgTranslate(10, 10); - vgDrawImage(dstImg); - vgFlush(); -} - - -int main(int argc, char **argv) -{ - set_window_size(64, 64); - return run(argc, argv, init, reshape, - draw, 0); -} diff --git a/progs/openvg/trivial/gradorigin.c b/progs/openvg/trivial/gradorigin.c deleted file mode 100644 index b376263fe5..0000000000 --- a/progs/openvg/trivial/gradorigin.c +++ /dev/null @@ -1,98 +0,0 @@ -#include "eglcommon.h" - -#include <VG/openvg.h> - -#include <stdio.h> -#include <string.h> - -static const VGfloat white_color[4] = {1.0, 1.0, 1.0, 1.0}; - -static VGPath path; -static VGPaint fill; - -VGColorRampSpreadMode spread = VG_COLOR_RAMP_SPREAD_PAD; - -static void -init(void) -{ - VGubyte commands[5] = {VG_MOVE_TO_ABS, VG_LINE_TO_ABS, VG_LINE_TO_ABS, VG_LINE_TO_ABS, VG_CLOSE_PATH}; - VGfloat coords[8] = {0.0f,0.0f, 32.0f,0.0f, 32.0f,32.0f, 0.0f,32.0f }; - - VGfloat rampStop[20] = {-0.5f, 1.0f, 1.0f, 1.0f, 1.0f, - 0.25f, 1.0f, 0.0f, 0.0f, 1.0f, - 0.75f, 0.0f, 0.0f, 1.0f, 1.0f, - 1.5f, 0.0f, 0.0f, 0.0f, 0.0f}; - - VGfloat defaultColor[] = {1.0f, 1.0f, 1.0f, 1.0f}; - VGfloat linearGradient[4] = {0.0f, 0.0f, 0.0f, 32.0f}; - - path = vgCreatePath(VG_PATH_FORMAT_STANDARD, VG_PATH_DATATYPE_F, - 1.0f, 0.0f, 0, 0, VG_PATH_CAPABILITY_ALL); - if (path == VG_INVALID_HANDLE) - return; - - fill = vgCreatePaint(); - if (fill == VG_INVALID_HANDLE) { - vgDestroyPath(path); - return; - } - - vgSetfv(VG_CLEAR_COLOR, 4, defaultColor); - vgSeti(VG_RENDERING_QUALITY, VG_RENDERING_QUALITY_NONANTIALIASED); - - vgAppendPathData(path, 5, commands, coords); - - vgSetPaint(fill, VG_FILL_PATH); - vgSetParameteri(fill, VG_PAINT_TYPE, VG_PAINT_TYPE_LINEAR_GRADIENT); - vgSetParameteri(fill, VG_PAINT_COLOR_RAMP_SPREAD_MODE, - VG_COLOR_RAMP_SPREAD_REPEAT); - vgSetParameterfv(fill, VG_PAINT_LINEAR_GRADIENT, 4, linearGradient); - vgSetParameterfv(fill, VG_PAINT_COLOR_RAMP_STOPS, 20, rampStop); -} - -/* new window size or exposure */ -static void -reshape(int w, int h) -{ - vgLoadIdentity(); -} - -static void -draw(void) -{ - vgClear(0, 0, window_width(), window_height()); - - vgDrawPath(path, VG_FILL_PATH); - - vgFlush(); -} - - -int main(int argc, char **argv) -{ - if (argc > 1) { - const char *arg = argv[1]; - if (!strcmp("-pad", arg)) - spread = VG_COLOR_RAMP_SPREAD_PAD; - else if (!strcmp("-repeat", arg)) - spread = VG_COLOR_RAMP_SPREAD_REPEAT; - else if (!strcmp("-reflect", arg)) - spread = VG_COLOR_RAMP_SPREAD_REFLECT; - } - - switch(spread) { - case VG_COLOR_RAMP_SPREAD_PAD: - printf("Using spread mode: pad\n"); - break; - case VG_COLOR_RAMP_SPREAD_REPEAT: - printf("Using spread mode: repeat\n"); - break; - case VG_COLOR_RAMP_SPREAD_REFLECT: - printf("Using spread mode: reflect\n"); - } - - set_window_size(200, 200); - - return run(argc, argv, init, reshape, - draw, 0); -} diff --git a/progs/openvg/trivial/lineto.c b/progs/openvg/trivial/lineto.c deleted file mode 100644 index 94e2981811..0000000000 --- a/progs/openvg/trivial/lineto.c +++ /dev/null @@ -1,56 +0,0 @@ -#include "eglcommon.h" - -#include <VG/openvg.h> - -const VGfloat white_color[4] = {1.0, 1.0, 1.0, 1.0}; -const VGfloat color[4] = {0.4, 0.1, 1.0, 1.0}; - -VGPath path; -VGPaint fill; - - -static void -init(void) -{ - static const VGubyte sqrCmds[5] = {VG_MOVE_TO_ABS, VG_HLINE_TO_ABS, VG_VLINE_TO_ABS, VG_HLINE_TO_ABS, VG_CLOSE_PATH}; - static const VGfloat sqrCoords[5] = {50.0f, 50.0f, 250.0f, 250.0f, 50.0f}; - path = vgCreatePath(VG_PATH_FORMAT_STANDARD, VG_PATH_DATATYPE_F, 1, 0, 0, 0, - VG_PATH_CAPABILITY_APPEND_TO); - vgAppendPathData(path, 5, sqrCmds, sqrCoords); - - fill = vgCreatePaint(); - vgSetParameterfv(fill, VG_PAINT_COLOR, 4, color); - vgSetPaint(fill, VG_FILL_PATH); - - vgSetfv(VG_CLEAR_COLOR, 4, white_color); - vgSetf(VG_STROKE_LINE_WIDTH, 10); - vgSeti(VG_STROKE_CAP_STYLE, VG_CAP_BUTT); - vgSeti(VG_STROKE_JOIN_STYLE, VG_JOIN_ROUND); - vgSetf(VG_STROKE_MITER_LIMIT, 4.0f); -} - -/* new window size or exposure */ -static void -reshape(int w, int h) -{ - vgLoadIdentity(); -} - -static void -draw(void) -{ - vgClear(0, 0, window_width(), window_height()); - vgSeti(VG_MATRIX_MODE, VG_MATRIX_STROKE_PAINT_TO_USER); - vgLoadIdentity(); - vgScale(2.25, 2.25); - vgDrawPath(path, VG_STROKE_PATH); - - vgFlush(); -} - - -int main(int argc, char **argv) -{ - return run(argc, argv, init, reshape, - draw, 0); -} diff --git a/progs/openvg/trivial/lingrad.c b/progs/openvg/trivial/lingrad.c deleted file mode 100644 index bcaad1f101..0000000000 --- a/progs/openvg/trivial/lingrad.c +++ /dev/null @@ -1,87 +0,0 @@ -#include "eglcommon.h" - -#include <VG/openvg.h> - -#include <stdio.h> -#include <string.h> - -static const VGfloat white_color[4] = {1.0, 1.0, 1.0, 1.0}; - -static VGPath path; -static VGPaint fill; - -VGColorRampSpreadMode spread = VG_COLOR_RAMP_SPREAD_PAD; - -static void -init(void) -{ - static const VGubyte sqrCmds[5] = {VG_MOVE_TO_ABS, VG_HLINE_TO_ABS, VG_VLINE_TO_ABS, VG_HLINE_TO_ABS, VG_CLOSE_PATH}; - static const VGfloat sqrCoords[5] = {0.0f, 0.0f, 400.0f, 400.0f, 0.0f}; - - VGfloat rampStop[] = {0.00f, 1.0f, 1.0f, 1.0f, 1.0f, - 0.33f, 1.0f, 0.0f, 0.0f, 1.0f, - 0.66f, 0.0f, 1.0f, 0.0f, 1.0f, - 1.00f, 0.0f, 0.0f, 1.0f, 1.0f}; - VGfloat linearGradient[4] = {100.0f, 100.0f, 300.0f, 300.0f}; - - path = vgCreatePath(VG_PATH_FORMAT_STANDARD, VG_PATH_DATATYPE_F, 1, 0, 0, 0, - VG_PATH_CAPABILITY_APPEND_TO); - vgAppendPathData(path, 5, sqrCmds, sqrCoords); - - fill = vgCreatePaint(); - vgSetPaint(fill, VG_FILL_PATH); - - vgSetParameteri(fill, VG_PAINT_TYPE, VG_PAINT_TYPE_LINEAR_GRADIENT); - vgSetParameteri(fill, VG_PAINT_COLOR_RAMP_SPREAD_MODE, spread); - vgSetParameterfv(fill, VG_PAINT_LINEAR_GRADIENT, 4, linearGradient); - vgSetParameterfv(fill, VG_PAINT_COLOR_RAMP_STOPS, 20, rampStop); - - vgSetfv(VG_CLEAR_COLOR, 4, white_color); -} - -/* new window size or exposure */ -static void -reshape(int w, int h) -{ - vgLoadIdentity(); -} - -static void -draw(void) -{ - vgClear(0, 0, window_width(), window_height()); - - vgDrawPath(path, VG_FILL_PATH); - - vgFlush(); -} - - -int main(int argc, char **argv) -{ - if (argc > 1) { - const char *arg = argv[1]; - if (!strcmp("-pad", arg)) - spread = VG_COLOR_RAMP_SPREAD_PAD; - else if (!strcmp("-repeat", arg)) - spread = VG_COLOR_RAMP_SPREAD_REPEAT; - else if (!strcmp("-reflect", arg)) - spread = VG_COLOR_RAMP_SPREAD_REFLECT; - } - - switch(spread) { - case VG_COLOR_RAMP_SPREAD_PAD: - printf("Using spread mode: pad\n"); - break; - case VG_COLOR_RAMP_SPREAD_REPEAT: - printf("Using spread mode: repeat\n"); - break; - case VG_COLOR_RAMP_SPREAD_REFLECT: - printf("Using spread mode: reflect\n"); - } - - set_window_size(400, 400); - - return run(argc, argv, init, reshape, - draw, 0); -} diff --git a/progs/openvg/trivial/lookup.c b/progs/openvg/trivial/lookup.c deleted file mode 100644 index a103ba4488..0000000000 --- a/progs/openvg/trivial/lookup.c +++ /dev/null @@ -1,71 +0,0 @@ -#include "eglcommon.h" - -#include <VG/openvg.h> - -#include <math.h> -#include <stdlib.h> -#include <stdio.h> - -const VGfloat white_color[4] = {1.0, 1.0, 1.0, 1.0}; -const VGfloat color[4] = {1.0, 1.0, 1.0, 0.5}; -VGfloat clearColor[] = {1.0f, 0.0f, 0.0f, 1.0f};/* red color */ -VGImage parent; - -VGPaint fill; - -static void -init(void) -{ - VGImage child1, child2; - VGubyte *data; - VGuint LUT[256]; - VGint i; - - data = (VGubyte *)malloc(sizeof(VGubyte)*window_width()*window_height()); - - for (i=0;i<window_width()*window_height();i++) { - data[i] = 0x00; - } - - for (i=0; i<256; i++) { - if ( i == 0 ) - LUT[0] = 0xFFFFFFFF; - else - LUT[i] = 0xFF00FFFF; - } - - parent = vgCreateImage( VG_A_8, 64, 64, VG_IMAGE_QUALITY_NONANTIALIASED ); - - vgImageSubData(parent, data, window_width(), VG_A_8, 0, 0, - window_width(), window_height()); - child1 = vgChildImage(parent, 0, 0, 32, 64); - child2 = vgChildImage(parent, 32, 0, 32, 64); - - vgLookupSingle(child2, child1, LUT, VG_GREEN, VG_FALSE, VG_TRUE); -} - -/* new window size or exposure */ -static void -reshape(int w, int h) -{ -} - -static void -draw(void) -{ - vgSetfv(VG_CLEAR_COLOR, 4, clearColor); - vgClear(0, 0, window_width(), window_height()); - //vgSeti(VG_MATRIX_MODE, VG_MATRIX_IMAGE_USER_TO_SURFACE); - //vgLoadIdentity(); - //vgTranslate(10, 10); - vgDrawImage(parent); - vgFlush(); -} - - -int main(int argc, char **argv) -{ - set_window_size(64, 64); - return run(argc, argv, init, reshape, - draw, 0); -} diff --git a/progs/openvg/trivial/mask.c b/progs/openvg/trivial/mask.c deleted file mode 100644 index e5c00c5699..0000000000 --- a/progs/openvg/trivial/mask.c +++ /dev/null @@ -1,58 +0,0 @@ -#include "eglcommon.h" - -#include <VG/openvg.h> - -const VGfloat white_color[4] = {1.0, 1.0, 1.0, 1.0}; -const VGfloat color[4] = {0.4, 0.1, 1.0, 1.0}; - -VGPath path; -VGPaint fill; - - -static void -init(void) -{ - static const VGubyte sqrCmds[5] = {VG_MOVE_TO_ABS, VG_HLINE_TO_ABS, VG_VLINE_TO_ABS, VG_HLINE_TO_ABS, VG_CLOSE_PATH}; - static const VGfloat sqrCoords[5] = {50.0f, 50.0f, 250.0f, 250.0f, 50.0f}; - path = vgCreatePath(VG_PATH_FORMAT_STANDARD, VG_PATH_DATATYPE_F, 1, 0, 0, 0, - VG_PATH_CAPABILITY_APPEND_TO); - vgAppendPathData(path, 5, sqrCmds, sqrCoords); - - fill = vgCreatePaint(); - vgSetParameterfv(fill, VG_PAINT_COLOR, 4, color); - vgSetPaint(fill, VG_FILL_PATH); - - vgSetfv(VG_CLEAR_COLOR, 4, white_color); - vgSetf(VG_STROKE_LINE_WIDTH, 10); - vgSeti(VG_STROKE_CAP_STYLE, VG_CAP_BUTT); - vgSeti(VG_STROKE_JOIN_STYLE, VG_JOIN_ROUND); - vgSetf(VG_STROKE_MITER_LIMIT, 4.0f); - - vgSeti(VG_MASKING, VG_TRUE); - - vgMask(VG_INVALID_HANDLE, VG_CLEAR_MASK, - 25, 25, 100, 100); -} - -/* new window size or exposure */ -static void -reshape(int w, int h) -{ - vgLoadIdentity(); -} - -static void -draw(void) -{ - vgClear(0, 0, window_width(), window_height()); - vgDrawPath(path, VG_FILL_PATH); - - vgFlush(); -} - - -int main(int argc, char **argv) -{ - return run(argc, argv, init, reshape, - draw, 0); -} diff --git a/progs/openvg/trivial/mask4.c b/progs/openvg/trivial/mask4.c deleted file mode 100644 index fe6db39648..0000000000 --- a/progs/openvg/trivial/mask4.c +++ /dev/null @@ -1,132 +0,0 @@ -#include "eglcommon.h" - -#include <VG/openvg.h> -#include <VG/vgu.h> -#include <stdio.h> -#include <math.h> -#include <stdlib.h> - -#include <X11/keysym.h> - -//VGint x_pos = -10, y_pos = -10; -VGint x_pos = 0, y_pos = 4; -VGint img_width = 120, img_height = 120; - -static void RectToPath(VGPath path, VGfloat x, VGfloat y, VGfloat width, VGfloat height) -{ - static const VGubyte segments[5] = {VG_MOVE_TO_ABS, - VG_HLINE_TO_ABS, - VG_VLINE_TO_ABS, - VG_HLINE_TO_ABS, - VG_CLOSE_PATH}; - VGfloat data[5]; - - data[0] = x; - data[1] = y; - data[2] = x + width; - data[3] = y + height; - data[4] = x; - - vgAppendPathData(path, 5, segments, data); -} - -static void -init(void) -{ -} - -/* new window size or exposure */ -static void -reshape(int w, int h) -{ -} - -int key_press(unsigned key) -{ - switch(key) { - case XK_Right: - x_pos +=1; - break; - case XK_Left: - x_pos -=1; - break; - case XK_Up: - y_pos +=1; - break; - case XK_Down: - y_pos -=1; - break; - case 'a': - img_width -= 5; - img_height -= 5; - break; - case 's': - img_width += 5; - img_height += 5; - break; - default: - break; - } - fprintf(stderr, "Posi = %dx%d\n", x_pos, y_pos); - fprintf(stderr, "Size = %dx%d\n", img_width, img_height); - return VG_FALSE; -} - -static void -draw(void) -{ - VGint WINDSIZEX = window_width(); - VGint WINDSIZEY = window_height(); - - VGPaint fill; - VGPath box; - VGfloat color[4] = {1.f, 0.f, 0.f, 1.f}; - VGfloat bgCol[4] = {0.7f, 0.7f, 0.7f, 1.0f}; - VGfloat transCol[4] = {0.f, 0.f, 0.f, 0.f}; - VGImage image = vgCreateImage(VG_sRGBA_8888, img_width, img_height, - VG_IMAGE_QUALITY_NONANTIALIASED); - - /* Background clear */ - fill = vgCreatePaint(); - vgSetParameterfv(fill, VG_PAINT_COLOR, 4, color); - vgSetPaint(fill, VG_FILL_PATH); - - box = vgCreatePath(VG_PATH_FORMAT_STANDARD, VG_PATH_DATATYPE_F, - 1, 0, 0, 0, VG_PATH_CAPABILITY_ALL); - /* Rectangle to cover completely 16x16 pixel area. */ - RectToPath(box, 0, 0, 64, 64); - - vgSetfv(VG_CLEAR_COLOR, 4, transCol); - vgClearImage(image, 0, 0, img_width, img_height); - vgSetfv(VG_CLEAR_COLOR, 4, color); - vgClearImage(image, 10, 10, 12, 12); - //vgImageSubData(image, pukki_64x64_data, pukki_64x64_stride, - // VG_sRGBA_8888, 0, 0, 32, 32); - vgSeti(VG_MASKING, VG_TRUE); - vgLoadIdentity(); - - vgSetfv(VG_CLEAR_COLOR, 4, bgCol); - vgClear(0, 0, WINDSIZEX, WINDSIZEY); - - - vgMask(image, VG_FILL_MASK, 0, 0, window_width(), window_height()); - vgMask(image, VG_SET_MASK, x_pos, y_pos, 100, 100); - - vgDrawPath(box, VG_FILL_PATH); - - //vgSeti(VG_MATRIX_MODE, VG_MATRIX_IMAGE_USER_TO_SURFACE); - //vgTranslate(-10, -10); - //vgDrawImage(image); - - - vgDestroyPaint(fill); - vgDestroyPath(box); -} - - -int main(int argc, char **argv) -{ - set_window_size(64, 64); - return run(argc, argv, init, reshape, - draw, key_press); -} diff --git a/progs/openvg/trivial/path3.c b/progs/openvg/trivial/path3.c deleted file mode 100644 index 5ce600f65a..0000000000 --- a/progs/openvg/trivial/path3.c +++ /dev/null @@ -1,77 +0,0 @@ -#include "eglcommon.h" - -#include <VG/openvg.h> -#include <VG/vgu.h> -#include <stdio.h> -#include <math.h> -#include <stdlib.h> - -static void -init(void) -{ -} - -/* new window size or exposure */ -static void -reshape(int w, int h) -{ -} - - -static void -draw(void) -{ - VGint WINDSIZEX = window_width(); - VGint WINDSIZEY = window_height(); - VGPath path; - VGPaint paint; - - VGfloat clearColor[] = {1.0f, 1.0f, 1.0f, 0.0f};/* white color */ - VGfloat fillColor[] = {1.0f, 0.0f, 0.0f, 1.0f};/* red color */ - -#if 1 - VGubyte commands[4] = {VG_MOVE_TO_ABS, VG_LCWARC_TO_ABS, VG_SCWARC_TO_ABS, VG_CLOSE_PATH}; -#else - VGubyte commands[4] = {VG_MOVE_TO_ABS, VG_SCCWARC_TO_ABS, VG_LCCWARC_TO_ABS,VG_CLOSE_PATH}; -#endif - VGfloat coords[] = {32.0f, 0.0f, - -32.0f, -32.0f, 0.0f, 64.0f, 32.0f, - -32.0f, -32.0f, 0.0f, 32.0f, 0.0f}; - - - vgSetfv(VG_CLEAR_COLOR, 4, clearColor); - vgClear(0, 0, WINDSIZEX, WINDSIZEY); - vgSeti(VG_RENDERING_QUALITY, VG_RENDERING_QUALITY_NONANTIALIASED); - - vgSeti(VG_MATRIX_MODE, VG_MATRIX_PATH_USER_TO_SURFACE); - vgLoadIdentity(); - //vgTranslate(32.0f, 32.0f); - - path = vgCreatePath( VG_PATH_FORMAT_STANDARD, VG_PATH_DATATYPE_F, - 1.0f, 0.0f, 0, 0, VG_PATH_CAPABILITY_ALL ); - if ( path == VG_INVALID_HANDLE ) { - return; - } - paint = vgCreatePaint(); - if ( paint == VG_INVALID_HANDLE ) { - vgDestroyPath(path); - return; - } - - vgAppendPathData(path, 4, commands, coords); - vgSetParameterfv(paint, VG_PAINT_COLOR, 4, fillColor); - vgSetParameteri( paint, VG_PAINT_TYPE, VG_PAINT_TYPE_COLOR); - vgSetPaint(paint, VG_FILL_PATH); - vgDrawPath(path, VG_FILL_PATH); - - vgDestroyPath(path); - vgDestroyPaint(paint); -} - - -int main(int argc, char **argv) -{ - set_window_size(64, 64); - return run(argc, argv, init, reshape, - draw, 0); -} diff --git a/progs/openvg/trivial/radialgrad.c b/progs/openvg/trivial/radialgrad.c deleted file mode 100644 index cf3b1d522d..0000000000 --- a/progs/openvg/trivial/radialgrad.c +++ /dev/null @@ -1,99 +0,0 @@ -#include "eglcommon.h" - -#include <VG/openvg.h> - -#include <stdio.h> -#include <string.h> - -static const VGfloat white_color[4] = {1.0, 1.0, 1.0, 1.0}; - -static VGPath path; -static VGPaint fill; - - -VGfloat centeredGradient[5] = {200.0f, 200.0f, 200.0f, 200.0f, 100}; -VGfloat noncenteredGradient[5] = {200.0f, 200.0f, 250.0f, 250.0f, 100}; -VGfloat *radialGradient = centeredGradient; - -VGColorRampSpreadMode spread = VG_COLOR_RAMP_SPREAD_PAD; - -static void -init(void) -{ - static const VGubyte sqrCmds[5] = {VG_MOVE_TO_ABS, VG_HLINE_TO_ABS, VG_VLINE_TO_ABS, VG_HLINE_TO_ABS, VG_CLOSE_PATH}; - static const VGfloat sqrCoords[5] = {0.0f, 0.0f, 400.0f, 400.0f, 0.0f}; - - VGfloat rampStop[] = {0.00f, 1.0f, 1.0f, 1.0f, 1.0f, - 0.33f, 1.0f, 0.0f, 0.0f, 1.0f, - 0.66f, 0.0f, 1.0f, 0.0f, 1.0f, - 1.00f, 0.0f, 0.0f, 1.0f, 1.0f}; - - path = vgCreatePath(VG_PATH_FORMAT_STANDARD, VG_PATH_DATATYPE_F, 1, 0, 0, 0, - VG_PATH_CAPABILITY_APPEND_TO); - vgAppendPathData(path, 5, sqrCmds, sqrCoords); - - fill = vgCreatePaint(); - vgSetPaint(fill, VG_FILL_PATH); - - vgSetParameteri(fill, VG_PAINT_TYPE, VG_PAINT_TYPE_RADIAL_GRADIENT); - vgSetParameteri(fill, VG_PAINT_COLOR_RAMP_SPREAD_MODE, spread); - vgSetParameterfv(fill, VG_PAINT_RADIAL_GRADIENT, 5, radialGradient); - vgSetParameterfv(fill, VG_PAINT_COLOR_RAMP_STOPS, 20, rampStop); - - vgSetfv(VG_CLEAR_COLOR, 4, white_color); -} - -/* new window size or exposure */ -static void -reshape(int w, int h) -{ - vgLoadIdentity(); -} - -static void -draw(void) -{ - vgClear(0, 0, window_width(), window_height()); - - vgDrawPath(path, VG_FILL_PATH); - - vgFlush(); -} - - -int main(int argc, char **argv) -{ - VGint i; - for (i = 1; i < argc; ++i) { - const char *arg = argv[i]; - if (!strcmp("-pad", arg)) - spread = VG_COLOR_RAMP_SPREAD_PAD; - else if (!strcmp("-repeat", arg)) - spread = VG_COLOR_RAMP_SPREAD_REPEAT; - else if (!strcmp("-reflect", arg)) - spread = VG_COLOR_RAMP_SPREAD_REFLECT; - else if (!strcmp("-center", arg)) { - printf("Centered radial gradient\n"); - radialGradient = centeredGradient; - } else if (!strcmp("-noncenter", arg)) { - printf("Non centered radial gradient\n"); - radialGradient = noncenteredGradient; - } - } - - switch(spread) { - case VG_COLOR_RAMP_SPREAD_PAD: - printf("Using spread mode: pad\n"); - break; - case VG_COLOR_RAMP_SPREAD_REPEAT: - printf("Using spread mode: repeat\n"); - break; - case VG_COLOR_RAMP_SPREAD_REFLECT: - printf("Using spread mode: reflect\n"); - } - - set_window_size(400, 400); - - return run(argc, argv, init, reshape, - draw, 0); -} diff --git a/progs/openvg/trivial/readpixels.c b/progs/openvg/trivial/readpixels.c deleted file mode 100644 index c8e286db9a..0000000000 --- a/progs/openvg/trivial/readpixels.c +++ /dev/null @@ -1,75 +0,0 @@ -#include "eglcommon.h" - -#include <VG/openvg.h> - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <assert.h> - -float red_color[4] = {1.0, 0.0, 0.0, 1.0}; -float blue_color[4] = {0.0, 0.0, 1.0, 1.0}; -VGint *data; - -static void -init(void) -{ - data = malloc(sizeof(VGint)*2048*2048); -} - -/* new window size or exposure */ -static void -reshape(int w, int h) -{ - vgLoadIdentity(); -} - -static void -draw(void) -{ - static const VGint red_pixel = 255 << 24 | 255 << 16 | 0 << 8 | 0; - static const VGint blue_pixel = 255 << 24 | 0 << 16 | 0 << 8 | 255; - VGint i; - - vgSetfv(VG_CLEAR_COLOR, 4, red_color); - vgClear(0, 0, window_width(), window_height()); - vgFlush(); - - memset(data, 0, window_width() * window_height() * sizeof(VGint)); - - vgReadPixels(data, window_width() * sizeof(VGint), - VG_lARGB_8888, - 0, 0, window_width(), window_height()); - - fprintf(stderr, "Red 0 = 0x%x and at 600 = 0x%x\n", - data[0], data[600]); - for (i = 0; i < window_width() * window_height(); ++i) { - assert(data[i] == red_pixel); - } - - vgSetfv(VG_CLEAR_COLOR, 4, blue_color); - vgClear(50, 50, 50, 50); - vgFlush(); - - memset(data, 0, window_width() * window_height() * sizeof(VGint)); - - vgReadPixels(data, 50 * sizeof(VGint), - VG_lARGB_8888, - 50, 50, 50, 50); - - fprintf(stderr, "Blue 0 = 0x%x and at 100 = 0x%x\n", - data[0], data[100]); - for (i = 0; i < 50 * 50; ++i) { - assert(data[i] == blue_pixel); - } -} - - -int main(int argc, char **argv) -{ - int ret = run(argc, argv, init, reshape, - draw, 0); - - free(data); - return ret; -} diff --git a/progs/openvg/trivial/roundedrect.c b/progs/openvg/trivial/roundedrect.c deleted file mode 100644 index c80a4ed299..0000000000 --- a/progs/openvg/trivial/roundedrect.c +++ /dev/null @@ -1,67 +0,0 @@ -#include "eglcommon.h" - -#include <VG/openvg.h> - -const VGfloat white_color[4] = {1.0, 1.0, 1.0, 1.0}; -const VGfloat color[4] = {0.9, 0.1, 0.1, 0.8}; - -VGPath path; -VGPaint fill; - - -static void -init(void) -{ - static const VGubyte sqrCmds[10] = {VG_MOVE_TO_ABS, - VG_LINE_TO_ABS, - VG_CUBIC_TO_ABS, - VG_LINE_TO_ABS, - VG_CUBIC_TO_ABS, - VG_LINE_TO_ABS, - VG_CUBIC_TO_ABS, - VG_LINE_TO_ABS, - VG_CUBIC_TO_ABS, - VG_CLOSE_PATH}; - static const VGfloat sqrCoords[] = { - 45.885571, 62.857143, - 154.11442, 62.857143, - 162.1236, 62.857143, 168.57142, 70.260744, 168.57142, 79.457144, - 168.57142, 123.4, - 168.57142, 132.5964, 162.1236, 140, 154.11442, 140, - 45.885571, 140, - 37.876394, 140, 31.428572, 132.5964, 31.428572, 123.4, - 31.428572, 79.457144, - 31.428572, 70.260744, 37.876394,62.857143, 45.885571,62.857143 - }; - path = vgCreatePath(VG_PATH_FORMAT_STANDARD, VG_PATH_DATATYPE_F, 1, 0, 0, 0, - VG_PATH_CAPABILITY_APPEND_TO); - vgAppendPathData(path, 10, sqrCmds, sqrCoords); - - fill = vgCreatePaint(); - vgSetParameterfv(fill, VG_PAINT_COLOR, 4, color); - vgSetPaint(fill, VG_FILL_PATH); - - vgSetfv(VG_CLEAR_COLOR, 4, white_color); - vgSetf(VG_STROKE_LINE_WIDTH, 6); -} - -/* new window size or exposure */ -static void -reshape(int w, int h) -{ - vgLoadIdentity(); -} - -static void -draw(void) -{ - vgClear(0, 0, window_width(), window_height()); - vgDrawPath(path, VG_STROKE_PATH); -} - - -int main(int argc, char **argv) -{ - return run(argc, argv, init, reshape, - draw, 0); -} diff --git a/progs/openvg/trivial/star-nonzero.c b/progs/openvg/trivial/star-nonzero.c deleted file mode 100644 index 012fbd3929..0000000000 --- a/progs/openvg/trivial/star-nonzero.c +++ /dev/null @@ -1,55 +0,0 @@ -#include "eglcommon.h" - -#include <VG/openvg.h> - -const VGfloat white_color[4] = {1.0, 1.0, 1.0, 1.0}; -const VGfloat green_color[4] = {0.0, 1.0, 0.0, 0.8}; - -VGPath path; -VGPaint fill; - - -static void -init(void) -{ - static const VGubyte cmds[6] = {VG_MOVE_TO_ABS, VG_LINE_TO_ABS, VG_LINE_TO_ABS, VG_LINE_TO_ABS, - VG_LINE_TO_ABS, VG_CLOSE_PATH}; - static const VGfloat coords[] = { 0, 200, - 300, 200, - 50, 0, - 150, 300, - 250, 0}; - path = vgCreatePath(VG_PATH_FORMAT_STANDARD, VG_PATH_DATATYPE_F, 1, 0, 0, 0, - VG_PATH_CAPABILITY_APPEND_TO); - vgAppendPathData(path, 6, cmds, coords); - - fill = vgCreatePaint(); - vgSetParameterfv(fill, VG_PAINT_COLOR, 4, green_color); - vgSetPaint(fill, VG_FILL_PATH); - - vgSetfv(VG_CLEAR_COLOR, 4, white_color); - vgSeti(VG_FILL_RULE, VG_NON_ZERO); -} - -/* new window size or exposure */ -static void -reshape(int w, int h) -{ - vgLoadIdentity(); -} - -static void -draw(void) -{ - vgClear(0, 0, window_width(), window_height()); - vgDrawPath(path, VG_FILL_PATH | VG_STROKE_PATH); - - vgFlush(); -} - - -int main(int argc, char **argv) -{ - return run(argc, argv, init, reshape, - draw, 0); -} diff --git a/progs/openvg/trivial/star-oddeven.c b/progs/openvg/trivial/star-oddeven.c deleted file mode 100644 index 17311cf720..0000000000 --- a/progs/openvg/trivial/star-oddeven.c +++ /dev/null @@ -1,102 +0,0 @@ -#include "eglcommon.h" - -#include <VG/openvg.h> - -const VGfloat white_color[4] = {1.0, 1.0, 1.0, 1.0}; -const VGfloat green_color[4] = {0.0, 1.0, 0.0, 0.8}; -const VGfloat black_color[4] = {0.0, 0.0, 0.0, 1.0}; - -VGPath path; -VGPaint fill; - - -static void draw_point(VGfloat x, VGfloat y) -{ - - static const VGubyte cmds[] = {VG_MOVE_TO_ABS, VG_LINE_TO_ABS, VG_LINE_TO_ABS, - VG_LINE_TO_ABS, VG_CLOSE_PATH}; - const VGfloat coords[] = { x - 2, y - 2, - x + 2, y - 2, - x + 2, y + 2, - x - 2, y + 2}; - VGPath path; - VGPaint fill; - - path = vgCreatePath(VG_PATH_FORMAT_STANDARD, VG_PATH_DATATYPE_F, 1, 0, 0, 0, - VG_PATH_CAPABILITY_ALL); - vgAppendPathData(path, 5, cmds, coords); - - fill = vgCreatePaint(); - vgSetParameterfv(fill, VG_PAINT_COLOR, 4, black_color); - vgSetPaint(fill, VG_FILL_PATH); - - vgDrawPath(path, VG_FILL_PATH); - - vgDestroyPath(path); - vgDestroyPaint(fill); -} - -static void draw_marks(VGPath path) -{ - VGfloat point[2], tangent[2]; - int i = 0; - - for (i = 0; i < 1300; i += 50) { - vgPointAlongPath(path, 0, 6, i, - point + 0, point + 1, - tangent + 0, tangent + 1); - draw_point(point[0], point[1]); - } -} - -static void -init(void) -{ - static const VGubyte cmds[6] = {VG_MOVE_TO_ABS, VG_LINE_TO_ABS, VG_LINE_TO_ABS, VG_LINE_TO_ABS, - VG_LINE_TO_ABS, VG_CLOSE_PATH}; - static const VGfloat coords[] = { 0, 200, - 300, 200, - 50, 0, - 150, 300, - 250, 0}; - path = vgCreatePath(VG_PATH_FORMAT_STANDARD, VG_PATH_DATATYPE_F, 1, 0, 0, 0, - VG_PATH_CAPABILITY_ALL); - vgAppendPathData(path, 6, cmds, coords); - - fill = vgCreatePaint(); - vgSetParameterfv(fill, VG_PAINT_COLOR, 4, green_color); - vgSetPaint(fill, VG_FILL_PATH); - - vgSetfv(VG_CLEAR_COLOR, 4, white_color); -} - -/* new window size or exposure */ -static void -reshape(int w, int h) -{ - vgLoadIdentity(); -} - -static void -draw(void) -{ - VGfloat point[2], tangent[2]; - int i = 0; - - vgClear(0, 0, window_width(), window_height()); - - vgSetPaint(fill, VG_FILL_PATH); - vgDrawPath(path, VG_FILL_PATH); - - draw_marks(path); - - - vgFlush(); -} - - -int main(int argc, char **argv) -{ - return run(argc, argv, init, reshape, - draw, 0); -} diff --git a/progs/openvg/trivial/stroke.c b/progs/openvg/trivial/stroke.c deleted file mode 100644 index 58ae5b7bc8..0000000000 --- a/progs/openvg/trivial/stroke.c +++ /dev/null @@ -1,116 +0,0 @@ -#include "eglcommon.h" - -#include <VG/openvg.h> -#include <X11/keysym.h> -#include <stdio.h> - -const VGfloat white_color[4] = {1.0, 1.0, 1.0, 1.0}; -const VGfloat color[4] = {0.4, 0.1, 1.0, 1.0}; - -VGPath path; -VGPaint fill; - -VGint cap_style = VG_CAP_BUTT; -VGint join_style = VG_JOIN_MITER; - -static void -init(void) -{ -#if 0 - static const VGubyte cmds[] = {VG_MOVE_TO_ABS, - VG_CUBIC_TO_ABS, - }; - static const VGfloat coords[] = {30, 30, 264, 0, 0, 264, 234, 234 - }; -#else - static const VGubyte cmds[] = {VG_MOVE_TO_ABS, - VG_LINE_TO_ABS, - VG_LINE_TO_ABS - }; - static const VGfloat coords[] = {30, 30, 202, 30, 150, 224 - }; -#endif - VGfloat dash_pattern[2] = { 20.f, 20.f }; - path = vgCreatePath(VG_PATH_FORMAT_STANDARD, VG_PATH_DATATYPE_F, 1, 0, 0, 0, - VG_PATH_CAPABILITY_APPEND_TO); - vgAppendPathData(path, 3, cmds, coords); - - fill = vgCreatePaint(); - vgSetParameterfv(fill, VG_PAINT_COLOR, 4, color); - vgSetPaint(fill, VG_FILL_PATH); - - vgSetfv(VG_CLEAR_COLOR, 4, white_color); - vgSetf(VG_STROKE_LINE_WIDTH, 20); - vgSeti(VG_STROKE_CAP_STYLE, cap_style); - vgSeti(VG_STROKE_JOIN_STYLE, join_style); - vgSetfv(VG_STROKE_DASH_PATTERN, 2, dash_pattern); - vgSetf(VG_STROKE_DASH_PHASE, 0.0f); -} - -/* new window size or exposure */ -static void -reshape(int w, int h) -{ - vgLoadIdentity(); -} - -static void -draw(void) -{ - vgClear(0, 0, window_width(), window_height()); - vgDrawPath(path, VG_STROKE_PATH); - - vgFlush(); -} - -static int key_press(unsigned key) -{ - switch(key) { - case XK_c: - case XK_C: - ++cap_style; - if (cap_style > VG_CAP_SQUARE) - cap_style = VG_CAP_BUTT; - switch(cap_style) { - case VG_CAP_BUTT: - fprintf(stderr, "Cap style 'butt'\n"); - break; - case VG_CAP_ROUND: - fprintf(stderr, "Cap style 'round'\n"); - break; - case VG_CAP_SQUARE: - fprintf(stderr, "Cap style 'square'\n"); - break; - } - vgSeti(VG_STROKE_CAP_STYLE, cap_style); - break; - case XK_j: - case XK_J: - ++join_style; - if (join_style > VG_JOIN_BEVEL) - join_style = VG_JOIN_MITER; - switch(join_style) { - case VG_JOIN_MITER: - fprintf(stderr, "Join style 'miter'\n"); - break; - case VG_JOIN_ROUND: - fprintf(stderr, "Join style 'round'\n"); - break; - case VG_JOIN_BEVEL: - fprintf(stderr, "Join style 'bevel'\n"); - break; - } - vgSeti(VG_STROKE_JOIN_STYLE, join_style); - break; - default: - break; - } - - return VG_TRUE; -} - -int main(int argc, char **argv) -{ - return run(argc, argv, init, reshape, - draw, key_press); -} diff --git a/progs/openvg/trivial/stroke2.c b/progs/openvg/trivial/stroke2.c deleted file mode 100644 index ce950c1886..0000000000 --- a/progs/openvg/trivial/stroke2.c +++ /dev/null @@ -1,207 +0,0 @@ -#include "eglcommon.h" - -#include <VG/openvg.h> -#include <X11/keysym.h> -#include <stdio.h> - -VGPaint stroke; -VGPath target; -VGPath lines; - -VGfloat xform[9]; -VGfloat color1[4]; -VGfloat color2[4]; -VGfloat bgCol[4]; - -static void -init(void) -{ - VGubyte lineCmds[6]; - VGfloat lineCoords[8]; - VGfloat arcCoords[5]; - VGubyte sccCmd[1]; - VGubyte scCmd[1]; - VGubyte lccCmd[1]; - VGubyte lcCmd[1]; - VGubyte moveCmd[1]; - VGfloat moveCoords[2]; - VGint i; - - bgCol[0] = 1.0f; - bgCol[1] = 1.0f; - bgCol[2] = 1.0f; - bgCol[3] = 1.0f; - - vgSetfv(VG_CLEAR_COLOR, 4, bgCol); - vgSeti(VG_RENDERING_QUALITY, VG_RENDERING_QUALITY_NONANTIALIASED); - - stroke = vgCreatePaint(); - /* Red */ - color1[0] = 1.0f; - color1[1] = 0.0f; - color1[2] = 0.0f; - color1[3] = 1.0f; - - /* Orange */ - color2[0] = 1.0000f; - color2[1] = 1.0f; - color2[2] = 0.0f; - color2[3] = 1.0f; - vgSetPaint(stroke, VG_STROKE_PATH); - - vgSeti(VG_STROKE_CAP_STYLE, VG_CAP_SQUARE); - - { - VGfloat temp[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; - for (i = 0; i < 9; i++) - { - xform[i] = temp[i]; - } - } - vgGetMatrix(xform); - - target = vgCreatePath(VG_PATH_FORMAT_STANDARD, - VG_PATH_DATATYPE_F, 1, 0, 0, 0, VG_PATH_CAPABILITY_TRANSFORM_TO); - -#if 0 - /* Line path */ - { - VGubyte temp[6] = {VG_MOVE_TO_ABS, VG_VLINE_TO_REL, - VG_MOVE_TO_ABS, VG_VLINE_TO_REL, - VG_HLINE_TO_REL, VG_VLINE_TO_REL}; - for (i = 0; i < 6; i++) - { - lineCmds[i] = temp[i]; - } - } - { - VGfloat temp[8] = {0.5f, 0.8f, -0.6f, 0.28f, 0.6f, -0.4f, 0.44f, 0.4f}; - for (i = 0; i < 8; i++) - { - lineCoords[i] = temp[i] * window_width(); - } - } -#else - { - VGfloat temp[5] = {0.35f, 0.15f, 29, 0.3f, 0.4f}; - for (i = 0; i < 5; i++) - { - arcCoords[i] = temp[i] * window_width(); - } - arcCoords[2] = 29; - } - - { - VGubyte temp[1] = {VG_SCCWARC_TO_ABS}; - for (i = 0; i < 1; i++) - { - sccCmd[i] = temp[i]; - } - } - { - VGubyte temp[1] = {VG_SCWARC_TO_ABS}; - for (i = 0; i < 1; i++) - { - scCmd[i] = temp[i]; - } - } - { - VGubyte temp[1] = {VG_LCCWARC_TO_ABS}; - for (i = 0; i < 1; i++) - { - lccCmd[i] = temp[i]; - } - } - { - VGubyte temp[1] = {VG_LCWARC_TO_ABS}; - for (i = 0; i < 1; i++) - { - lcCmd[i] = temp[i]; - } - } - - { - VGubyte temp[1] = {VG_MOVE_TO_ABS}; - for (i = 0; i < 1; i++) - { - moveCmd[i] = temp[i]; - } - } - { - VGfloat temp[2] = {0.7f, 0.6f}; - for (i = 0; i < 2; i++) - { - moveCoords[i] = temp[i] * window_width(); - } - } -#endif - - lines = vgCreatePath(VG_PATH_FORMAT_STANDARD, VG_PATH_DATATYPE_F, 1, - 0, 0, 0, - VG_PATH_CAPABILITY_APPEND_TO| - VG_PATH_CAPABILITY_TRANSFORM_FROM); -#if 0 - vgAppendPathData(lines, 6, lineCmds, lineCoords); -#else - vgAppendPathData(lines, 1, moveCmd, moveCoords); - vgAppendPathData(lines, 1, sccCmd, arcCoords); - vgAppendPathData(lines, 1, moveCmd, moveCoords); - vgAppendPathData(lines, 1, scCmd, arcCoords); - vgAppendPathData(lines, 1, moveCmd, moveCoords); - vgAppendPathData(lines, 1, lccCmd, arcCoords); - vgAppendPathData(lines, 1, moveCmd, moveCoords); - vgAppendPathData(lines, 1, lcCmd, arcCoords); -#endif - - vgLoadIdentity(); - vgTranslate(0.25f * window_width(), 0.25f * window_height()); - vgRotate(30); - vgTranslate(-0.25f * window_width(), -0.25f * window_height()); - vgTransformPath(target, lines);} - -/* new window size or exposure */ -static void -reshape(int w, int h) -{ -} - -static void -draw(void) -{ - vgClear(0, 0, window_width(), window_height()); - vgLoadMatrix(xform); - vgLoadIdentity(); - vgTranslate(0.25f * window_width(), 0.25f * window_height()); - vgRotate(30); - vgTranslate(-0.25f * window_width(), -0.25f * window_height()); - vgSetf(VG_STROKE_LINE_WIDTH, 7); - vgSetParameterfv(stroke, VG_PAINT_COLOR, 4, color1); - vgDrawPath(lines, VG_STROKE_PATH); - - vgLoadMatrix(xform); - vgSetParameterfv(stroke, VG_PAINT_COLOR, 4, color2); - vgSetf(VG_STROKE_LINE_WIDTH, 3); - vgDrawPath(target, VG_STROKE_PATH); -} - -static int key_press(unsigned key) -{ - switch(key) { - case XK_c: - case XK_C: - break; - case XK_j: - case XK_J: - break; - default: - break; - } - - return VG_TRUE; -} - -int main(int argc, char **argv) -{ - return run(argc, argv, init, reshape, - draw, key_press); -} diff --git a/progs/openvg/trivial/vguarc.c b/progs/openvg/trivial/vguarc.c deleted file mode 100644 index 8d971d5c09..0000000000 --- a/progs/openvg/trivial/vguarc.c +++ /dev/null @@ -1,74 +0,0 @@ -#include "eglcommon.h" - -#include <VG/openvg.h> -#include <VG/vgu.h> - -const VGfloat white_color[4] = {1.0, 1.0, 1.0, 1.0}; -const VGfloat color[4] = {0.4, 0.1, 1.0, 1.0}; - -VGPath path; -VGPaint paint; - - -static void -init(void) -{ - VGfloat clearColor[] = {0.0f, 0.0f, 0.0f, 1.0f};/* black color */ - VGfloat greenColor[] = {0.0f, 1.0f, 0.0f, 1.0f};/* green color */ - VGint arcType = VGU_ARC_OPEN; - VGfloat x, y, w, h, startAngle, angleExtent; - - x = 150; - y = 150; - w = 150; - h = 150; -#if 0 - startAngle = -540.0f; - angleExtent = 270.0f; -#else - startAngle = 270.0f; - angleExtent = 90.0f; -#endif - - paint = vgCreatePaint(); - - vgSetPaint(paint, VG_STROKE_PATH); - vgSetParameterfv(paint, VG_PAINT_COLOR, 4, greenColor); - vgSetParameteri( paint, VG_PAINT_TYPE, VG_PAINT_TYPE_COLOR); - vgSetf(VG_STROKE_LINE_WIDTH, 6.0f); - vgSeti(VG_RENDERING_QUALITY, VG_RENDERING_QUALITY_NONANTIALIASED); - vgSetfv(VG_CLEAR_COLOR, 4, clearColor); - - path = vgCreatePath(VG_PATH_FORMAT_STANDARD, VG_PATH_DATATYPE_F, - 1.0f, 0.0f, 0, 0, VG_PATH_CAPABILITY_ALL); - - vguArc(path, x, y, w, h, startAngle, angleExtent, arcType); - - vgSeti(VG_STROKE_CAP_STYLE, VG_CAP_BUTT); - vgSeti(VG_STROKE_JOIN_STYLE, VG_JOIN_BEVEL); - vgSetf(VG_STROKE_MITER_LIMIT, 4.0f); -} - -/* new window size or exposure */ -static void -reshape(int w, int h) -{ - vgLoadIdentity(); -} - -static void -draw(void) -{ - vgClear(0, 0, window_width(), window_height()); - vgDrawPath(path, VG_STROKE_PATH); - - vgFlush(); -} - - -int main(int argc, char **argv) -{ - // set_window_size(64, 63); - return run(argc, argv, init, reshape, - draw, 0); -} diff --git a/progs/perf/.gitignore b/progs/perf/.gitignore deleted file mode 100644 index 7e8fe616cd..0000000000 --- a/progs/perf/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -copytex -drawoverhead -fbobind -fill -genmipmap -readpixels -swapbuffers -teximage -vbo -vertexrate diff --git a/progs/perf/Makefile b/progs/perf/Makefile deleted file mode 100644 index f7b965542e..0000000000 --- a/progs/perf/Makefile +++ /dev/null @@ -1,55 +0,0 @@ -# progs/demos/Makefile - -TOP = ../.. -include $(TOP)/configs/current - -INCDIR = $(TOP)/include - -LIBS = -L$(TOP)/$(LIB_DIR) -l$(GLUT_LIB) -l$(GLEW_LIB) \ - -l$(GLU_LIB) -l$(GL_LIB) $(APP_LIB_DEPS) - -# using : to avoid APP_CC pointing to CC loop -CC := $(APP_CC) -CFLAGS := -I$(INCDIR) $(CFLAGS) -LDLIBS = $(LIBS) - -PROG_SOURCES = \ - copytex.c \ - drawoverhead.c \ - fbobind.c \ - fill.c \ - genmipmap.c \ - readpixels.c \ - swapbuffers.c \ - teximage.c \ - vbo.c \ - vertexrate.c \ - -PROG_OBJS = $(PROG_SOURCES:.c=.o) - -PROGS = $(PROG_SOURCES:%.c=%) - - -UTIL_SOURCES = \ - common.c \ - glmain.c - -UTIL_HEADERS = \ - common.h \ - glmain.h - -UTIL_OBJS = $(UTIL_SOURCES:.c=.o) - - - -default: $(PROGS) - -$(PROG_OBJS): $(UTIL_HEADERS) - -$(PROGS): $(UTIL_OBJS) - - - -clean: - -rm -f $(PROGS) - -rm -f *.o *~ diff --git a/progs/perf/SConscript b/progs/perf/SConscript deleted file mode 100644 index a5ec9a7c2a..0000000000 --- a/progs/perf/SConscript +++ /dev/null @@ -1,32 +0,0 @@ -Import('env') - -if not env['GLUT']: - Return() - -env = env.Clone() - -env.Prepend(LIBS = ['$GLUT_LIB']) - -progs = [ - 'copytex', - 'drawoverhead', - 'fbobind', - 'fill', - 'genmipmap', - 'readpixels', - 'swapbuffers', - 'teximage', - 'vbo', - 'vertexrate', -] - -for prog in progs: - env.Program( - target = prog, - source = [ - prog + '.c', - 'common.c', - 'glmain.c', - ] - ) - diff --git a/progs/perf/common.c b/progs/perf/common.c deleted file mode 100644 index b6489ef918..0000000000 --- a/progs/perf/common.c +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright (C) 2009 VMware, Inc. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * VMWARE BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/** - * Common perf code. This should be re-usable with other APIs. - */ - -#include "common.h" -#include "glmain.h" - -#include <stdio.h> -#include <stdlib.h> -#include <stdarg.h> - -#if defined(_MSC_VER) -#define snprintf _snprintf -#endif - - -/* Need to add a fflush windows console with mingw, otherwise nothing - * shows up until program exit. May want to add logging here. - */ -void -perf_printf(const char *format, ...) -{ - va_list ap; - va_start(ap, format); - - fflush(stdout); - vfprintf(stdout, format, ap); - fflush(stdout); - - va_end(ap); -} - - - -/** - * Run function 'f' for enough iterations to reach a steady state. - * Return the rate (iterations/second). - */ -double -PerfMeasureRate(PerfRateFunc f) -{ - const double minDuration = 1.0; - double rate = 0.0, prevRate = 0.0; - unsigned subiters; - - /* Compute initial number of iterations to try. - * If the test function is pretty slow this helps to avoid - * extraordarily long run times. - */ - subiters = 2; - { - const double t0 = PerfGetTime(); - double t1; - do { - f(subiters); /* call the rendering function */ - t1 = PerfGetTime(); - subiters *= 2; - } while (t1 - t0 < 0.1 * minDuration); - } - /*perf_printf("initial subIters = %u\n", subiters);*/ - - while (1) { - const double t0 = PerfGetTime(); - unsigned iters = 0; - double t1; - - do { - f(subiters); /* call the rendering function */ - t1 = PerfGetTime(); - iters += subiters; - } while (t1 - t0 < minDuration); - - rate = iters / (t1 - t0); - - if (0) - perf_printf("prevRate %f rate %f ratio %f iters %u\n", - prevRate, rate, rate/prevRate, iters); - - /* Try and speed the search up by skipping a few steps: - */ - if (rate > prevRate * 1.6) - subiters *= 8; - else if (rate > prevRate * 1.2) - subiters *= 4; - else if (rate > prevRate * 1.05) - subiters *= 2; - else - break; - - prevRate = rate; - } - - if (0) - perf_printf("%s returning iters %u rate %f\n", __FUNCTION__, subiters, rate); - return rate; -} - - -/* Note static buffer, can only use once per printf. - */ -const char * -PerfHumanFloat( double d ) -{ - static char buf[80]; - - if (d > 1000000000.0) - snprintf(buf, sizeof(buf), "%.1f billion", d / 1000000000.0); - else if (d > 1000000.0) - snprintf(buf, sizeof(buf), "%.1f million", d / 1000000.0); - else if (d > 1000.0) - snprintf(buf, sizeof(buf), "%.1f thousand", d / 1000.0); - else - snprintf(buf, sizeof(buf), "%.1f", d); - - return buf; -} diff --git a/progs/perf/common.h b/progs/perf/common.h deleted file mode 100644 index 6ea17402b5..0000000000 --- a/progs/perf/common.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (C) 2009 VMware, Inc. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * VMWARE BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - - -#ifndef COMMON_H -#define COMMON_H - - -#include <stddef.h> /* for offsetof() */ - - -typedef void (*PerfRateFunc)(unsigned count); - - -extern double -PerfMeasureRate(PerfRateFunc f); - -const char * -PerfHumanFloat( double d ); - -extern void -perf_printf(const char *format, ...); - - -#endif /* COMMON_H */ - diff --git a/progs/perf/copytex.c b/progs/perf/copytex.c deleted file mode 100644 index f7a6b8aec3..0000000000 --- a/progs/perf/copytex.c +++ /dev/null @@ -1,214 +0,0 @@ -/* - * Copyright (C) 2009 VMware, Inc. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * VMWARE BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/** - * Measure glCopyTex[Sub]Image() rate. - * Create a large, off-screen framebuffer object for rendering and - * copying the texture data from it since we can't make really large - * on-screen windows. - * - * Brian Paul - * 22 Sep 2009 - */ - -#include <string.h> -#include "glmain.h" -#include "common.h" - -int WinWidth = 100, WinHeight = 100; - -static GLuint VBO, FBO, RBO, Tex; - -const GLsizei MinSize = 16, MaxSize = 4096; -static GLsizei TexSize; - -static const GLboolean DrawPoint = GL_TRUE; -static const GLboolean TexSubImage4 = GL_FALSE; - -struct vertex -{ - GLfloat x, y, s, t; -}; - -static const struct vertex vertices[1] = { - { 0.0, 0.0, 0.5, 0.5 }, -}; - -#define VOFFSET(F) ((void *) offsetof(struct vertex, F)) - - -/** Called from test harness/main */ -void -PerfInit(void) -{ - const GLenum filter = GL_LINEAR; - GLenum stat; - - if (!PerfExtensionSupported("GL_EXT_framebuffer_object")) { - perf_printf("copytex: GL_EXT_framebuffer_object not supported\n"); - exit(0); - } - - /* setup VBO */ - glGenBuffersARB(1, &VBO); - glBindBufferARB(GL_ARRAY_BUFFER_ARB, VBO); - glBufferDataARB(GL_ARRAY_BUFFER_ARB, sizeof(vertices), - vertices, GL_STATIC_DRAW_ARB); - - glVertexPointer(2, GL_FLOAT, sizeof(struct vertex), VOFFSET(x)); - glTexCoordPointer(2, GL_FLOAT, sizeof(struct vertex), VOFFSET(s)); - glEnableClientState(GL_VERTEX_ARRAY); - glEnableClientState(GL_TEXTURE_COORD_ARRAY); - - /* setup texture */ - glGenTextures(1, &Tex); - glBindTexture(GL_TEXTURE_2D, Tex); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, filter); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, filter); - glEnable(GL_TEXTURE_2D); - - /* setup rbo */ - glGenRenderbuffersEXT(1, &RBO); - glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, RBO); - glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_RGBA, MaxSize, MaxSize); - - /* setup fbo */ - glGenFramebuffersEXT(1, &FBO); - glBindFramebufferEXT(GL_FRAMEBUFFER, FBO); - glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, - GL_COLOR_ATTACHMENT0_EXT, - GL_RENDERBUFFER_EXT, RBO); - - stat = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT); - if (stat != GL_FRAMEBUFFER_COMPLETE_EXT) { - perf_printf("fboswitch: Error: incomplete FBO!\n"); - exit(1); - } - - /* clear the FBO */ - glDrawBuffer(GL_COLOR_ATTACHMENT0_EXT); - glViewport(0, 0, MaxSize, MaxSize); - glClear(GL_COLOR_BUFFER_BIT); -} - - -static void -CopyTexImage(unsigned count) -{ - unsigned i; - for (i = 1; i < count; i++) { - /* draw something */ - if (DrawPoint) - glDrawArrays(GL_POINTS, 0, 1); - - /* copy whole texture */ - glCopyTexImage2D(GL_TEXTURE_2D, 0, - GL_RGBA, 0, 0, TexSize, TexSize, 0); - } - glFinish(); -} - - -static void -CopyTexSubImage(unsigned count) -{ - unsigned i; - for (i = 1; i < count; i++) { - /* draw something */ - if (DrawPoint) - glDrawArrays(GL_POINTS, 0, 1); - - /* copy sub texture */ - if (TexSubImage4) { - /* four sub-copies */ - GLsizei half = TexSize / 2; - /* lower-left */ - glCopyTexSubImage2D(GL_TEXTURE_2D, 0, - 0, 0, 0, 0, half, half); - /* lower-right */ - glCopyTexSubImage2D(GL_TEXTURE_2D, 0, - half, 0, half, 0, half, half); - /* upper-left */ - glCopyTexSubImage2D(GL_TEXTURE_2D, 0, - 0, half, 0, half, half, half); - /* upper-right */ - glCopyTexSubImage2D(GL_TEXTURE_2D, 0, - half, half, half, half, half, half); - } - else { - /* one big copy */ - glCopyTexSubImage2D(GL_TEXTURE_2D, 0, - 0, 0, 0, 0, TexSize, TexSize); - } - } - glFinish(); -} - - -/** Called from test harness/main */ -void -PerfNextRound(void) -{ -} - - -/** Called from test harness/main */ -void -PerfDraw(void) -{ - double rate, mbPerSec; - GLint sub, maxTexSize; - - glGetIntegerv(GL_MAX_TEXTURE_SIZE, &maxTexSize); - - /* loop over whole/sub tex copy */ - for (sub = 0; sub < 2; sub++) { - - /* loop over texture sizes */ - for (TexSize = MinSize; TexSize <= MaxSize; TexSize *= 4) { - - if (TexSize <= maxTexSize) { - GLint bytesPerImage = 4 * TexSize * TexSize; - - if (sub == 0) - rate = PerfMeasureRate(CopyTexImage); - else { - /* setup empty dest texture */ - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, - TexSize, TexSize, 0, - GL_RGBA, GL_UNSIGNED_BYTE, NULL); - rate = PerfMeasureRate(CopyTexSubImage); - } - - mbPerSec = rate * bytesPerImage / (1024.0 * 1024.0); - } - else { - rate = 0.0; - mbPerSec = 0.0; - } - - perf_printf(" glCopyTex%sImage(%d x %d): %.1f copies/sec, %.1f Mpixels/sec\n", - (sub ? "Sub" : ""), TexSize, TexSize, rate, mbPerSec); - } - } - - exit(0); -} diff --git a/progs/perf/drawoverhead.c b/progs/perf/drawoverhead.c deleted file mode 100644 index f75c9bb74e..0000000000 --- a/progs/perf/drawoverhead.c +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright (C) 2009 VMware, Inc. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * VMWARE BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/** - * Measure drawing overhead - * - * This is the first in a series of simple performance benchmarks. - * The code in this file should be as simple as possible to make it - * easily portable to other APIs. - * - * All the window-system stuff should be contained in glmain.c (or TBDmain.c). - * - * Brian Paul - * 15 Sep 2009 - */ - -#include "glmain.h" -#include "common.h" - - -int WinWidth = 100, WinHeight = 100; - -static GLuint VBO; - -struct vertex -{ - GLfloat x, y; -}; - -static const struct vertex vertices[4] = { - { -1.0, -1.0 }, - { 1.0, -1.0 }, - { 1.0, 1.0 }, - { -1.0, 1.0 } -}; - - -/** Called from test harness/main */ -void -PerfInit(void) -{ - /* setup VBO w/ vertex data */ - glGenBuffersARB(1, &VBO); - glBindBufferARB(GL_ARRAY_BUFFER_ARB, VBO); - glBufferDataARB(GL_ARRAY_BUFFER_ARB, - sizeof(vertices), vertices, GL_STATIC_DRAW_ARB); - glVertexPointer(2, GL_FLOAT, sizeof(struct vertex), (void *) 0); - glEnableClientState(GL_VERTEX_ARRAY); - - /* misc GL state */ - glAlphaFunc(GL_ALWAYS, 0.0); -} - - -static void -DrawNoStateChange(unsigned count) -{ - unsigned i; - for (i = 0; i < count; i++) { - glDrawArrays(GL_POINTS, 0, 4); - } - glFinish(); -} - - -static void -DrawNopStateChange(unsigned count) -{ - unsigned i; - for (i = 0; i < count; i++) { - glDisable(GL_ALPHA_TEST); - glDrawArrays(GL_POINTS, 0, 4); - } - glFinish(); -} - - -static void -DrawStateChange(unsigned count) -{ - unsigned i; - for (i = 0; i < count; i++) { - if (i & 1) - glEnable(GL_TEXTURE_GEN_S); - else - glDisable(GL_TEXTURE_GEN_S); - glDrawArrays(GL_POINTS, 0, 4); - } - glFinish(); -} - -void -PerfNextRound(void) -{ -} - -/** Called from test harness/main */ -void -PerfDraw(void) -{ - double rate0, rate1, rate2, overhead; - - rate0 = PerfMeasureRate(DrawNoStateChange); - perf_printf(" Draw only: %s draws/second\n", - PerfHumanFloat(rate0)); - - rate1 = PerfMeasureRate(DrawNopStateChange); - overhead = 1000.0 * (1.0 / rate1 - 1.0 / rate0); - perf_printf(" Draw w/ nop state change: %s draws/sec (overhead: %f ms/draw)\n", - PerfHumanFloat(rate1), overhead); - - rate2 = PerfMeasureRate(DrawStateChange); - overhead = 1000.0 * (1.0 / rate2 - 1.0 / rate0); - perf_printf(" Draw w/ state change: %s draws/sec (overhead: %f ms/draw)\n", - PerfHumanFloat(rate2), overhead); - - exit(0); -} - diff --git a/progs/perf/fbobind.c b/progs/perf/fbobind.c deleted file mode 100644 index fb52a93a2f..0000000000 --- a/progs/perf/fbobind.c +++ /dev/null @@ -1,153 +0,0 @@ -/* - * Copyright (C) 2009 VMware, Inc. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * VMWARE BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/** - * Measure rate of binding/switching between FBO targets. - * Create two framebuffer objects for rendering to two textures. - * Ping pong between texturing from one and drawing into the other. - * - * Brian Paul - * 22 Sep 2009 - */ - -#include <string.h> -#include "glmain.h" -#include "common.h" - -int WinWidth = 100, WinHeight = 100; - -static GLuint VBO; - -static GLuint FBO[2], Tex[2]; - -static const GLsizei TexSize = 512; - -static const GLboolean DrawPoint = GL_TRUE; - -struct vertex -{ - GLfloat x, y, s, t; -}; - -static const struct vertex vertices[1] = { - { 0.0, 0.0, 0.5, 0.5 }, -}; - -#define VOFFSET(F) ((void *) offsetof(struct vertex, F)) - - -/** Called from test harness/main */ -void -PerfInit(void) -{ - const GLenum filter = GL_LINEAR; - GLenum stat; - int i; - - if (!PerfExtensionSupported("GL_EXT_framebuffer_object")) { - perf_printf("fboswitch: GL_EXT_framebuffer_object not supported\n"); - exit(0); - } - - /* setup VBO */ - glGenBuffersARB(1, &VBO); - glBindBufferARB(GL_ARRAY_BUFFER_ARB, VBO); - glBufferDataARB(GL_ARRAY_BUFFER_ARB, sizeof(vertices), - vertices, GL_STATIC_DRAW_ARB); - - glVertexPointer(2, GL_FLOAT, sizeof(struct vertex), VOFFSET(x)); - glTexCoordPointer(2, GL_FLOAT, sizeof(struct vertex), VOFFSET(s)); - glEnableClientState(GL_VERTEX_ARRAY); - glEnableClientState(GL_TEXTURE_COORD_ARRAY); - - glGenFramebuffersEXT(2, FBO); - glGenTextures(2, Tex); - - for (i = 0; i < 2; i++) { - /* setup texture */ - glBindTexture(GL_TEXTURE_2D, Tex[i]); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, - TexSize, TexSize, 0, - GL_RGBA, GL_UNSIGNED_BYTE, NULL); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, filter); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, filter); - - - /* setup fbo */ - glBindFramebufferEXT(GL_FRAMEBUFFER, FBO[i]); - glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, - GL_COLOR_ATTACHMENT0_EXT, - GL_TEXTURE_2D, Tex[i], 0/*level*/); - stat = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT); - if (stat != GL_FRAMEBUFFER_COMPLETE_EXT) { - perf_printf("fboswitch: Error: incomplete FBO!\n"); - exit(1); - } - - /* clear the FBO */ - glClear(GL_COLOR_BUFFER_BIT); - } - - glEnable(GL_TEXTURE_2D); -} - - -static void -FBOBind(unsigned count) -{ - unsigned i; - for (i = 1; i < count; i++) { - const GLuint dst = i & 1; - const GLuint src = 1 - dst; - - /* bind src texture */ - glBindTexture(GL_TEXTURE_2D, Tex[src]); - - /* bind dst fbo */ - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, FBO[dst]); - glDrawBuffer(GL_COLOR_ATTACHMENT0_EXT); - - /* draw something */ - if (DrawPoint) - glDrawArrays(GL_POINTS, 0, 1); - } - glFinish(); -} - - -/** Called from test harness/main */ -void -PerfNextRound(void) -{ -} - - -/** Called from test harness/main */ -void -PerfDraw(void) -{ - double rate; - - rate = PerfMeasureRate(FBOBind); - perf_printf(" FBO Binding: %1.f binds/sec\n", rate); - - exit(0); -} diff --git a/progs/perf/fill.c b/progs/perf/fill.c deleted file mode 100644 index 279f2b5f18..0000000000 --- a/progs/perf/fill.c +++ /dev/null @@ -1,248 +0,0 @@ -/* - * Copyright (C) 2009 VMware, Inc. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * VMWARE BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/** - * Measure fill rates. - * - * Brian Paul - * 21 Sep 2009 - */ - -#include "glmain.h" -#include "common.h" - - -int WinWidth = 1000, WinHeight = 1000; - -static GLuint VBO, TexObj; - - -struct vertex -{ - GLfloat x, y, s, t, r, g, b, a; -}; - -#define VOFFSET(F) ((void *) offsetof(struct vertex, F)) - -static const struct vertex vertices[4] = { - /* x y s t r g b a */ - { -1.0, -1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.5 }, - { 1.0, -1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.5 }, - { 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.5 }, - { -1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.5 } -}; - - -static const char *VertexShader = - "void main() \n" - "{ \n" - " gl_Position = ftransform(); \n" - " gl_TexCoord[0] = gl_MultiTexCoord0; \n" - " gl_FrontColor = gl_Color; \n" - "} \n"; - -/* simple fragment shader */ -static const char *FragmentShader1 = - "uniform sampler2D Tex; \n" - "void main() \n" - "{ \n" - " vec4 t = texture2D(Tex, gl_TexCoord[0].xy); \n" - " gl_FragColor = vec4(1.0) - t * gl_Color; \n" - "} \n"; - -/** - * A more complex fragment shader (but equivalent to first shader). - * A good optimizer should catch some of these no-op operations, but - * probably not all of them. - */ -static const char *FragmentShader2 = - "uniform sampler2D Tex; \n" - "void main() \n" - "{ \n" - " // as above \n" - " vec4 t = texture2D(Tex, gl_TexCoord[0].xy); \n" - " t = vec4(1.0) - t * gl_Color; \n" - - " vec4 u; \n" - - " // no-op negate/swizzle \n" - " u = -t.wzyx; \n" - " t = -u.wzyx; \n" - - " // no-op inverts \n" - " t = vec4(1.0) - t; \n" - " t = vec4(1.0) - t; \n" - - " // no-op min/max \n" - " t = min(t, t); \n" - " t = max(t, t); \n" - - " // no-op moves \n" - " u = t; \n" - " t = u; \n" - " u = t; \n" - " t = u; \n" - - " // no-op add/mul \n" - " t = (t + t + t + t) * 0.25; \n" - - " // no-op mul/sub \n" - " t = 3.0 * t - 2.0 * t; \n" - - " // no-op negate/min/max \n" - " t = -min(-t, -t); \n" - " t = -max(-t, -t); \n" - - " gl_FragColor = t; \n" - "} \n"; - -static GLuint ShaderProg1, ShaderProg2; - - - -/** Called from test harness/main */ -void -PerfInit(void) -{ - GLint u; - - /* setup VBO w/ vertex data */ - glGenBuffersARB(1, &VBO); - glBindBufferARB(GL_ARRAY_BUFFER_ARB, VBO); - glBufferDataARB(GL_ARRAY_BUFFER_ARB, - sizeof(vertices), vertices, GL_STATIC_DRAW_ARB); - glVertexPointer(2, GL_FLOAT, sizeof(struct vertex), VOFFSET(x)); - glTexCoordPointer(2, GL_FLOAT, sizeof(struct vertex), VOFFSET(s)); - glColorPointer(4, GL_FLOAT, sizeof(struct vertex), VOFFSET(r)); - glEnableClientState(GL_VERTEX_ARRAY); - glEnableClientState(GL_COLOR_ARRAY); - - /* setup texture */ - TexObj = PerfCheckerTexture(128, 128); - - /* setup shaders */ - ShaderProg1 = PerfShaderProgram(VertexShader, FragmentShader1); - glUseProgram(ShaderProg1); - u = glGetUniformLocation(ShaderProg1, "Tex"); - glUniform1i(u, 0); /* texture unit 0 */ - - ShaderProg2 = PerfShaderProgram(VertexShader, FragmentShader2); - glUseProgram(ShaderProg2); - u = glGetUniformLocation(ShaderProg2, "Tex"); - glUniform1i(u, 0); /* texture unit 0 */ - - glUseProgram(0); -} - - -static void -Ortho(void) -{ - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - - - -static void -DrawQuad(unsigned count) -{ - unsigned i; - glClear(GL_COLOR_BUFFER_BIT); - - for (i = 0; i < count; i++) { - glDrawArrays(GL_TRIANGLE_FAN, 0, 4); - - /* Avoid sending command buffers with huge numbers of fullscreen - * quads. Graphics schedulers don't always cope well with - * this... - */ - if (i % 128 == 0) { - PerfSwapBuffers(); - glClear(GL_COLOR_BUFFER_BIT); - } - } - - glFinish(); - - if (1) - PerfSwapBuffers(); -} - -void -PerfNextRound(void) -{ -} - -/** Called from test harness/main */ -void -PerfDraw(void) -{ - double rate; - double pixelsPerDraw = WinWidth * WinHeight; - - Ortho(); - - /* simple fill */ - rate = PerfMeasureRate(DrawQuad) * pixelsPerDraw; - perf_printf(" Simple fill: %s pixels/second\n", - PerfHumanFloat(rate)); - - /* blended fill */ - glEnable(GL_BLEND); - rate = PerfMeasureRate(DrawQuad) * pixelsPerDraw; - glDisable(GL_BLEND); - perf_printf(" Blended fill: %s pixels/second\n", - PerfHumanFloat(rate)); - - /* textured fill */ - glEnable(GL_TEXTURE_2D); - glEnableClientState(GL_TEXTURE_COORD_ARRAY); - rate = PerfMeasureRate(DrawQuad) * pixelsPerDraw; - glDisable(GL_TEXTURE_2D); - glDisableClientState(GL_TEXTURE_COORD_ARRAY); - perf_printf(" Textured fill: %s pixels/second\n", - PerfHumanFloat(rate)); - - /* shader1 fill */ - glUseProgram(ShaderProg1); - glEnableClientState(GL_TEXTURE_COORD_ARRAY); - rate = PerfMeasureRate(DrawQuad) * pixelsPerDraw; - glUseProgram(0); - glDisableClientState(GL_TEXTURE_COORD_ARRAY); - perf_printf(" Shader1 fill: %s pixels/second\n", - PerfHumanFloat(rate)); - - /* shader2 fill */ - glUseProgram(ShaderProg2); - glEnableClientState(GL_TEXTURE_COORD_ARRAY); - rate = PerfMeasureRate(DrawQuad) * pixelsPerDraw; - glUseProgram(0); - glDisableClientState(GL_TEXTURE_COORD_ARRAY); - perf_printf(" Shader2 fill: %s pixels/second\n", - PerfHumanFloat(rate)); - - exit(0); -} - diff --git a/progs/perf/genmipmap.c b/progs/perf/genmipmap.c deleted file mode 100644 index 20e2fa3410..0000000000 --- a/progs/perf/genmipmap.c +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Copyright (C) 2009 VMware, Inc. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * VMWARE BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/** - * Measure glGenerateMipmap() speed. - * - * Brian Paul - * 24 Sep 2009 - */ - -#include <string.h> -#include <stdio.h> -#include "glmain.h" -#include "common.h" - - -int WinWidth = 100, WinHeight = 100; - -static GLboolean DrawPoint = GL_TRUE; -static GLuint VBO; -static GLuint TexObj = 0; -static GLint BaseLevel, MaxLevel; - -struct vertex -{ - GLfloat x, y, s, t; -}; - -static const struct vertex vertices[1] = { - { 0.0, 0.0, 0.5, 0.5 }, -}; - -#define VOFFSET(F) ((void *) offsetof(struct vertex, F)) - -/** Called from test harness/main */ -void -PerfInit(void) -{ - if (!PerfExtensionSupported("GL_ARB_framebuffer_object")) { - printf("Sorry, this test requires GL_ARB_framebuffer_object\n"); - exit(1); - } - - /* setup VBO w/ vertex data */ - glGenBuffersARB(1, &VBO); - glBindBufferARB(GL_ARRAY_BUFFER_ARB, VBO); - glBufferDataARB(GL_ARRAY_BUFFER_ARB, - sizeof(vertices), vertices, GL_STATIC_DRAW_ARB); - glVertexPointer(2, GL_FLOAT, sizeof(struct vertex), VOFFSET(x)); - glTexCoordPointer(2, GL_FLOAT, sizeof(struct vertex), VOFFSET(s)); - glEnableClientState(GL_VERTEX_ARRAY); - glEnableClientState(GL_TEXTURE_COORD_ARRAY); - - glGenTextures(1, &TexObj); - glBindTexture(GL_TEXTURE_2D, TexObj); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glEnable(GL_TEXTURE_2D); -} - - -static void -GenMipmap(unsigned count) -{ - unsigned i; - for (i = 0; i < count; i++) { - GLubyte texel[4]; - texel[0] = texel[1] = texel[2] = texel[3] = i & 0xff; - /* dirty the base image */ - glTexSubImage2D(GL_TEXTURE_2D, BaseLevel, - 0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, texel); - glGenerateMipmap(GL_TEXTURE_2D); - if (DrawPoint) - glDrawArrays(GL_POINTS, 0, 1); - } - glFinish(); -} - - -/** Called from test harness/main */ -void -PerfNextRound(void) -{ -} - - -/** Called from test harness/main */ -void -PerfDraw(void) -{ - const GLint NumLevels = 12; - const GLint TexWidth = 2048, TexHeight = 2048; - GLubyte *img; - double rate; - - /* Make 2K x 2K texture */ - img = (GLubyte *) malloc(TexWidth * TexHeight * 4); - memset(img, 128, TexWidth * TexHeight * 4); - glTexImage2D(GL_TEXTURE_2D, 0, - GL_RGBA, TexWidth, TexHeight, 0, - GL_RGBA, GL_UNSIGNED_BYTE, img); - free(img); - - perf_printf("Texture level[0] size: %d x %d, %d levels\n", - TexWidth, TexHeight, NumLevels); - - /* loop over base levels 0, 2, 4 */ - for (BaseLevel = 0; BaseLevel <= 4; BaseLevel += 2) { - - /* loop over max level */ - for (MaxLevel = NumLevels; MaxLevel > BaseLevel; MaxLevel--) { - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, BaseLevel); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, MaxLevel); - - rate = PerfMeasureRate(GenMipmap); - - perf_printf(" glGenerateMipmap(levels %d..%d): %.2f gens/sec\n", - BaseLevel + 1, MaxLevel, rate); - } - } - - exit(0); -} diff --git a/progs/perf/glmain.c b/progs/perf/glmain.c deleted file mode 100644 index 69cdbce319..0000000000 --- a/progs/perf/glmain.c +++ /dev/null @@ -1,268 +0,0 @@ -/* - * Copyright (C) 2009 VMware, Inc. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * VMWARE BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/** - * OpenGL/GLUT common code for perf programs. - * Brian Paul - * 15 Sep 2009 - */ - - -#include <stdio.h> -#include "glmain.h" -#include <GL/glut.h> - - -static int Win; -static GLfloat Xrot = 0, Yrot = 0, Zrot = 0; - - -/** Return time in seconds */ -double -PerfGetTime(void) -{ - return glutGet(GLUT_ELAPSED_TIME) * 0.001; -} - - -void -PerfSwapBuffers(void) -{ - glutSwapBuffers(); -} - - -/** make simple checkerboard texture object */ -GLuint -PerfCheckerTexture(GLsizei width, GLsizei height) -{ - const GLenum filter = GL_NEAREST; - GLubyte *img = (GLubyte *) malloc(width * height * 4); - GLint i, j, k; - GLuint obj; - - k = 0; - for (i = 0; i < height; i++) { - for (j = 0; j < width; j++) { - GLubyte color; - if (((i / 8) ^ (j / 8)) & 1) { - color = 0xff; - } - else { - color = 0x0; - } - img[k++] = color; - img[k++] = color; - img[k++] = color; - img[k++] = color; - } - } - - glGenTextures(1, &obj); - glBindTexture(GL_TEXTURE_2D, obj); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, filter); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, filter); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, - GL_RGBA, GL_UNSIGNED_BYTE, img); - free(img); - - return obj; -} - - -static GLuint -CompileShader(GLenum type, const char *shader) -{ - GLuint sh; - GLint stat; - - sh = glCreateShader(type); - glShaderSource(sh, 1, (const GLchar **) &shader, NULL); - - glCompileShader(sh); - - glGetShaderiv(sh, GL_COMPILE_STATUS, &stat); - if (!stat) { - GLchar log[1000]; - GLsizei len; - glGetShaderInfoLog(sh, 1000, &len, log); - fprintf(stderr, "Error: problem compiling shader: %s\n", log); - exit(1); - } - - return sh; -} - - -/** Make shader program from given vert/frag shader text */ -GLuint -PerfShaderProgram(const char *vertShader, const char *fragShader) -{ - GLuint prog; - GLint stat; - - { - const char *version = (const char *) glGetString(GL_VERSION); - if ((version[0] != '2' && - version[0] != '3') || version[1] != '.') { - fprintf(stderr, "Error: GL version 2.x or better required\n"); - exit(1); - } - } - - prog = glCreateProgram(); - - if (vertShader) { - GLuint vs = CompileShader(GL_VERTEX_SHADER, vertShader); - glAttachShader(prog, vs); - } - if (fragShader) { - GLuint fs = CompileShader(GL_FRAGMENT_SHADER, fragShader); - glAttachShader(prog, fs); - } - - glLinkProgram(prog); - glGetProgramiv(prog, GL_LINK_STATUS, &stat); - if (!stat) { - GLchar log[1000]; - GLsizei len; - glGetProgramInfoLog(prog, 1000, &len, log); - fprintf(stderr, "Shader link error:\n%s\n", log); - exit(1); - } - - return prog; -} - - -int -PerfReshapeWindow( unsigned w, unsigned h ) -{ - if (glutGet(GLUT_SCREEN_WIDTH) < w || - glutGet(GLUT_SCREEN_HEIGHT) < h) - return 0; - - glutReshapeWindow( w, h ); - glutPostRedisplay(); - return 1; -} - - -GLboolean -PerfExtensionSupported(const char *ext) -{ - return glutExtensionSupported(ext); -} - - -static void -Idle(void) -{ - PerfNextRound(); -} - - -static void -Draw(void) -{ - PerfDraw(); - glutSwapBuffers(); -} - - -static void -Reshape(int width, int height) -{ - WinWidth = width; - WinHeight = height; - glViewport(0, 0, width, height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-1.0, 1.0, -1.0, 1.0, 5.0, 25.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0, 0.0, -15.0); -} - - -static void -Key(unsigned char key, int x, int y) -{ - const GLfloat step = 3.0; - (void) x; - (void) y; - switch (key) { - case 'z': - Zrot -= step; - break; - case 'Z': - Zrot += step; - break; - case 27: - glutDestroyWindow(Win); - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void -SpecialKey(int key, int x, int y) -{ - const GLfloat step = 3.0; - (void) x; - (void) y; - switch (key) { - case GLUT_KEY_UP: - Xrot -= step; - break; - case GLUT_KEY_DOWN: - Xrot += step; - break; - case GLUT_KEY_LEFT: - Yrot -= step; - break; - case GLUT_KEY_RIGHT: - Yrot += step; - break; - } - glutPostRedisplay(); -} - - -int -main(int argc, char *argv[]) -{ - glutInit(&argc, argv); - glutInitWindowSize(WinWidth, WinHeight); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH | GLUT_STENCIL); - Win = glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutSpecialFunc(SpecialKey); - glutDisplayFunc(Draw); - glutIdleFunc(Idle); - PerfInit(); - glutMainLoop(); - return 0; -} diff --git a/progs/perf/glmain.h b/progs/perf/glmain.h deleted file mode 100644 index d9bcd5f4e2..0000000000 --- a/progs/perf/glmain.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (C) 2009 VMware, Inc. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * VMWARE BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - - -#ifndef GLMAIN_H -#define GLMAIN_H - - -#define GL_GLEXT_PROTOTYPES -#include <GL/glew.h> -#include <stdlib.h> -#include <math.h> - - -/** Test programs can use these vars/functions */ - -extern int WinWidth, WinHeight; - -extern double -PerfGetTime(void); - -extern void -PerfSwapBuffers(void); - -extern GLuint -PerfCheckerTexture(GLsizei width, GLsizei height); - -extern GLuint -PerfShaderProgram(const char *vertShader, const char *fragShader); - -extern int -PerfReshapeWindow( unsigned w, unsigned h ); - -extern GLboolean -PerfExtensionSupported(const char *ext); - - -/** Test programs must implement these functions **/ - -extern void -PerfInit(void); - -extern void -PerfNextRound(void); - -extern void -PerfDraw(void); - - -#endif /* GLMAIN_H */ diff --git a/progs/perf/readpixels.c b/progs/perf/readpixels.c deleted file mode 100644 index ac7dc426e9..0000000000 --- a/progs/perf/readpixels.c +++ /dev/null @@ -1,169 +0,0 @@ -/* - * Copyright (C) 2009 VMware, Inc. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * VMWARE BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/** - * Measure glReadPixels speed. - * XXX also read into a PBO? - * XXX also read from FBOs? - * - * Brian Paul - * 23 Sep 2009 - */ - -#include <string.h> -#include <assert.h> -#include "glmain.h" -#include "common.h" - -int WinWidth = 1000, WinHeight = 1000; - -static GLuint VBO; - -static const GLboolean DrawPoint = GL_TRUE; -static const GLboolean BufferSubDataInHalves = GL_TRUE; - -static const GLfloat Vertex0[2] = { 0.0, 0.0 }; - -static GLenum HaveDepthStencil; - -static GLenum ReadFormat, ReadType; -static GLint ReadWidth, ReadHeight; -static GLvoid *ReadBuffer; - - -/** Called from test harness/main */ -void -PerfInit(void) -{ - /* setup VBO */ - glGenBuffersARB(1, &VBO); - glBindBufferARB(GL_ARRAY_BUFFER_ARB, VBO); - glBufferDataARB(GL_ARRAY_BUFFER_ARB, sizeof(Vertex0), Vertex0, GL_STATIC_DRAW_ARB); - glVertexPointer(2, GL_FLOAT, sizeof(Vertex0), (void *) 0); - glEnableClientState(GL_VERTEX_ARRAY); - - glPixelStorei(GL_PACK_ALIGNMENT, 1); - - HaveDepthStencil = PerfExtensionSupported("GL_EXT_packed_depth_stencil"); - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); - glEnable(GL_DEPTH_TEST); - glEnable(GL_STENCIL_TEST); -} - - -static void -ReadPixels(unsigned count) -{ - unsigned i; - for (i = 0; i < count; i++) { - /* read from random pos */ - GLint x, y; - - x = WinWidth - ReadWidth; - y = WinHeight - ReadHeight; - if (x > 0) - x = rand() % x; - if (y > 0) - y = rand() % y; - - if (DrawPoint) - glDrawArrays(GL_POINTS, 0, 1); - - glReadPixels(x, y, ReadWidth, ReadHeight, - ReadFormat, ReadType, ReadBuffer); - } - glFinish(); -} - - -static const GLsizei Sizes[] = { - 10, - 100, - 500, - 1000, - 0 -}; - - -static const struct { - GLenum format; - GLenum type; - const char *name; - GLuint pixel_size; -} DstFormats[] = { - { GL_RGBA, GL_UNSIGNED_BYTE, "RGBA/ubyte", 4 }, - { GL_BGRA, GL_UNSIGNED_BYTE, "BGRA/ubyte", 4 }, - { GL_RGB, GL_UNSIGNED_SHORT_5_6_5, "RGB/565", 2 }, - { GL_LUMINANCE, GL_UNSIGNED_BYTE, "L/ubyte", 1 }, - { GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, "Z/uint", 4 }, - { GL_DEPTH_STENCIL_EXT, GL_UNSIGNED_INT_24_8_EXT, "Z+S/uint", 4 }, - { 0, 0, NULL, 0 } -}; - - - -/** Called from test harness/main */ -void -PerfNextRound(void) -{ -} - - -/** Called from test harness/main */ -void -PerfDraw(void) -{ - double rate, mbPerSec; - int fmt, sz; - - /* loop over formats */ - for (fmt = 0; DstFormats[fmt].format; fmt++) { - ReadFormat = DstFormats[fmt].format; - ReadType = DstFormats[fmt].type; - - /* loop over sizes */ - for (sz = 0; Sizes[sz]; sz++) { - int imgSize; - - ReadWidth = ReadHeight = Sizes[sz]; - imgSize = ReadWidth * ReadHeight * DstFormats[fmt].pixel_size; - ReadBuffer = malloc(imgSize); - - if (ReadFormat == GL_DEPTH_STENCIL_EXT && !HaveDepthStencil) { - rate = 0.0; - mbPerSec = 0.0; - } - else { - rate = PerfMeasureRate(ReadPixels); - mbPerSec = rate * imgSize / (1024.0 * 1024.0); - } - - perf_printf("glReadPixels(%d x %d, %s): %.1f images/sec, %.1f Mpixels/sec\n", - ReadWidth, ReadHeight, - DstFormats[fmt].name, rate, mbPerSec); - - free(ReadBuffer); - } - } - - exit(0); -} diff --git a/progs/perf/swapbuffers.c b/progs/perf/swapbuffers.c deleted file mode 100644 index 63c7fc06f9..0000000000 --- a/progs/perf/swapbuffers.c +++ /dev/null @@ -1,161 +0,0 @@ -/* - * Copyright (C) 2009 VMware, Inc. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * VMWARE BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/** - * Measure SwapBuffers. - * - * Keith Whitwell - * 22 Sep 2009 - */ - -#include "glmain.h" -#include "common.h" - - -int WinWidth = 100, WinHeight = 100; -int real_WinWidth, real_WinHeight; /* don't know whats going on here */ - -static GLuint VBO; - -struct vertex -{ - GLfloat x, y; -}; - -static const struct vertex vertices[4] = { - { -1.0, -1.0 }, - { 1.0, -1.0 }, - { 1.0, 1.0 }, - { -1.0, 1.0 } -}; - - -/** Called from test harness/main */ -void -PerfInit(void) -{ - /* setup VBO w/ vertex data */ - glGenBuffersARB(1, &VBO); - glBindBufferARB(GL_ARRAY_BUFFER_ARB, VBO); - glBufferDataARB(GL_ARRAY_BUFFER_ARB, - sizeof(vertices), vertices, GL_STATIC_DRAW_ARB); - glVertexPointer(2, GL_FLOAT, sizeof(struct vertex), (void *) 0); - glEnableClientState(GL_VERTEX_ARRAY); - - /* misc GL state */ - glAlphaFunc(GL_ALWAYS, 0.0); -} - -static void -SwapNaked(unsigned count) -{ - unsigned i; - for (i = 0; i < count; i++) { - PerfSwapBuffers(); - } -} - - -static void -SwapClear(unsigned count) -{ - unsigned i; - for (i = 0; i < count; i++) { - glClear(GL_COLOR_BUFFER_BIT); - PerfSwapBuffers(); - } -} - -static void -SwapClearPoint(unsigned count) -{ - unsigned i; - for (i = 0; i < count; i++) { - glClear(GL_COLOR_BUFFER_BIT); - glDrawArrays(GL_POINTS, 0, 4); - PerfSwapBuffers(); - } -} - - -static const struct { - unsigned w; - unsigned h; -} sizes[] = { - { 320, 240 }, - { 640, 480 }, - { 1024, 768 }, - { 1200, 1024 }, - { 1600, 1200 } -}; - -void -PerfNextRound(void) -{ - static unsigned i; - - if (i < sizeof(sizes) / sizeof(sizes[0]) && - PerfReshapeWindow( sizes[i].w, sizes[i].h )) - { - perf_printf("Reshape %dx%d\n", sizes[i].w, sizes[i].h); - real_WinWidth = sizes[i].w; - real_WinHeight = sizes[i].h; - i++; - } - else { - exit(0); - } -} - - - - -/** Called from test harness/main */ -void -PerfDraw(void) -{ - double rate0; - - rate0 = PerfMeasureRate(SwapNaked); - perf_printf(" Swapbuffers %dx%d: %s swaps/second", - real_WinWidth, real_WinHeight, - PerfHumanFloat(rate0)); - perf_printf(" %s pixels/second\n", - PerfHumanFloat(rate0 * real_WinWidth * real_WinHeight)); - - - - rate0 = PerfMeasureRate(SwapClear); - perf_printf(" Swap/Clear %dx%d: %s swaps/second", - real_WinWidth, real_WinHeight, - PerfHumanFloat(rate0)); - perf_printf(" %s pixels/second\n", - PerfHumanFloat(rate0 * real_WinWidth * real_WinHeight)); - - - rate0 = PerfMeasureRate(SwapClearPoint); - perf_printf(" Swap/Clear/Draw %dx%d: %s swaps/second", - real_WinWidth, real_WinHeight, - PerfHumanFloat(rate0)); - perf_printf(" %s pixels/second\n", - PerfHumanFloat(rate0 * real_WinWidth * real_WinHeight)); -} - diff --git a/progs/perf/teximage.c b/progs/perf/teximage.c deleted file mode 100644 index a3005d0bef..0000000000 --- a/progs/perf/teximage.c +++ /dev/null @@ -1,331 +0,0 @@ -/* - * Copyright (C) 2009 VMware, Inc. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * VMWARE BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/** - * Measure glTex[Sub]Image2D() and glGetTexImage() rate - * - * Brian Paul - * 16 Sep 2009 - */ - -#include "glmain.h" -#include "common.h" - - -int WinWidth = 100, WinHeight = 100; - -static GLuint VBO; -static GLuint TexObj = 0; -static GLubyte *TexImage = NULL; -static GLsizei TexSize; -static GLenum TexIntFormat, TexSrcFormat, TexSrcType; - -static const GLboolean DrawPoint = GL_TRUE; -static const GLboolean TexSubImage4 = GL_FALSE; - -enum { - MODE_CREATE_TEXIMAGE, - MODE_TEXIMAGE, - MODE_TEXSUBIMAGE, - MODE_GETTEXIMAGE, - MODE_COUNT -}; - -static const char *mode_name[MODE_COUNT] = -{ - "Create_TexImage", - "TexImage", - "TexSubImage", - "GetTexImage" -}; - - - -struct vertex -{ - GLfloat x, y, s, t; -}; - -static const struct vertex vertices[1] = { - { 0.0, 0.0, 0.5, 0.5 }, -}; - -#define VOFFSET(F) ((void *) offsetof(struct vertex, F)) - - -/** Called from test harness/main */ -void -PerfInit(void) -{ - /* setup VBO w/ vertex data */ - glGenBuffersARB(1, &VBO); - glBindBufferARB(GL_ARRAY_BUFFER_ARB, VBO); - glBufferDataARB(GL_ARRAY_BUFFER_ARB, - sizeof(vertices), vertices, GL_STATIC_DRAW_ARB); - glVertexPointer(2, GL_FLOAT, sizeof(struct vertex), VOFFSET(x)); - glTexCoordPointer(2, GL_FLOAT, sizeof(struct vertex), VOFFSET(s)); - glEnableClientState(GL_VERTEX_ARRAY); - glEnableClientState(GL_TEXTURE_COORD_ARRAY); - - /* texture */ - glGenTextures(1, &TexObj); - glBindTexture(GL_TEXTURE_2D, TexObj); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glEnable(GL_TEXTURE_2D); -} - - - - -static void -CreateUploadTexImage2D(unsigned count) -{ - unsigned i; - for (i = 0; i < count; i++) { - if (TexObj) - glDeleteTextures(1, &TexObj); - - glGenTextures(1, &TexObj); - glBindTexture(GL_TEXTURE_2D, TexObj); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - - glTexImage2D(GL_TEXTURE_2D, 0, TexIntFormat, - TexSize, TexSize, 0, - TexSrcFormat, TexSrcType, TexImage); - - if (DrawPoint) - glDrawArrays(GL_POINTS, 0, 1); - } - glFinish(); -} - - -static void -UploadTexImage2D(unsigned count) -{ - unsigned i; - for (i = 0; i < count; i++) { - /* XXX is this equivalent to a glTexSubImage call since we're - * always specifying the same image size? That case isn't optimized - * in Mesa but may be optimized in other drivers. Note sure how - * much difference that might make. - */ - glTexImage2D(GL_TEXTURE_2D, 0, TexIntFormat, - TexSize, TexSize, 0, - TexSrcFormat, TexSrcType, TexImage); - if (DrawPoint) - glDrawArrays(GL_POINTS, 0, 1); - } - glFinish(); -} - - -static void -UploadTexSubImage2D(unsigned count) -{ - unsigned i; - for (i = 0; i < count; i++) { - if (TexSubImage4) { - GLsizei halfSize = (TexSize == 1) ? 1 : TexSize / 2; - GLsizei halfPos = TexSize - halfSize; - /* do glTexSubImage2D in four pieces */ - /* lower-left */ - glPixelStorei(GL_UNPACK_ROW_LENGTH, TexSize); - glTexSubImage2D(GL_TEXTURE_2D, 0, - 0, 0, halfSize, halfSize, - TexSrcFormat, TexSrcType, TexImage); - /* lower-right */ - glPixelStorei(GL_UNPACK_SKIP_PIXELS, halfPos); - glTexSubImage2D(GL_TEXTURE_2D, 0, - halfPos, 0, halfSize, halfSize, - TexSrcFormat, TexSrcType, TexImage); - /* upper-left */ - glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0); - glPixelStorei(GL_UNPACK_SKIP_ROWS, halfPos); - glTexSubImage2D(GL_TEXTURE_2D, 0, - 0, halfPos, halfSize, halfSize, - TexSrcFormat, TexSrcType, TexImage); - /* upper-right */ - glPixelStorei(GL_UNPACK_SKIP_PIXELS, halfPos); - glPixelStorei(GL_UNPACK_SKIP_ROWS, halfPos); - glTexSubImage2D(GL_TEXTURE_2D, 0, - halfPos, halfPos, halfSize, halfSize, - TexSrcFormat, TexSrcType, TexImage); - /* reset the unpacking state */ - glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0); - glPixelStorei(GL_UNPACK_SKIP_ROWS, 0); - glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); - } - else { - /* replace whole texture image at once */ - glTexSubImage2D(GL_TEXTURE_2D, 0, - 0, 0, TexSize, TexSize, - TexSrcFormat, TexSrcType, TexImage); - } - if (DrawPoint) - glDrawArrays(GL_POINTS, 0, 1); - } - glFinish(); -} - - -static void -GetTexImage2D(unsigned count) -{ - unsigned i; - GLubyte *buf = (GLubyte *) malloc(TexSize * TexSize * 4); - for (i = 0; i < count; i++) { - glGetTexImage(GL_TEXTURE_2D, 0, - TexSrcFormat, TexSrcType, buf); - } - glFinish(); - free(buf); -} - - -/* XXX any other formats to measure? */ -static const struct { - GLenum format, type; - GLenum internal_format; - const char *name; - GLuint texel_size; - GLboolean full_test; -} SrcFormats[] = { - { GL_RGBA, GL_UNSIGNED_BYTE, GL_RGBA, "RGBA/ubyte", 4, GL_TRUE }, - { GL_RGB, GL_UNSIGNED_BYTE, GL_RGB, "RGB/ubyte", 3, GL_FALSE }, - { GL_RGB, GL_UNSIGNED_SHORT_5_6_5, GL_RGB, "RGB/565", 2, GL_FALSE }, - { GL_BGRA, GL_UNSIGNED_BYTE, GL_RGBA, "BGRA/ubyte", 4, GL_FALSE }, - { GL_LUMINANCE, GL_UNSIGNED_BYTE, GL_LUMINANCE, "L/ubyte", 1, GL_FALSE }, - { 0, 0, 0, NULL, 0, 0 } -}; - - -/** Called from test harness/main */ -void -PerfNextRound(void) -{ -} - - -/** Called from test harness/main */ -void -PerfDraw(void) -{ - GLint maxSize; - double rate; - GLint fmt, mode; - - glGetIntegerv(GL_MAX_TEXTURE_SIZE, &maxSize); - - /* loop over source data formats */ - for (fmt = 0; SrcFormats[fmt].format; fmt++) { - TexIntFormat = SrcFormats[fmt].internal_format; - TexSrcFormat = SrcFormats[fmt].format; - TexSrcType = SrcFormats[fmt].type; - - /* loop over glTexImage, glTexSubImage */ - for (mode = 0; mode < MODE_COUNT; mode++) { - GLuint minsz, maxsz; - - if (SrcFormats[fmt].full_test) { - minsz = 16; - maxsz = 4096; - } - else { - minsz = maxsz = 256; - if (mode == MODE_CREATE_TEXIMAGE) - continue; - } - - /* loop over a defined range of texture sizes, test only the - * ones which are legal for this driver. - */ - for (TexSize = minsz; TexSize <= maxsz; TexSize *= 4) { - double mbPerSec; - - if (TexSize <= maxSize) { - GLint bytesPerImage; - - bytesPerImage = TexSize * TexSize * SrcFormats[fmt].texel_size; - TexImage = malloc(bytesPerImage); - - switch (mode) { - case MODE_TEXIMAGE: - rate = PerfMeasureRate(UploadTexImage2D); - break; - - case MODE_CREATE_TEXIMAGE: - rate = PerfMeasureRate(CreateUploadTexImage2D); - break; - - case MODE_TEXSUBIMAGE: - /* create initial, empty texture */ - glTexImage2D(GL_TEXTURE_2D, 0, TexIntFormat, - TexSize, TexSize, 0, - TexSrcFormat, TexSrcType, NULL); - rate = PerfMeasureRate(UploadTexSubImage2D); - break; - - case MODE_GETTEXIMAGE: - glTexImage2D(GL_TEXTURE_2D, 0, TexIntFormat, - TexSize, TexSize, 0, - TexSrcFormat, TexSrcType, TexImage); - rate = PerfMeasureRate(GetTexImage2D); - break; - - default: - exit(1); - } - - mbPerSec = rate * bytesPerImage / (1024.0 * 1024.0); - free(TexImage); - - - { - unsigned err; - err = glGetError(); - if (err) { - perf_printf("non-zero glGetError() %d\n", err); - exit(1); - } - } - - } - else { - rate = 0; - mbPerSec = 0; - } - - perf_printf(" %s(%s %d x %d): " - "%.1f images/sec, %.1f MB/sec\n", - mode_name[mode], - SrcFormats[fmt].name, TexSize, TexSize, rate, mbPerSec); - } - - if (SrcFormats[fmt].full_test) - perf_printf("\n"); - } - } - - exit(0); -} diff --git a/progs/perf/vbo.c b/progs/perf/vbo.c deleted file mode 100644 index b326c056ec..0000000000 --- a/progs/perf/vbo.c +++ /dev/null @@ -1,246 +0,0 @@ -/* - * Copyright (C) 2009 VMware, Inc. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * VMWARE BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/** - * Measure VBO upload speed. - * That is, measure glBufferDataARB() and glBufferSubDataARB(). - * - * Brian Paul - * 16 Sep 2009 - */ - -#include <string.h> -#include "glmain.h" -#include "common.h" - -/* Copy data out of a large array to avoid caching effects: - */ -#define DATA_SIZE (16*1024*1024) - -int WinWidth = 100, WinHeight = 100; - -static GLuint VBO; - -static GLsizei VBOSize = 0; -static GLsizei SubSize = 0; -static GLubyte *VBOData = NULL; /* array[DATA_SIZE] */ - -static const GLboolean DrawPoint = GL_TRUE; -static const GLboolean BufferSubDataInHalves = GL_TRUE; - -static const GLfloat Vertex0[2] = { 0.0, 0.0 }; - - -/** Called from test harness/main */ -void -PerfInit(void) -{ - /* setup VBO */ - glGenBuffersARB(1, &VBO); - glBindBufferARB(GL_ARRAY_BUFFER_ARB, VBO); - glVertexPointer(2, GL_FLOAT, sizeof(Vertex0), (void *) 0); - glEnableClientState(GL_VERTEX_ARRAY); -} - - -static void -UploadVBO(unsigned count) -{ - unsigned i; - unsigned total = 0; - unsigned src = 0; - - for (i = 0; i < count; i++) { - glBufferDataARB(GL_ARRAY_BUFFER, VBOSize, VBOData + src, GL_STREAM_DRAW_ARB); - glDrawArrays(GL_POINTS, 0, 1); - - /* Throw in an occasional flush to work around a driver crash: - */ - total += VBOSize; - if (total >= 16*1024*1024) { - glFlush(); - total = 0; - } - - src += VBOSize; - src %= DATA_SIZE; - } - glFinish(); -} - - -static void -UploadSubVBO(unsigned count) -{ - unsigned i; - unsigned src = 0; - - for (i = 0; i < count; i++) { - unsigned offset = (i * SubSize) % VBOSize; - glBufferSubDataARB(GL_ARRAY_BUFFER, offset, SubSize, VBOData + src); - - if (DrawPoint) { - glDrawArrays(GL_POINTS, offset / sizeof(Vertex0), 1); - } - - src += SubSize; - src %= DATA_SIZE; - } - glFinish(); -} - - -/* Do multiple small SubData uploads, then call DrawArrays. This may be a - * fairer comparison to back-to-back BufferData calls: - */ -static void -BatchUploadSubVBO(unsigned count) -{ - unsigned i = 0, j; - unsigned period = VBOSize / SubSize; - unsigned src = 0; - - while (i < count) { - for (j = 0; j < period && i < count; j++, i++) { - unsigned offset = j * SubSize; - glBufferSubDataARB(GL_ARRAY_BUFFER, offset, SubSize, VBOData + src); - } - - glDrawArrays(GL_POINTS, 0, 1); - - src += SubSize; - src %= DATA_SIZE; - } - glFinish(); -} - - -/** - * Test the sequence: - * create/load VBO - * draw - * destroy VBO - */ -static void -CreateDrawDestroyVBO(unsigned count) -{ - unsigned i; - for (i = 0; i < count; i++) { - GLuint vbo; - /* create/load */ - glGenBuffersARB(1, &vbo); - glBindBufferARB(GL_ARRAY_BUFFER_ARB, vbo); - glBufferDataARB(GL_ARRAY_BUFFER, VBOSize, VBOData, GL_STREAM_DRAW_ARB); - /* draw */ - glVertexPointer(2, GL_FLOAT, sizeof(Vertex0), (void *) 0); - glDrawArrays(GL_POINTS, 0, 1); - /* destroy */ - glDeleteBuffersARB(1, &vbo); - } - glFinish(); -} - - -static const GLsizei Sizes[] = { - 64, - 1024, - 16*1024, - 256*1024, - 1024*1024, - 16*1024*1024, - 0 /* end of list */ -}; - -void -PerfNextRound(void) -{ -} - -/** Called from test harness/main */ -void -PerfDraw(void) -{ - double rate, mbPerSec; - int i, sz; - - /* Load VBOData buffer with duplicated Vertex0. - */ - VBOData = calloc(DATA_SIZE, 1); - - for (i = 0; i < DATA_SIZE / sizeof(Vertex0); i++) { - memcpy(VBOData + i * sizeof(Vertex0), - Vertex0, - sizeof(Vertex0)); - } - - /* glBufferDataARB() - */ - for (sz = 0; Sizes[sz]; sz++) { - SubSize = VBOSize = Sizes[sz]; - rate = PerfMeasureRate(UploadVBO); - mbPerSec = rate * VBOSize / (1024.0 * 1024.0); - perf_printf(" glBufferDataARB(size = %d): %.1f MB/sec\n", - VBOSize, mbPerSec); - } - - /* glBufferSubDataARB() - */ - for (sz = 0; Sizes[sz]; sz++) { - SubSize = VBOSize = Sizes[sz]; - rate = PerfMeasureRate(UploadSubVBO); - mbPerSec = rate * VBOSize / (1024.0 * 1024.0); - perf_printf(" glBufferSubDataARB(size = %d): %.1f MB/sec\n", - VBOSize, mbPerSec); - } - - /* Batch upload - */ - VBOSize = 1024 * 1024; - glBufferDataARB(GL_ARRAY_BUFFER, VBOSize, VBOData, GL_STREAM_DRAW_ARB); - - for (sz = 0; Sizes[sz] < VBOSize; sz++) { - SubSize = Sizes[sz]; - rate = PerfMeasureRate(UploadSubVBO); - mbPerSec = rate * SubSize / (1024.0 * 1024.0); - perf_printf(" glBufferSubDataARB(size = %d, VBOSize = %d): %.1f MB/sec\n", - SubSize, VBOSize, mbPerSec); - } - - for (sz = 0; Sizes[sz] < VBOSize; sz++) { - SubSize = Sizes[sz]; - rate = PerfMeasureRate(BatchUploadSubVBO); - mbPerSec = rate * SubSize / (1024.0 * 1024.0); - perf_printf(" glBufferSubDataARB(size = %d, VBOSize = %d), batched: %.1f MB/sec\n", - SubSize, VBOSize, mbPerSec); - } - - /* Create/Draw/Destroy - */ - for (sz = 0; Sizes[sz]; sz++) { - SubSize = VBOSize = Sizes[sz]; - rate = PerfMeasureRate(CreateDrawDestroyVBO); - mbPerSec = rate * VBOSize / (1024.0 * 1024.0); - perf_printf(" VBO Create/Draw/Destroy(size = %d): %.1f MB/sec, %.1f draws/sec\n", - VBOSize, mbPerSec, rate); - } - - exit(0); -} diff --git a/progs/perf/vertexrate.c b/progs/perf/vertexrate.c deleted file mode 100644 index b5355525d0..0000000000 --- a/progs/perf/vertexrate.c +++ /dev/null @@ -1,276 +0,0 @@ -/* - * Copyright (C) 2009 VMware, Inc. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * VMWARE BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/** - * Measure simple vertex processing rate via: - * - immediate mode - * - vertex arrays - * - VBO vertex arrays - * - glDrawElements - * - VBO glDrawElements - * - glDrawRangeElements - * - VBO glDrawRangeElements - * - * Brian Paul - * 16 Sep 2009 - */ - -#include <assert.h> -#include <string.h> -#include "glmain.h" -#include "common.h" - - -#define MAX_VERTS (100 * 100) - -/** glVertex2/3/4 size */ -#define VERT_SIZE 4 - -int WinWidth = 500, WinHeight = 500; - -static GLuint VertexBO, ElementBO; - -static unsigned NumVerts = MAX_VERTS; -static unsigned VertBytes = VERT_SIZE * sizeof(float); -static float *VertexData = NULL; - -static unsigned NumElements = MAX_VERTS; -static GLuint *Elements = NULL; - - -/** - * Load VertexData buffer with a 2-D grid of points in the range [-1,1]^2. - */ -static void -InitializeVertexData(void) -{ - unsigned i; - float x = -1.0, y = -1.0; - float dx = 2.0 / 100; - float dy = 2.0 / 100; - - VertexData = (float *) malloc(NumVerts * VertBytes); - - for (i = 0; i < NumVerts; i++) { - VertexData[i * VERT_SIZE + 0] = x; - VertexData[i * VERT_SIZE + 1] = y; - VertexData[i * VERT_SIZE + 2] = 0.0; - VertexData[i * VERT_SIZE + 3] = 1.0; - x += dx; - if (x > 1.0) { - x = -1.0; - y += dy; - } - } - - Elements = (GLuint *) malloc(NumVerts * sizeof(GLuint)); - - for (i = 0; i < NumVerts; i++) { - Elements[i] = NumVerts - i - 1; - } -} - - -/** Called from test harness/main */ -void -PerfInit(void) -{ - InitializeVertexData(); - - /* setup VertexBO */ - glGenBuffersARB(1, &VertexBO); - glBindBufferARB(GL_ARRAY_BUFFER_ARB, VertexBO); - glBufferDataARB(GL_ARRAY_BUFFER_ARB, - NumVerts * VertBytes, VertexData, GL_STATIC_DRAW_ARB); - glEnableClientState(GL_VERTEX_ARRAY); - - /* setup ElementBO */ - glGenBuffersARB(1, &ElementBO); - glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, ElementBO); - glBufferDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, - NumElements * sizeof(GLuint), Elements, GL_STATIC_DRAW_ARB); -} - - -static void -DrawImmediate(unsigned count) -{ - unsigned i; - glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER, 0); - glBindBufferARB(GL_ARRAY_BUFFER, 0); - for (i = 0; i < count; i++) { - unsigned j; - glBegin(GL_POINTS); - for (j = 0; j < NumVerts; j++) { -#if VERT_SIZE == 4 - glVertex4fv(VertexData + j * 4); -#elif VERT_SIZE == 3 - glVertex3fv(VertexData + j * 3); -#elif VERT_SIZE == 2 - glVertex2fv(VertexData + j * 2); -#else - abort(); -#endif - } - glEnd(); - } - glFinish(); - PerfSwapBuffers(); -} - - -static void -DrawArraysMem(unsigned count) -{ - unsigned i; - glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER, 0); - glBindBufferARB(GL_ARRAY_BUFFER, 0); - glVertexPointer(VERT_SIZE, GL_FLOAT, VertBytes, VertexData); - for (i = 0; i < count; i++) { - glDrawArrays(GL_POINTS, 0, NumVerts); - } - glFinish(); - PerfSwapBuffers(); -} - - -static void -DrawArraysVBO(unsigned count) -{ - unsigned i; - glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER, 0); - glBindBufferARB(GL_ARRAY_BUFFER, VertexBO); - glVertexPointer(VERT_SIZE, GL_FLOAT, VertBytes, (void *) 0); - for (i = 0; i < count; i++) { - glDrawArrays(GL_POINTS, 0, NumVerts); - } - glFinish(); - PerfSwapBuffers(); -} - - -static void -DrawElementsMem(unsigned count) -{ - unsigned i; - glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER, 0); - glBindBufferARB(GL_ARRAY_BUFFER, 0); - glVertexPointer(VERT_SIZE, GL_FLOAT, VertBytes, VertexData); - for (i = 0; i < count; i++) { - glDrawElements(GL_POINTS, NumVerts, GL_UNSIGNED_INT, Elements); - } - glFinish(); - PerfSwapBuffers(); -} - - -static void -DrawElementsBO(unsigned count) -{ - unsigned i; - glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER, ElementBO); - glBindBufferARB(GL_ARRAY_BUFFER, VertexBO); - glVertexPointer(VERT_SIZE, GL_FLOAT, VertBytes, (void *) 0); - for (i = 0; i < count; i++) { - glDrawElements(GL_POINTS, NumVerts, GL_UNSIGNED_INT, (void *) 0); - } - glFinish(); - PerfSwapBuffers(); -} - - -static void -DrawRangeElementsMem(unsigned count) -{ - unsigned i; - glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER, 0); - glBindBufferARB(GL_ARRAY_BUFFER, 0); - glVertexPointer(VERT_SIZE, GL_FLOAT, VertBytes, VertexData); - for (i = 0; i < count; i++) { - glDrawRangeElements(GL_POINTS, 0, NumVerts - 1, - NumVerts, GL_UNSIGNED_INT, Elements); - } - glFinish(); - PerfSwapBuffers(); -} - - -static void -DrawRangeElementsBO(unsigned count) -{ - unsigned i; - glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER, ElementBO); - glBindBufferARB(GL_ARRAY_BUFFER, VertexBO); - glVertexPointer(VERT_SIZE, GL_FLOAT, VertBytes, (void *) 0); - for (i = 0; i < count; i++) { - glDrawRangeElements(GL_POINTS, 0, NumVerts - 1, - NumVerts, GL_UNSIGNED_INT, (void *) 0); - } - glFinish(); - PerfSwapBuffers(); -} - -void -PerfNextRound(void) -{ -} - - -/** Called from test harness/main */ -void -PerfDraw(void) -{ - double rate; - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - perf_printf("Vertex rate (%d x Vertex%df)\n", NumVerts, VERT_SIZE); - - rate = PerfMeasureRate(DrawImmediate); - rate *= NumVerts; - perf_printf(" Immediate mode: %s verts/sec\n", PerfHumanFloat(rate)); - - rate = PerfMeasureRate(DrawArraysMem); - rate *= NumVerts; - perf_printf(" glDrawArrays: %s verts/sec\n", PerfHumanFloat(rate)); - - rate = PerfMeasureRate(DrawArraysVBO); - rate *= NumVerts; - perf_printf(" VBO glDrawArrays: %s verts/sec\n", PerfHumanFloat(rate)); - - rate = PerfMeasureRate(DrawElementsMem); - rate *= NumVerts; - perf_printf(" glDrawElements: %s verts/sec\n", PerfHumanFloat(rate)); - - rate = PerfMeasureRate(DrawElementsBO); - rate *= NumVerts; - perf_printf(" VBO glDrawElements: %s verts/sec\n", PerfHumanFloat(rate)); - - rate = PerfMeasureRate(DrawRangeElementsMem); - rate *= NumVerts; - perf_printf(" glDrawRangeElements: %s verts/sec\n", PerfHumanFloat(rate)); - - rate = PerfMeasureRate(DrawRangeElementsBO); - rate *= NumVerts; - perf_printf(" VBO glDrawRangeElements: %s verts/sec\n", PerfHumanFloat(rate)); - - exit(0); -} diff --git a/progs/rbug/.gitignore b/progs/rbug/.gitignore deleted file mode 100644 index 174fe42aa7..0000000000 --- a/progs/rbug/.gitignore +++ /dev/null @@ -1,12 +0,0 @@ -bin_to_bmp -simple_client -simple_server -shdr_info -shdr_dump -shdr_disable -ctx_info -ctx_rule -tex_dump -tex_info -*.bmp -*.bin diff --git a/progs/rbug/Makefile b/progs/rbug/Makefile deleted file mode 100644 index 2b95e59aca..0000000000 --- a/progs/rbug/Makefile +++ /dev/null @@ -1,48 +0,0 @@ -# progs/rbug/Makefile - -TOP = ../.. -include $(TOP)/configs/current - -INCLUDES = \ - -I. \ - -I$(TOP)/src/gallium/include \ - -I$(TOP)/src/gallium/auxiliary \ - -I$(TOP)/src/gallium/drivers \ - $(PROG_INCLUDES) - -LINKS = \ - $(GALLIUM_AUXILIARIES) \ - $(PROG_LINKS) - -SOURCES = \ - bin_to_bmp.c \ - simple_client.c \ - simple_server.c \ - shdr_info.c \ - shdr_dump.c \ - shdr_disable.c \ - ctx_info.c \ - ctx_rule.c \ - tex_info.c \ - tex_dump.c - - -OBJECTS = $(SOURCES:.c=.o) - -PROGS = $(OBJECTS:.o=) - -##### TARGETS ##### - -default: $(OBJECTS) $(PROGS) - -clean: - -rm -f $(PROGS) - -rm -f *.o - -##### RULES ##### - -$(OBJECTS): %.o: %.c - $(CC) -c $(INCLUDES) $(CFLAGS) $(DEFINES) $(PROG_DEFINES) $< -o $@ - -$(PROGS): %: %.o - $(CC) $(LDFLAGS) $< $(LINKS) -lm -o $@ diff --git a/progs/rbug/README b/progs/rbug/README deleted file mode 100644 index 0eb0a5de9a..0000000000 --- a/progs/rbug/README +++ /dev/null @@ -1,39 +0,0 @@ - REMOTE DEBUGGING CLI APPLICATIONS - - -= About = - -This directory contains a Gallium3D remote debugging cli applications. - - -= Build Instructions = - -To build, build a normal gallium build and from this directory do the following. - - make - -= Usage = - -Make sure that you driver has trace integration, see -src/gallium/driver/trace/README for more information about that. Then from on -the computer that you want to debug do: - - export GALLIUM_RBUG=true - - <launch app> - -From the debugging computer launch apps form this directory. Currently ip -addresses are hardcoded and you need to edit the application, but that will -change in the future. - -= Testing = - -The two apps simple_client and simple_server. Are unit testing of the -connection and (de)marsheler. Just run the server first and then the client: - - ./simple_server & - ./simple_client - - --- -Jakob Bornecrantz <jakob@vmware.com> diff --git a/progs/rbug/bin_to_bmp.c b/progs/rbug/bin_to_bmp.c deleted file mode 100644 index cdae3486ce..0000000000 --- a/progs/rbug/bin_to_bmp.c +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright 2009 VMware, Inc. - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * on the rights to use, copy, modify, merge, publish, distribute, sub - * license, and/or sell copies of the Software, and to permit persons to whom - * the Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL - * VMWARE AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - * USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#include "pipe/p_compiler.h" -#include "pipe/p_format.h" -#include "pipe/p_state.h" -#include "util/u_memory.h" -#include "util/u_debug.h" -#include "util/u_network.h" -#include "util/u_tile.h" - -static uint8_t* read(const char *filename, unsigned size); -static void dump(unsigned src_width, unsigned src_height, - unsigned src_stride, enum pipe_format src_format, - uint8_t *data, unsigned src_size); - -int main(int argc, char** argv) -{ - /* change these */ - unsigned width = 64; - unsigned height = 64; - unsigned stride = width * 4; - unsigned size = stride * height; - const char *filename = "mybin.bin"; - enum pipe_format format = PIPE_FORMAT_A8R8G8B8_UNORM; - - dump(width, height, stride, format, read(filename, size), size); - - return 0; -} - -static void dump(unsigned width, unsigned height, - unsigned src_stride, enum pipe_format src_format, - uint8_t *data, unsigned src_size) -{ - struct pipe_format_block src_block; - - enum pipe_format dst_format = PIPE_FORMAT_R32G32B32A32_FLOAT; - struct pipe_format_block dst_block; - unsigned dst_stride; - unsigned dst_size; - float *rgba; - int i; - char filename[512]; - - { - pf_get_block(src_format, &src_block); - assert(src_stride >= pf_get_stride(&src_block, width)); - assert(src_size >= pf_get_2d_size(&src_block, src_stride, width)); - } - { - pf_get_block(dst_format, &dst_block); - dst_stride = pf_get_stride(&dst_block, width); - dst_size = pf_get_2d_size(&dst_block, dst_stride, width); - rgba = MALLOC(dst_size); - } - - util_snprintf(filename, 512, "%s.bmp", pf_name(src_format)); - - if (pf_is_compressed(src_format)) { - debug_printf("skipping: %s\n", filename); - return; - } - - debug_printf("saving: %s\n", filename); - - for (i = 0; i < height; i++) { - pipe_tile_raw_to_rgba(src_format, data + src_stride * i, - width, 1, - &rgba[width*4*i], dst_stride); - } - - debug_dump_float_rgba_bmp(filename, width, height, rgba, width); - - FREE(rgba); -} - -static uint8_t* read(const char *filename, unsigned size) -{ - uint8_t *data; - FILE *file = fopen(filename, "rb"); - - data = MALLOC(size); - - fread(data, 1, size, file); - fclose(file); - - return data; -} diff --git a/progs/rbug/ctx_info.c b/progs/rbug/ctx_info.c deleted file mode 100644 index d72c326719..0000000000 --- a/progs/rbug/ctx_info.c +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright 2009 VMware, Inc. - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * on the rights to use, copy, modify, merge, publish, distribute, sub - * license, and/or sell copies of the Software, and to permit persons to whom - * the Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL - * VMWARE AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - * USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#include "pipe/p_compiler.h" -#include "pipe/p_format.h" -#include "util/u_memory.h" -#include "util/u_debug.h" -#include "util/u_network.h" - -#include "rbug/rbug.h" - -static void talk() -{ - int c = u_socket_connect("localhost", 13370); - struct rbug_connection *con = rbug_from_socket(c); - struct rbug_header *header; - struct rbug_proto_context_list_reply *list; - struct rbug_proto_context_info_reply *info; - int i; - - assert(c >= 0); - assert(con); - debug_printf("Connection get!\n"); - - debug_printf("Sending get contexts\n"); - rbug_send_context_list(con, NULL); - - debug_printf("Waiting for contexts\n"); - header = rbug_get_message(con, NULL); - assert(header->opcode == RBUG_OP_CONTEXT_LIST_REPLY); - list = (struct rbug_proto_context_list_reply *)header; - - debug_printf("Got contexts:\n"); - for (i = 0; i < list->contexts_len; i++) { -#if 0 - rbug_send_contexts_info(con, list->contexts[i], NULL); - - header = rbug_get_message(con, NULL); - assert(header->opcode == RBUG_OP_CONTEXT_INFO_REPLY); - info = (struct rbug_proto_context_info_reply *)header; -#else - (void)info; - header = NULL; -#endif - - debug_printf("%llu\n", - (unsigned long long)list->contexts[i]); - rbug_free_header(header); - } - - rbug_free_header(&list->header); - rbug_disconnect(con); -} - -int main(int argc, char** argv) -{ - talk(); - return 0; -} diff --git a/progs/rbug/ctx_rule.c b/progs/rbug/ctx_rule.c deleted file mode 100644 index e38b7b4e9b..0000000000 --- a/progs/rbug/ctx_rule.c +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright 2009 VMware, Inc. - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * on the rights to use, copy, modify, merge, publish, distribute, sub - * license, and/or sell copies of the Software, and to permit persons to whom - * the Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL - * VMWARE AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - * USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#include "pipe/p_compiler.h" -#include "pipe/p_format.h" -#include "util/u_memory.h" -#include "util/u_debug.h" -#include "util/u_network.h" - -#include "rbug/rbug.h" - -static void talk(rbug_context_t ctx, rbug_shader_t shdr) -{ - int c = u_socket_connect("localhost", 13370); - struct rbug_connection *con; - struct rbug_header *header; - - if (c < 0) - c = u_socket_connect("localhost", 13370); - - con = rbug_from_socket(c); - assert(c >= 0); - assert(con); - debug_printf("Connection get!\n"); - - rbug_send_context_draw_rule(con, ctx, 0, shdr, 0, 0, RBUG_BLOCK_AFTER, NULL); - - rbug_send_ping(con, NULL); - - debug_printf("Sent waiting for reply\n"); - header = rbug_get_message(con, NULL); - - if (header->opcode != RBUG_OP_PING_REPLY) - debug_printf("Error\n"); - else - debug_printf("Ok!\n"); - - rbug_free_header(header); - rbug_disconnect(con); -} - -static void print_usage() -{ - printf("Usage ctx_rule <context> <fragment>\n"); - exit(-1); -} - -int main(int argc, char** argv) -{ - long ctx; - long shdr; - - if (argc < 3) - print_usage(); - - ctx = atol(argv[1]); - shdr = atol(argv[2]); - - if (ctx <= 0 && ctx <= 0) - print_usage(); - - talk((uint64_t)ctx, (uint64_t)shdr); - - return 0; -} diff --git a/progs/rbug/shdr_disable.c b/progs/rbug/shdr_disable.c deleted file mode 100644 index e6b12073d8..0000000000 --- a/progs/rbug/shdr_disable.c +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright 2009 VMware, Inc. - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * on the rights to use, copy, modify, merge, publish, distribute, sub - * license, and/or sell copies of the Software, and to permit persons to whom - * the Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL - * VMWARE AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - * USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#include "pipe/p_compiler.h" -#include "pipe/p_format.h" -#include "util/u_memory.h" -#include "util/u_debug.h" -#include "util/u_network.h" - -#include "rbug/rbug.h" - -static void talk(rbug_context_t ctx, rbug_shader_t shdr) -{ - int c = u_socket_connect("localhost", 13370); - struct rbug_connection *con = rbug_from_socket(c); - struct rbug_header *header; - - assert(c >= 0); - assert(con); - debug_printf("Connection get!\n"); - - rbug_send_shader_disable(con, ctx, shdr, true, NULL); - - rbug_send_ping(con, NULL); - - debug_printf("Sent waiting for reply\n"); - header = rbug_get_message(con, NULL); - - if (header->opcode != RBUG_OP_PING_REPLY) - debug_printf("Error\n"); - else - debug_printf("Ok!\n"); - - rbug_free_header(header); - rbug_disconnect(con); -} - -static void print_usage() -{ - printf("Usage shdr_disable <context> <shader>\n"); - exit(-1); -} - -int main(int argc, char** argv) -{ - long ctx; - long shdr; - - if (argc < 3) - print_usage(); - - ctx = atol(argv[1]); - shdr = atol(argv[2]); - - if (ctx <= 0 && ctx <= 0) - print_usage(); - - talk((uint64_t)ctx, (uint64_t)shdr); - - return 0; -} diff --git a/progs/rbug/shdr_dump.c b/progs/rbug/shdr_dump.c deleted file mode 100644 index 8f9d758d51..0000000000 --- a/progs/rbug/shdr_dump.c +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Copyright 2009 VMware, Inc. - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * on the rights to use, copy, modify, merge, publish, distribute, sub - * license, and/or sell copies of the Software, and to permit persons to whom - * the Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL - * VMWARE AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - * USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#include "pipe/p_compiler.h" -#include "pipe/p_format.h" -#include "util/u_memory.h" -#include "util/u_debug.h" -#include "util/u_network.h" - -#include "rbug/rbug.h" - -#include "tgsi/tgsi_dump.h" - -static void shader_info(struct rbug_connection *con, rbug_context_t ctx) -{ - struct rbug_header *header; - struct rbug_proto_shader_list_reply *list; - struct rbug_proto_shader_info_reply *info; - int i; - - debug_printf("Sending get shaders to %llu\n", (unsigned long long)ctx); - rbug_send_shader_list(con, ctx, NULL); - - debug_printf("Waiting for shaders from %llu\n", (unsigned long long)ctx); - header = rbug_get_message(con, NULL); - assert(header->opcode == RBUG_OP_SHADER_LIST_REPLY); - list = (struct rbug_proto_shader_list_reply *)header; - - debug_printf("Got shaders:\n"); - for (i = 0; i < list->shaders_len; i++) { - rbug_send_shader_info(con, ctx, list->shaders[i], NULL); - - header = rbug_get_message(con, NULL); - assert(header->opcode == RBUG_OP_SHADER_INFO_REPLY); - info = (struct rbug_proto_shader_info_reply *)header; - - debug_printf("#####################################################\n"); - debug_printf("ctx: %llu shdr: %llu disabled %u\n", - (unsigned long long)ctx, - (unsigned long long)list->shaders[i], - info->disabled); - - /* just to be sure */ - assert(sizeof(struct tgsi_token) == 4); - - debug_printf("-----------------------------------------------------\n"); - tgsi_dump((struct tgsi_token *)info->original, 0); - - if (info->replaced_len > 0) { - debug_printf("-----------------------------------------------------\n"); - tgsi_dump((struct tgsi_token *)info->replaced, 0); - } - - rbug_free_header(header); - } - - debug_printf("#####################################################\n"); - rbug_free_header(&list->header); -} - -static void talk() -{ - int c = u_socket_connect("localhost", 13370); - struct rbug_connection *con = rbug_from_socket(c); - struct rbug_header *header; - struct rbug_proto_context_list_reply *list; - int i; - - assert(c >= 0); - assert(con); - debug_printf("Connection get!\n"); - - debug_printf("Sending get contexts\n"); - rbug_send_context_list(con, NULL); - - debug_printf("Waiting for contexts\n"); - header = rbug_get_message(con, NULL); - assert(header->opcode == RBUG_OP_CONTEXT_LIST_REPLY); - list = (struct rbug_proto_context_list_reply *)header; - - debug_printf("Got contexts:\n"); - for (i = 0; i < list->contexts_len; i++) { - shader_info(con, list->contexts[i]); - } - - rbug_free_header(&list->header); - rbug_disconnect(con); -} - -int main(int argc, char** argv) -{ - talk(); - return 0; -} diff --git a/progs/rbug/shdr_info.c b/progs/rbug/shdr_info.c deleted file mode 100644 index b6864e988e..0000000000 --- a/progs/rbug/shdr_info.c +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright 2009 VMware, Inc. - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * on the rights to use, copy, modify, merge, publish, distribute, sub - * license, and/or sell copies of the Software, and to permit persons to whom - * the Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL - * VMWARE AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - * USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#include "pipe/p_compiler.h" -#include "pipe/p_format.h" -#include "util/u_memory.h" -#include "util/u_debug.h" -#include "util/u_network.h" - -#include "rbug/rbug.h" - -static void shader_info(struct rbug_connection *con, rbug_context_t ctx) -{ - struct rbug_header *header; - struct rbug_proto_shader_list_reply *list; - struct rbug_proto_shader_info_reply *info; - int i; - - rbug_send_shader_list(con, ctx, NULL); - - header = rbug_get_message(con, NULL); - assert(header->opcode == RBUG_OP_SHADER_LIST_REPLY); - list = (struct rbug_proto_shader_list_reply *)header; - - debug_printf(" context | shader | disabled |\n"); - for (i = 0; i < list->shaders_len; i++) { - rbug_send_shader_info(con, ctx, list->shaders[i], NULL); - - header = rbug_get_message(con, NULL); - assert(header->opcode == RBUG_OP_SHADER_INFO_REPLY); - info = (struct rbug_proto_shader_info_reply *)header; - - debug_printf("% 15llu |% 15llu |% 15u |\n", - (unsigned long long)ctx, - (unsigned long long)list->shaders[i], - (unsigned)info->disabled); - - rbug_free_header(header); - } - - rbug_free_header(&list->header); -} - -static void talk() -{ - int c = u_socket_connect("localhost", 13370); - struct rbug_connection *con = rbug_from_socket(c); - struct rbug_header *header; - struct rbug_proto_context_list_reply *list; - int i; - - assert(c >= 0); - assert(con); - debug_printf("Connection get!\n"); - - debug_printf("Sending get contexts\n"); - rbug_send_context_list(con, NULL); - - debug_printf("Waiting for contexts\n"); - header = rbug_get_message(con, NULL); - assert(header->opcode == RBUG_OP_CONTEXT_LIST_REPLY); - list = (struct rbug_proto_context_list_reply *)header; - - debug_printf("Got contexts:\n"); - for (i = 0; i < list->contexts_len; i++) { - shader_info(con, list->contexts[i]); - } - - rbug_free_header(&list->header); - rbug_disconnect(con); -} - -int main(int argc, char** argv) -{ - talk(); - return 0; -} diff --git a/progs/rbug/simple_client.c b/progs/rbug/simple_client.c deleted file mode 100644 index 38929fa796..0000000000 --- a/progs/rbug/simple_client.c +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright 2009 VMware, Inc. - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * on the rights to use, copy, modify, merge, publish, distribute, sub - * license, and/or sell copies of the Software, and to permit persons to whom - * the Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL - * VMWARE AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - * USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#include "pipe/p_compiler.h" -#include "util/u_memory.h" -#include "util/u_debug.h" -#include "util/u_network.h" - -#include "rbug/rbug.h" - -static void talk() -{ - int c = u_socket_connect("localhost", 13370); - struct rbug_connection *con = rbug_from_socket(c); - struct rbug_header *header; - struct rbug_proto_texture_list_reply *list; - int i; - - assert(c >= 0); - assert(con); - debug_printf("Connection get!\n"); - - debug_printf("Sending get textures\n"); - rbug_send_texture_list(con, NULL); - - debug_printf("Waiting for textures\n"); - header = rbug_get_message(con, NULL); - assert(header->opcode == RBUG_OP_TEXTURE_LIST_REPLY); - list = (struct rbug_proto_texture_list_reply *)header; - - debug_printf("Got textures:\n"); - for (i = 0; i < list->textures_len; i++) - debug_printf("\ttex %llu\n", (unsigned long long)list->textures[i]); - - rbug_free_header(header); - rbug_disconnect(con); -} - -int main(int argc, char** argv) -{ - talk(); - return 0; -} diff --git a/progs/rbug/simple_server.c b/progs/rbug/simple_server.c deleted file mode 100644 index 3a842c06c4..0000000000 --- a/progs/rbug/simple_server.c +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright 2009 VMware, Inc. - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * on the rights to use, copy, modify, merge, publish, distribute, sub - * license, and/or sell copies of the Software, and to permit persons to whom - * the Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL - * VMWARE AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - * USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#include "pipe/p_compiler.h" -#include "util/u_memory.h" -#include "util/u_debug.h" -#include "util/u_network.h" - -#include "rbug/rbug.h" - -static void rbug_wait() -{ - int s = u_socket_listen_on_port(13370); - int c = u_socket_accept(s); - struct rbug_connection *con = rbug_from_socket(c); - struct rbug_header *header; - rbug_texture_t texs[2]; - uint32_t serial; - texs[0] = 1337; - texs[1] = 7331; - - assert(s >= 0); - assert(c >= 0); - assert(con); - debug_printf("Connection get!\n"); - - debug_printf("Waiting for get textures\n"); - header = rbug_get_message(con, &serial); - assert(header); - assert(header->opcode == RBUG_OP_TEXTURE_LIST); - rbug_free_header(header); - - rbug_send_texture_list_reply(con, serial, texs, 2, NULL); - rbug_disconnect(con); -} - -int main(int argc, char** argv) -{ - rbug_wait(); - return 0; -} diff --git a/progs/rbug/tex_dump.c b/progs/rbug/tex_dump.c deleted file mode 100644 index f9e06ee994..0000000000 --- a/progs/rbug/tex_dump.c +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright 2009 VMware, Inc. - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * on the rights to use, copy, modify, merge, publish, distribute, sub - * license, and/or sell copies of the Software, and to permit persons to whom - * the Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL - * VMWARE AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - * USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#include "pipe/p_compiler.h" -#include "pipe/p_format.h" -#include "pipe/p_state.h" -#include "util/u_memory.h" -#include "util/u_debug.h" -#include "util/u_network.h" -#include "util/u_tile.h" -#include "rbug/rbug.h" - -static void dump(rbug_texture_t tex, - struct rbug_proto_texture_info_reply *info, - struct rbug_proto_texture_read_reply *read, - int mip) -{ - enum pipe_format format = info->format; - uint8_t *data = read->data; - unsigned width = info->width[mip]; - unsigned height = info->height[mip]; - unsigned dst_stride = width * 4 * 4; - unsigned src_stride = read->stride; - float *rgba = MALLOC(dst_stride * height); - int i; - char filename[512]; - - util_snprintf(filename, 512, "%llu_%s_%u.bmp", - (unsigned long long)tex, pf_name(info->format), mip); - - if (pf_is_compressed(info->format)) { - debug_printf("skipping: %s\n", filename); - return; - } - - debug_printf("saving: %s\n", filename); - - for (i = 0; i < height; i++) { - pipe_tile_raw_to_rgba(format, data + src_stride * i, - width, 1, - &rgba[width*4*i], dst_stride); - } - - debug_dump_float_rgba_bmp(filename, width, height, rgba, width); - - FREE(rgba); -} - -static void talk() -{ - int c = u_socket_connect("localhost", 13370); - struct rbug_connection *con = rbug_from_socket(c); - struct rbug_header *header; - struct rbug_header *header2; - struct rbug_proto_texture_list_reply *list; - struct rbug_proto_texture_info_reply *info; - struct rbug_proto_texture_read_reply *read; - int i, j; - - assert(c >= 0); - assert(con); - debug_printf("Connection get!\n"); - - debug_printf("Sending get textures\n"); - rbug_send_texture_list(con, NULL); - - debug_printf("Waiting for textures\n"); - header = rbug_get_message(con, NULL); - assert(header->opcode == RBUG_OP_TEXTURE_LIST_REPLY); - list = (struct rbug_proto_texture_list_reply *)header; - - debug_printf("Got textures:\n"); - for (i = 0; i < list->textures_len; i++) { - rbug_send_texture_info(con, list->textures[i], NULL); - - header = rbug_get_message(con, NULL); - assert(header->opcode == RBUG_OP_TEXTURE_INFO_REPLY); - info = (struct rbug_proto_texture_info_reply *)header; - - for (j = 0; j <= info->last_level; j++) { - rbug_send_texture_read(con, list->textures[i], - 0, j, 0, - 0, 0, info->width[j], info->height[j], - NULL); - - header2 = rbug_get_message(con, NULL); - assert(header2->opcode == RBUG_OP_TEXTURE_READ_REPLY); - read = (struct rbug_proto_texture_read_reply *)header2; - - dump(list->textures[i], info, read, j); - - rbug_free_header(header2); - } - - rbug_free_header(header); - - } - rbug_free_header(&list->header); - rbug_disconnect(con); -} - -int main(int argc, char** argv) -{ - talk(); - return 0; -} diff --git a/progs/rbug/tex_info.c b/progs/rbug/tex_info.c deleted file mode 100644 index 4a21bae359..0000000000 --- a/progs/rbug/tex_info.c +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright 2009 VMware, Inc. - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * on the rights to use, copy, modify, merge, publish, distribute, sub - * license, and/or sell copies of the Software, and to permit persons to whom - * the Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL - * VMWARE AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - * USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#include "pipe/p_compiler.h" -#include "pipe/p_format.h" -#include "util/u_memory.h" -#include "util/u_debug.h" -#include "util/u_network.h" - -#include "rbug/rbug.h" - -static void talk() -{ - int c = u_socket_connect("localhost", 13370); - struct rbug_connection *con = rbug_from_socket(c); - struct rbug_header *header; - struct rbug_proto_texture_list_reply *list; - struct rbug_proto_texture_info_reply *info; - int i; - - assert(c >= 0); - assert(con); - debug_printf("Connection get!\n"); - - debug_printf("Sending get textures\n"); - rbug_send_texture_list(con, NULL); - - debug_printf("Waiting for textures\n"); - header = rbug_get_message(con, NULL); - assert(header->opcode == RBUG_OP_TEXTURE_LIST_REPLY); - list = (struct rbug_proto_texture_list_reply *)header; - - debug_printf("Got textures:\n"); - for (i = 0; i < list->textures_len; i++) { - rbug_send_texture_info(con, list->textures[i], NULL); - - header = rbug_get_message(con, NULL); - assert(header->opcode == RBUG_OP_TEXTURE_INFO_REPLY); - info = (struct rbug_proto_texture_info_reply *)header; - - debug_printf("%llu %s %u x %u x %u, block(%ux%u %u), last_level: %u, nr_samples: %u, usage: %u\n", - (unsigned long long)list->textures[i], pf_name(info->format), - info->width[0], info->height[0], info->depth[0], - info->blockw, info->blockh, info->blocksize, - info->last_level, info->nr_samples, info->tex_usage); - rbug_free_header(header); - } - - rbug_free_header(&list->header); - rbug_disconnect(con); -} - -int main(int argc, char** argv) -{ - talk(); - return 0; -} diff --git a/progs/redbook/.gitignore b/progs/redbook/.gitignore deleted file mode 100644 index 8ed3efe3e2..0000000000 --- a/progs/redbook/.gitignore +++ /dev/null @@ -1,64 +0,0 @@ -.cvsignore -aaindex -aapoly -aargb -accanti -accpersp -alpha -alpha3D -anti -bezcurve -bezmesh -checker -clip -colormat -cube -depthcue -dof -double -drawf -feedback -fog -fogindex -font -hello -image -light -lines -list -material -mipmap -model -movelight -nurbs -pickdepth -picksquare -plane -planet -polyoff -polys -quadric -robot -sccolorlight -scene -scenebamb -sceneflat -select -smooth -stencil -stroke -surface -teaambient -teapots -tess -tesswind -texbind -texgen -texprox -texsub -texturesurf -torus -trim -unproject -varray -wrap diff --git a/progs/redbook/Windows/redbook.dsw b/progs/redbook/Windows/redbook.dsw deleted file mode 100644 index a739af4a4e..0000000000 --- a/progs/redbook/Windows/redbook.dsw +++ /dev/null @@ -1,29 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "teapots"=".\teapots.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/progs/redbook/Windows/teapots.dsp b/progs/redbook/Windows/teapots.dsp deleted file mode 100644 index b74ed08925..0000000000 --- a/progs/redbook/Windows/teapots.dsp +++ /dev/null @@ -1,112 +0,0 @@ -# Microsoft Developer Studio Project File - Name="teapots" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=teapots - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "teapots.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "teapots.mak" CFG="teapots - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "teapots - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "teapots - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "teapots - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../teapots.exe" -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ELSEIF "$(CFG)" == "teapots - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../teapots.exe" /pdbtype:sept -# Begin Special Build Tool -SOURCE="$(InputPath)" -PostBuild_Desc=Copy DLLs -PostBuild_Cmds=copy ..\..\..\lib\*.dll .. -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "teapots - Win32 Release" -# Name "teapots - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\teapots.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/progs/slang/.gitignore b/progs/slang/.gitignore deleted file mode 100644 index 8a42b018e6..0000000000 --- a/progs/slang/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -cltest -sotest -vstest diff --git a/progs/slang/Makefile b/progs/slang/Makefile deleted file mode 100644 index f6f34fcd25..0000000000 --- a/progs/slang/Makefile +++ /dev/null @@ -1,57 +0,0 @@ -# progs/slang/Makefile - -TOP = ../.. - -include $(TOP)/configs/current - -INCDIR = $(TOP)/include - -LIB_DEP = $(TOP)/$(LIB_DIR)/$(GL_LIB_NAME) - -LIBS = -L$(TOP)/$(LIB_DIR) -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) $(APP_LIB_DEPS) - -# -# targets -# - -.PHONY: default tests clean - -default: cltest sotest vstest - -tests: default - ! ./sotest 2> /dev/null | (grep -e ^[*][*][*]) - ! ./vstest 2> /dev/null | (grep -e ^[*][*][*]) - ! ./cltest 2> /dev/null | (grep -e ^[*][*][*]) - -clean: - -rm -f cltest.o sotest.o vstest.o framework.o cltest sotest vstest - -# -# executables -# - -cltest: cltest.o framework.o $(LIB_DEP) - $(CC) $(CFLAGS) $(LDFLAGS) cltest.o framework.o $(LIBS) -o cltest - -sotest: sotest.o framework.o $(LIB_DEP) - $(CC) $(CFLAGS) $(LDFLAGS) sotest.o framework.o $(LIBS) -o sotest - -vstest: vstest.o framework.o $(LIB_DEP) - $(CC) $(CFLAGS) $(LDFLAGS) vstest.o framework.o $(LIBS) -o vstest - -# -# objects -# - -framework.o: framework.c framework.h - $(CC) -c -I$(INCDIR) $(CFLAGS) framework.c -o framework.o - -cltest.o: cltest.c framework.h - $(CC) -c -I$(INCDIR) $(CFLAGS) cltest.c -o cltest.o - -sotest.o: sotest.c framework.h - $(CC) -c -I$(INCDIR) $(CFLAGS) sotest.c -o sotest.o - -vstest.o: vstest.c framework.h - $(CC) -c -I$(INCDIR) $(CFLAGS) vstest.c -o vstest.o - diff --git a/progs/slang/README b/progs/slang/README deleted file mode 100644 index 13a6aaad34..0000000000 --- a/progs/slang/README +++ /dev/null @@ -1,7 +0,0 @@ -GLSL regression tests. - -Type "make" to build all test apps. - -Type "make tests" to build and run all test apps. If any -error is detected, a line starting with *** is output. - diff --git a/progs/slang/cltest.c b/progs/slang/cltest.c deleted file mode 100644 index dfff6cb226..0000000000 --- a/progs/slang/cltest.c +++ /dev/null @@ -1,253 +0,0 @@ -/* - * GL_ARB_shading_language_100 test application. - * - * Tests correctness of emited code. Runs multiple well-formed shaders and checks if - * they produce valid results. - * - * Requires specific support on the GL implementation side. A special function printMESA() - * must be supported in the language that prints current values of generic type - * to the appropriate shader's info log, and optionally to the screen. - * - * Author: Michal Krol - */ - -#include "framework.h" - -#define EPSILON 0.0001f - -static GLhandleARB vert = 0; -static GLhandleARB prog = 0; - -static int get_line (FILE *f, char *line, int size) -{ - if (fgets (line, size, f) == NULL) - return 0; - if (line[strlen (line) - 1] == '\n') - line[strlen (line) - 1] = '\0'; - return 1; -} - -struct ATTRIB -{ - char name[32]; - GLfloat value[64][4]; - GLuint count; -}; - -struct ATTRIBS -{ - struct ATTRIB attrib[32]; - GLuint count; -}; - -struct SHADER -{ - char code[16000]; - GLfloat output[1000]; - GLuint count; -}; - -enum SHADER_LOAD_STATE -{ - SLS_NONE, - SLS_CODE, - SLS_OUTPUT -}; - -struct PROGRAM -{ - struct PROGRAM *next; - char name[256]; - struct ATTRIBS attribs; - struct SHADER vertex; -}; - -enum PROGRAM_LOAD_STATE -{ - PLS_NONE, - PLS_ATTRIB, - PLS_VERTEX -}; - -static struct PROGRAM *program = NULL; - -static void load_test_file (const char *filename, struct PROGRAM **program) -{ - struct PROGRAM **currprog = program; - FILE *f; - char line[256]; - enum PROGRAM_LOAD_STATE pls = PLS_NONE; - enum SHADER_LOAD_STATE sls = SLS_NONE; - - f = fopen (filename, "r"); - if (f == NULL) - return; - - while (get_line (f, line, sizeof (line))) { - if (line[0] == '$') { - if (strncmp (line + 1, "program", 7) == 0) { - if (*currprog != NULL) - currprog = &(**currprog).next; - *currprog = (struct PROGRAM *) (malloc (sizeof (struct PROGRAM))); - if (*currprog == NULL) - break; - (**currprog).next = NULL; - strcpy ((**currprog).name, line + 9); - (**currprog).attribs.count = 0; - (**currprog).vertex.code[0] = '\0'; - (**currprog).vertex.count = 0; - pls = PLS_NONE; - } - else if (strncmp (line + 1, "attrib", 6) == 0) { - if (*currprog == NULL) - break; - strcpy ((**currprog).attribs.attrib[(**currprog).attribs.count].name, line + 8); - (**currprog).attribs.attrib[(**currprog).attribs.count].count = 0; - (**currprog).attribs.count++; - pls = PLS_ATTRIB; - } - else if (strcmp (line + 1, "vertex") == 0) { - if (*currprog == NULL) - break; - pls = PLS_VERTEX; - sls = SLS_NONE; - } - else if (strcmp (line + 1, "code") == 0) { - if (*currprog == NULL || pls != PLS_VERTEX) - break; - sls = SLS_CODE; - } - else if (strcmp (line + 1, "output") == 0) { - if (*currprog == NULL || pls != PLS_VERTEX) - break; - sls = SLS_OUTPUT; - } - } - else { - if ((*currprog == NULL || pls == PLS_NONE || sls == SLS_NONE) && line[0] != '\0') - break; - if (*currprog != NULL && pls == PLS_VERTEX) { - if (sls == SLS_CODE) { - strcat ((**currprog).vertex.code, line); - strcat ((**currprog).vertex.code, "\n"); - } - else if (sls == SLS_OUTPUT && line[0] != '\0') { - if (strcmp (line, "true") == 0) - (**currprog).vertex.output[(**currprog).vertex.count] = 1.0f; - else if (strcmp (line, "false") == 0) - (**currprog).vertex.output[(**currprog).vertex.count] = 0.0f; - else - sscanf (line, "%f", &(**currprog).vertex.output[(**currprog).vertex.count]); - (**currprog).vertex.count++; - } - } - else if (*currprog != NULL && pls == PLS_ATTRIB && line[0] != '\0') { - struct ATTRIB *att = &(**currprog).attribs.attrib[(**currprog).attribs.count - 1]; - GLfloat *vec = att->value[att->count]; - sscanf (line, "%f %f %f %f", &vec[0], &vec[1], &vec[2], &vec[3]); - att->count++; - } - } - } - - fclose (f); -} - -void InitScene (void) -{ - prog = glCreateProgramObjectARB (); - vert = glCreateShaderObjectARB (GL_VERTEX_SHADER_ARB); - glAttachObjectARB (prog, vert); - glDeleteObjectARB (vert); - load_test_file ("cltest.txt", &program); -} - -void RenderScene (void) -{ - struct PROGRAM *nextprogram; - char *code; - GLint info_length, length; - char output[65000], *p; - GLuint i; - - if (program == NULL) - exit (0); - - code = program->vertex.code; - glShaderSourceARB (vert, 1, (const GLcharARB **) (&code), NULL); - glCompileShaderARB (vert); - CheckObjectStatus (vert); - - for (i = 0; i < program->attribs.count; i++) { - const char *name = program->attribs.attrib[i].name; - if (strcmp (name, "gl_Vertex") != 0) - glBindAttribLocationARB (prog, i, name); - } - - glLinkProgramARB (prog); - CheckObjectStatus (prog); - glUseProgramObjectARB (prog); - - printf ("\n--- %s\n", program->name); - - glGetObjectParameterivARB (vert, GL_OBJECT_INFO_LOG_LENGTH_ARB, &info_length); - - glBegin (GL_POINTS); - if (program->attribs.count == 0) { - glVertex2f (0.0f, 0.0f); - } - else { - for (i = 0; i < program->attribs.attrib[0].count; i++) { - GLuint j; - for (j = 0; j < program->attribs.count; j++) { - GLuint n = (j + 1) % program->attribs.count; - GLfloat *vec = program->attribs.attrib[n].value[i]; - const char *name = program->attribs.attrib[n].name; - if (strcmp (name, "gl_Vertex") == 0) - glVertex4fv (vec); - else - glVertexAttrib4fvARB (n, vec); - } - } - } - glEnd (); - glFlush (); - - glGetInfoLogARB (vert, sizeof (output), &length, output); - p = output + info_length - 1; - for (i = 0; i < program->vertex.count; i++) { - GLfloat value; - if (p == NULL) { - printf ("*** %s\n", "I/O error"); - break; - } - if (strncmp (p, "true", 4) == 0) - value = 1.0f; - else if (strncmp (p, "false", 5) == 0) - value = 0.0f; - else if (sscanf (p, "%f", &value) != 1) { - printf ("*** %s\n", "I/O error"); - break; - } - if (fabs (value - program->vertex.output[i]) > EPSILON) { - printf ("*** Values are different, is %f, should be %f\n", value, - program->vertex.output[i]); - } - p = strchr (p, '\n'); - if (p != NULL) - p++; - } - if (p && *p != '\0') - printf ("*** %s\n", "I/O error"); - - nextprogram = program->next; - free (program); - program = nextprogram; -} - -int main (int argc, char *argv[]) -{ - InitFramework (&argc, argv); - return 0; -} - diff --git a/progs/slang/cltest.txt b/progs/slang/cltest.txt deleted file mode 100644 index 97cc177c9f..0000000000 --- a/progs/slang/cltest.txt +++ /dev/null @@ -1,1615 +0,0 @@ -$ /* -$ Shader test script. -$ -$ Author: Michal Krol -$ -$ Comment line starts with dollar sign and white space. -$ -$ $program <name> starts a new test program section called <name>. Contains all other sections. -$ -$ $attrib <name> starts vertex data input section for attrib called <name>. Each line consists of -$ four values that form single vertex attrib. -$ -$ $vertex starts vertex shader section. Contains $code and &output sections. -$ -$ $code starts source code section. All text in this section gets compiled into appropriate -$ shader object. -$ -$ $output starts shader execution results section. These are compared, value-by-value, -$ with results of executing printMESA() functions within a shader. -$ */ - - -$ /* -$ -------------------------------------------------------------------------------------------------- -$ Test printMESA() function. -$ */ - -$program PRINT TEST - -$vertex - -$code - -#version 110 - -#extension MESA_shader_debug: require - -void main () { - gl_Position = gl_ModelViewMatrix * gl_Vertex; - gl_FrontColor = vec4 (1.0); - - printMESA (11.1); - printMESA (111); - printMESA (true); - - printMESA (vec2 (22.1, 22.2)); - printMESA (vec3 (33.1, 33.2, 33.3)); - printMESA (vec4 (44.1, 44.2, 44.3, 44.4)); - - printMESA (ivec2 (221, 222)); - printMESA (ivec3 (331, 332, 333)); - printMESA (ivec4 (441, 442, 443, 444)); - - printMESA (bvec2 (false, true)); - printMESA (bvec3 (true, true, false)); - printMESA (bvec4 (true, false, true, false)); - - printMESA (mat2 (55.11, 55.12, 55.21, 55.22)); - printMESA (mat3 (66.11, 66.12, 66.13, - 66.21, 66.22, 66.23, - 66.31, 66.32, 66.33)); - printMESA (mat4 (77.11, 77.12, 77.13, 77.14, - 77.21, 77.22, 77.23, 77.24, - 77.31, 77.32, 77.33, 77.34, - 77.41, 77.42, 77.43, 77.44)); -} - -$output - -11.1 -111 -true - -22.1 -22.2 -33.1 -33.2 -33.3 -44.1 -44.2 -44.3 -44.4 - -221 -222 -331 -332 -333 -441 -442 -443 -444 - -false -true -true -true -false -true -false -true -false - -55.11 -55.12 -55.21 -55.22 - -66.11 -66.12 -66.13 -66.21 -66.22 -66.23 -66.31 -66.32 -66.33 - -77.11 -77.12 -77.13 -77.14 -77.21 -77.22 -77.23 -77.24 -77.31 -77.32 -77.33 -77.34 -77.41 -77.42 -77.43 -77.44 - - -$ /* -$ -------------------------------------------------------------------------------------------------- -$ Test type casting. -$ */ - -$program TYPE CAST TEST - -$attrib gl_Vertex -0.0 0.0 0.0 1.0 - -$attrib _Zero -0.0 0.0 0.0 0.0 - -$attrib _One -1.1 0.0 0.0 0.0 - -$attrib _Two -2.2 0.0 0.0 0.0 - -$attrib _MinusThree --3.3 0.0 0.0 0.0 - -$vertex - -$code - -#version 110 - -#extension MESA_shader_debug: require - -attribute float _Zero; -attribute float _One; -attribute float _Two; -attribute float _MinusThree; - -void main () { - gl_Position = gl_ModelViewMatrix * gl_Vertex; - gl_FrontColor = vec4 (1.0); - - printMESA (_Zero); - printMESA (_One); - printMESA (_Two); - printMESA (_MinusThree); - - printMESA (float (_Zero)); - printMESA (float (_One)); - printMESA (float (_Two)); - printMESA (float (_MinusThree)); - printMESA (float (45.99)); - printMESA (float (-6.17)); - - printMESA (bool (_Zero)); - printMESA (bool (_One)); - printMESA (bool (_Two)); - printMESA (bool (_MinusThree)); - printMESA (bool (45.99)); - printMESA (bool (-6.17)); - printMESA (bool (0.0001)); - printMESA (bool (0.0)); - - printMESA (int (_Zero)); - printMESA (int (_One)); - printMESA (int (_Two)); - printMESA (int (_MinusThree)); - printMESA (int (45.99)); - printMESA (int (45.22)); - printMESA (int (-6.17)); - printMESA (int (-6.87)); -} - -$output - -0.0 -1.1 -2.2 --3.3 - -0.0 -1.1 -2.2 --3.3 -45.99 --6.17 - -false -true -true -true -true -true -true -false - -0 -1 -2 --3 -45 -45 --6 --6 - -$ /* -$ -------------------------------------------------------------------------------------------------- -$ Test vector swizzles. -$ */ - -$program SWIZZLE TEST - -$attrib gl_Vertex -0.0 0.0 0.0 1.0 - -$attrib _One -1.1 1.2 1.3 1.4 - -$attrib _Two -2.1 2.2 2.3 2.4 - -$vertex - -$code - -#version 110 - -#extension MESA_shader_debug: require - -attribute vec4 _One; -attribute vec4 _Two; - -void assign5678 (out vec4 v) -{ - v.x = 5.5; - v.y = 6.6; - v.z = 7.7; - v.w = 8.8; -} - -void main () { - gl_Position = gl_ModelViewMatrix * gl_Vertex; - gl_FrontColor = vec4 (1.0); - - printMESA (_One); - printMESA (_Two); - - printMESA (_One.x); - printMESA (_One.y); - printMESA (_One.z); - printMESA (_One.w); - - printMESA (_Two.xy); - printMESA (_Two.yx); - printMESA (_Two.xw); - printMESA (_Two.wx); - printMESA (_Two.yz); - printMESA (_Two.zy); - printMESA (_Two.xz); - printMESA (_Two.zx); - printMESA (_Two.zw); - printMESA (_Two.wz); - - printMESA (_One.xyz); - printMESA (_One.yzx); - printMESA (_One.zxy); - printMESA (_One.xzy); - printMESA (_One.yzw); - printMESA (_One.zwx); - - printMESA (_Two.xyzw); - printMESA (_Two.yzwx); - printMESA (_Two.wzyx); - printMESA (_Two.zwyx); - - printMESA (_One.xx); - printMESA (_One.zz); - printMESA (_One.ww); - - printMESA (_Two.xxx); - printMESA (_Two.yyy); - printMESA (_Two.www); - - printMESA (_One.xxxx); - printMESA (_One.zzzz); - - printMESA (_Two.xxyy); - printMESA (_Two.wwxx); - printMESA (_Two.zxxw); - - vec4 v; - - v.zxwy = vec4 (5.5, 6.6, 7.7, 8.8); - printMESA (v); - - assign5678 (v.ywxz); - printMESA (v); -} - -$output - -1.1 -1.2 -1.3 -1.4 -2.1 -2.2 -2.3 -2.4 - -1.1 -1.2 -1.3 -1.4 - -2.1 -2.2 -2.2 -2.1 -2.1 -2.4 -2.4 -2.1 -2.2 -2.3 -2.3 -2.2 -2.1 -2.3 -2.3 -2.1 -2.3 -2.4 -2.4 -2.3 - -1.1 -1.2 -1.3 -1.2 -1.3 -1.1 -1.3 -1.1 -1.2 -1.1 -1.3 -1.2 -1.2 -1.3 -1.4 -1.3 -1.4 -1.1 - -2.1 -2.2 -2.3 -2.4 -2.2 -2.3 -2.4 -2.1 -2.4 -2.3 -2.2 -2.1 -2.3 -2.4 -2.2 -2.1 - -1.1 -1.1 -1.3 -1.3 -1.4 -1.4 - -2.1 -2.1 -2.1 -2.2 -2.2 -2.2 -2.4 -2.4 -2.4 - -1.1 -1.1 -1.1 -1.1 -1.3 -1.3 -1.3 -1.3 - -2.1 -2.1 -2.2 -2.2 -2.4 -2.4 -2.1 -2.1 -2.3 -2.1 -2.1 -2.4 - -6.6 -8.8 -5.5 -7.7 - -7.7 -5.5 -8.8 -6.6 - - -$ /* -$ -------------------------------------------------------------------------------------------------- -$ Test relational operators. -$ */ - -$program RELATIONAL OPERATOR TEST - -$attrib gl_Vertex -0.0 0.0 0.0 1.0 - -$attrib _Two -2.0 0.0 0.0 0.0 - -$attrib _Two2 -2.0 0.0 0.0 0.0 - -$attrib _MinusThree --3.0 0.0 0.0 0.0 - -$vertex - -$code - -#version 110 - -#extension MESA_shader_debug: require - -attribute float _Two; -attribute float _Two2; -attribute float _MinusThree; - -struct foo -{ - float f; - vec4 v4; - vec3 v3; - mat4 m4; - int i; - bool b; -}; - -void printMESA (const in foo bar) -{ - printMESA (bar.f); - printMESA (bar.v4); - printMESA (bar.v3); - printMESA (bar.m4); - printMESA (bar.i); - printMESA (bar.b); -} - -void main () { - gl_Position = gl_ModelViewMatrix * gl_Vertex; - gl_FrontColor = vec4 (1.0); - - int iTwo = int (_Two); - int iTwo2 = int (_Two2); - int iMinusThree = int (_MinusThree); - - printMESA (_Two <= _Two); - printMESA (_Two <= _Two2); - printMESA (_Two <= _MinusThree); - printMESA (_MinusThree <= _Two); - printMESA (iTwo <= iTwo); - printMESA (iTwo <= iTwo2); - printMESA (iTwo <= iMinusThree); - printMESA (iMinusThree <= iTwo); - - printMESA (_Two >= _Two); - printMESA (_Two >= _Two2); - printMESA (_Two >= _MinusThree); - printMESA (_MinusThree >= _Two); - printMESA (iTwo >= iTwo); - printMESA (iTwo >= iTwo2); - printMESA (iTwo >= iMinusThree); - printMESA (iMinusThree >= iTwo); - - printMESA (_Two < _Two); - printMESA (_Two < _Two2); - printMESA (_Two < _MinusThree); - printMESA (_MinusThree < _Two); - printMESA (iTwo < iTwo); - printMESA (iTwo < iTwo2); - printMESA (iTwo < iMinusThree); - printMESA (iMinusThree < iTwo); - - printMESA (_Two > _Two); - printMESA (_Two > _Two2); - printMESA (_Two > _MinusThree); - printMESA (_MinusThree > _Two); - printMESA (iTwo > iTwo); - printMESA (iTwo > iTwo2); - printMESA (iTwo > iMinusThree); - printMESA (iMinusThree > iTwo); - - printMESA (_Two == _Two); - printMESA (_Two == _Two2); - printMESA (_Two == _MinusThree); - printMESA (_MinusThree == _MinusThree); - printMESA (iTwo == iTwo); - printMESA (iTwo == iTwo2); - printMESA (iTwo == iMinusThree); - printMESA (iMinusThree == iMinusThree); - - printMESA (_Two != _Two); - printMESA (_Two != _Two2); - printMESA (_Two != _MinusThree); - printMESA (_MinusThree != _MinusThree); - printMESA (iTwo != iTwo); - printMESA (iTwo != iTwo2); - printMESA (iTwo != iMinusThree); - printMESA (iMinusThree != iMinusThree); - - foo foo1; - foo1.f = 13.31; - foo1.v4 = vec4 (44.11, 44.22, 44.33, 44.44); - foo1.v3 = vec3 (33.11, 33.22, 33.33); - foo1.m4 = mat4 (17.88); - foo1.i = 666; - foo1.b = true; - printMESA (foo1); - - // make foo2 the same as foo1 - foo foo2; - foo2.f = 13.31; - foo2.v4 = vec4 (44.11, 44.22, 44.33, 44.44); - foo2.v3 = vec3 (33.11, 33.22, 33.33); - foo2.m4 = mat4 (17.88); - foo2.i = 666; - foo2.b = true; - - printMESA (foo1 == foo2); - printMESA (foo1 != foo2); - - // make them a little bit different - foo2.m4[2].y = 333.333; - printMESA (foo2); - - printMESA (foo1 == foo2); - printMESA (foo1 != foo2); -} - -$output - -true -true -false -true -true -true -false -true - -true -true -true -false -true -true -true -false - -false -false -false -true -false -false -false -true - -false -false -true -false -false -false -true -false - -true -true -false -true -true -true -false -true - -false -false -true -false -false -false -true -false - -13.31 -44.11 -44.22 -44.33 -44.44 -33.11 -33.22 -33.33 -17.88 -0.0 -0.0 -0.0 -0.0 -17.88 -0.0 -0.0 -0.0 -0.0 -17.88 -0.0 -0.0 -0.0 -0.0 -17.88 -666 -true - -true -false - -13.31 -44.11 -44.22 -44.33 -44.44 -33.11 -33.22 -33.33 -17.88 -0.0 -0.0 -0.0 -0.0 -17.88 -0.0 -0.0 -0.0 -333.333 -17.88 -0.0 -0.0 -0.0 -0.0 -17.88 -666 -true - -false -true - - -$ /* -$ -------------------------------------------------------------------------------------------------- -$ Test logical operators. -$ */ - -$program LOGICAL OPERATOR TEST - -$attrib gl_Vertex -0.0 0.0 0.0 1.0 - -$attrib _False -0.0 0.0 0.0 0.0 - -$attrib _True -1.0 0.0 0.0 0.0 - -$attrib _False2 -0.0 0.0 0.0 0.0 - -$attrib _True2 -1.0 0.0 0.0 0.0 - -$vertex - -$code - -#version 110 - -#extension MESA_shader_debug: require - -attribute float _False; -attribute float _True; -attribute float _False2; -attribute float _True2; - -void main () { - gl_Position = gl_ModelViewMatrix * gl_Vertex; - gl_FrontColor = vec4 (1.0); - - printMESA (_False); - printMESA (_True); - printMESA (_False2); - printMESA (_True2); - - bool False = bool (_False); - bool True = bool (_True); - bool False2 = bool (_False2); - bool True2 = bool (_True2); - - // - // It is important to test each operator with the following argument types: - // * Both arguments are different variables, even if they have the same values. - // False and False2 are distinct attributes, but are the same in value. - // * Both arguments may be the same variables. This case tests possible - // optimizations, e.g. X && X --> X. - // * Both arguments are constant. This tests constant folding. - // - - printMESA (!False); - printMESA (!True); - printMESA (!false); - printMESA (!true); - - printMESA (False ^^ False2); - printMESA (False ^^ True2); - printMESA (True ^^ False2); - printMESA (True ^^ True2); - printMESA (False ^^ False); - printMESA (False ^^ True); - printMESA (True ^^ False); - printMESA (True ^^ True); - printMESA (false ^^ false); - printMESA (false ^^ true); - printMESA (true ^^ false); - printMESA (true ^^ true); - - printMESA (False && False2); - printMESA (False && True2); - printMESA (True && False2); - printMESA (True && True2); - printMESA (False && False); - printMESA (False && True); - printMESA (True && False); - printMESA (True && True); - printMESA (false && false); - printMESA (false && true); - printMESA (true && false); - printMESA (true && true); - - printMESA (False || False2); - printMESA (False || True2); - printMESA (True || False2); - printMESA (True || True2); - printMESA (False || False); - printMESA (False || True); - printMESA (True || False); - printMESA (True || True); - printMESA (false || false); - printMESA (false || true); - printMESA (true || false); - printMESA (true || true); - - // - // Test short-circuit evaluation of && and ||. The right expression evaluation depends - // on the value of the left expression. If the right expression has side effects, we - // can easily test if it happened. - // - - bool x; - - x = false; - printMESA (x); - printMESA (False && (x = true)); - printMESA (x); - - x = false; - printMESA (x); - printMESA (false && (x = true)); - printMESA (x); - - x = true; - printMESA (x); - printMESA (True || (x = false)); - printMESA (x); - - x = true; - printMESA (x); - printMESA (true || (x = false)); - printMESA (x); -} - -$output - -0.0 -1.0 -0.0 -1.0 - -true -false -true -false - -false -true -true -false -false -true -true -false -false -true -true -false - -false -false -false -true -false -false -false -true -false -false -false -true - -false -true -true -true -false -true -true -true -false -true -true -true - -false -false -false - -false -false -false - -true -true -true - -true -true -true - - -$ /* -$ -------------------------------------------------------------------------------------------------- -$ Test subscript operator/array access. -$ */ - -$program ARRAY ACCESS TEST - -$attrib gl_Vertex -0.0 0.0 0.0 1.0 - -$attrib _Zero -0.0 0.0 0.0 0.0 - -$attrib _One -1.1 0.0 0.0 0.0 - -$attrib _Two -2.9 0.0 0.0 0.0 - -$attrib _Vec -11.11 22.22 33.33 44.44 - -$vertex - -$code - -#version 110 - -#extension MESA_shader_debug: require - -attribute float _Zero; -attribute float _One; -attribute float _Two; -attribute vec4 _Vec; - -void main () { - gl_Position = gl_ModelViewMatrix * gl_Vertex; - gl_FrontColor = vec4 (1.0); - - printMESA (_Zero); - printMESA (_One); - printMESA (_Two); - printMESA (_Vec); - - printMESA (_Vec[0]); - printMESA (_Vec[1]); - printMESA (_Vec[2]); - printMESA (_Vec[3]); - - printMESA (_Vec[int (_Zero)]); - printMESA (_Vec[int (_One)]); - printMESA (_Vec[int (_Two)]); -} - -$output - -0.0 -1.1 -2.9 -11.11 -22.22 -33.33 -44.44 - -11.11 -22.22 -33.33 -44.44 - -11.11 -22.22 -33.33 - - -$ /* -$ -------------------------------------------------------------------------------------------------- -$ Test pre/post-increment/decrement operators. -$ Note: assumes relational operators being correct. -$ */ - -$program PRE/POST-INC/DEC OPERATOR TEST - -$attrib gl_Vertex -0.0 0.0 0.0 1.0 - -$attrib _Zero -0.0 0.0 0.0 0.0 - -$attrib _One -1.1 0.0 0.0 0.0 - -$attrib _Two4 -2.1 2.2 2.3 2.4 - -$vertex - -$code - -#version 110 - -#extension MESA_shader_debug: require - -attribute float _Zero; -attribute float _One; -attribute vec4 _Two4; - -float fZero, fOne; -vec4 fTwo4; -int iZero, iOne; -ivec4 iTwo4; - -void reset () { - fZero = _Zero; - fOne = _One; - fTwo4 = _Two4; - iZero = int (_Zero); - iOne = int (_One); - iTwo4 = ivec4 (_Two4); -} - -void main () { - gl_Position = gl_ModelViewMatrix * gl_Vertex; - gl_FrontColor = vec4 (1.0); - - printMESA (_Zero); - printMESA (_One); - printMESA (_Two4); - - // pre-increment - reset (); - printMESA (++fZero); - printMESA (++fOne); - printMESA (++iZero); - printMESA (++iOne); - printMESA (fZero); - printMESA (fOne); - printMESA (iZero); - printMESA (iOne); - printMESA (++fTwo4 == _Two4 + 1.0); - printMESA (++iTwo4 == ivec4 (_Two4) + 1); - - // pre-decrement - reset (); - printMESA (--fZero); - printMESA (--fOne); - printMESA (--iZero); - printMESA (--iOne); - printMESA (fZero); - printMESA (fOne); - printMESA (iZero); - printMESA (iOne); - printMESA (--fTwo4 == _Two4 - 1.0); - printMESA (--iTwo4 == ivec4 (_Two4) - 1); - - // post-increment - reset (); - printMESA (fZero++); - printMESA (fOne++); - printMESA (iZero++); - printMESA (iOne++); - printMESA (fZero); - printMESA (fOne); - printMESA (iZero); - printMESA (iOne); - printMESA (fTwo4++ == _Two4); - printMESA (iTwo4++ == ivec4 (_Two4)); - - // post-decrement - reset (); - printMESA (fZero--); - printMESA (fOne--); - printMESA (iZero--); - printMESA (iOne--); - printMESA (fZero); - printMESA (fOne); - printMESA (iZero); - printMESA (iOne); - printMESA (fTwo4-- == _Two4); - printMESA (iTwo4-- == ivec4 (_Two4)); -} - -$output - -0.0 -1.1 -2.1 -2.2 -2.3 -2.4 - -1.0 -2.1 -1 -2 -1.0 -2.1 -1 -2 -true -true - --1.0 -0.1 --1 -0 --1.0 -0.1 --1 -0 -true -true - -0.0 -1.1 -0 -1 -1.0 -2.1 -1 -2 -true -true - -0.0 -1.1 -0 -1 --1.0 -0.1 --1 -0 -true -true - - -$ /* -$ -------------------------------------------------------------------------------------------------- -$ Test arithmetical operators. -$ */ - -$program ARITHMETICAL OPERATOR TEST - -$attrib gl_Vertex -0.0 0.0 0.0 1.0 - -$attrib _Zero -0.0 0.0 0.0 0.0 - -$attrib _One -1.1 0.0 0.0 0.0 - -$attrib _Two4 -2.1 2.2 2.3 2.4 - -$vertex - -$code - -#version 110 - -#extension MESA_shader_debug: require - -attribute float _Zero; -attribute float _One; -attribute vec4 _Two4; - -void main () { - gl_Position = gl_ModelViewMatrix * gl_Vertex; - gl_FrontColor = vec4 (1.0); - - printMESA (_Zero); - printMESA (_One); - printMESA (_Two4); - - int iZero = int (_Zero); - int iOne = int (_One); - ivec4 iTwo4 = ivec4 (_Two4); - - printMESA (-_Zero); - printMESA (-_One); - printMESA (-_Two4); - printMESA (-_Two4.z); - - printMESA (_Zero + 0.0); - printMESA (_One + 0.0); - printMESA (_Two4 + 0.0); - printMESA (_Two4.y + 0.0); - - printMESA (_Zero + _Zero); - printMESA (_Zero + _One); - printMESA (_Zero + _Two4); - printMESA (_One + _Zero); - printMESA (_One + _Two4); - printMESA (_Two4 + _Two4); - - printMESA (_Zero - 0.0); - printMESA (_One - 0.0); - printMESA (_Two4 - 0.0); - printMESA (_Two4.y - 0.0); - - printMESA (_Zero - _Zero); - printMESA (_Zero - _One); - printMESA (_Zero - _Two4); - printMESA (_One - _Zero); - printMESA (_One - _Two4); - printMESA (_Two4 - _Two4); - - printMESA (_Zero * 1.0); - printMESA (_One * 1.0); - printMESA (_Two4 * 1.0); - printMESA (_Two4.x * 1.0); - - printMESA (_Zero * _Zero); - printMESA (_Zero * _One); - printMESA (_Zero * _Two4); - printMESA (_One * _Zero); - printMESA (_One * _One); - printMESA (_One * _Two4); - printMESA (_Two4 * _Two4); - - printMESA (_Zero / 1.0); - printMESA (_One / 1.0); - printMESA (_Two4 / 1.0); - printMESA (_Two4.x / 1.0); - - printMESA (_Zero / _One); - printMESA (_Zero / _Two4); - printMESA (_One / _One); - printMESA (_One / _Two4); - printMESA (_Two4 / _Two4); -} - -$output - -0.0 -1.1 -2.1 -2.2 -2.3 -2.4 - -0.0 --1.1 --2.1 --2.2 --2.3 --2.4 --2.3 - -0.0 -1.1 -2.1 -2.2 -2.3 -2.4 -2.2 - -0.0 -1.1 -2.1 -2.2 -2.3 -2.4 -1.1 -3.2 -3.3 -3.4 -3.5 -4.2 -4.4 -4.6 -4.8 - -0.0 -1.1 -2.1 -2.2 -2.3 -2.4 -2.2 - -0.0 --1.1 --2.1 --2.2 --2.3 --2.4 -1.1 --1.0 --1.1 --1.2 --1.3 -0.0 -0.0 -0.0 -0.0 - -0.0 -1.1 -2.1 -2.2 -2.3 -2.4 -2.1 - -0.0 -0.0 -0.0 -0.0 -0.0 -0.0 -0.0 -1.21 -2.31 -2.42 -2.53 -2.64 -4.41 -4.84 -5.29 -5.76 - -0.0 -1.1 -2.1 -2.2 -2.3 -2.4 -2.1 - -0.0 -0.0 -0.0 -0.0 -0.0 -1.0 -0.52381 -0.5 -0.47826 -0.45833 -1.0 -1.0 -1.0 -1.0 - - -$ /* -$ -------------------------------------------------------------------------------------------------- -$ Test matrix operations. -$ Note: assumes relational operators being correct. -$ */ - -$program MATRIX TEST - -$attrib gl_Vertex -0.0 0.0 0.0 1.0 - -$attrib _Zero -0.0 0.0 0.0 0.0 - -$attrib _One -1.0 1.0 1.0 1.0 - -$attrib _Two -2.0 2.0 2.0 2.0 - -$vertex - -$code - -#version 110 - -#extension MESA_shader_debug: require - -attribute vec4 _Zero; -attribute vec4 _One; -attribute vec4 _Two; - -void main () { - gl_Position = gl_ModelViewMatrix * gl_Vertex; - gl_FrontColor = vec4 (1.0); - - printMESA (_Zero); - printMESA (_One); - printMESA (_Two); - - mat4 Identity = mat4 (_One.x); - - printMESA (Identity == mat4 (1.0, 0.0, 0.0, 0.0, - 0.0, 1.0, 0.0, 0.0, - 0.0, 0.0, 1.0, 0.0, - 0.0, 0.0, 0.0, 1.0)); - printMESA (Identity * _Two == _Two); - - mat4 Matrix = mat4 (1.1, 1.2, 1.3, 1.4, - 2.1, 2.2, 2.3, 2.4, - 3.1, 3.2, 3.3, 3.4, - 4.1, 4.2, 4.3, 4.4); - - printMESA (Matrix[2].y); - printMESA (Matrix[1]); -} - -$output - -0.0 -0.0 -0.0 -0.0 -1.0 -1.0 -1.0 -1.0 -2.0 -2.0 -2.0 -2.0 -true -true -3.2 -2.1 -2.2 -2.3 -2.4 - - -$ /* -$ -------------------------------------------------------------------------------------------------- -$ Test vec4 extension operations. -$ */ - -$program VEC4 EXTENSION OPERATIONS - -$attrib gl_Vertex -0.0 0.0 0.0 1.0 - -$attrib _One -1.1 0.0 0.0 0.0 - -$attrib _Two4 -2.1 2.2 2.3 2.4 - -$attrib _Three4 -3.1 3.2 3.3 3.4 - -$vertex - -$code - -#version 110 - -#extension MESA_shader_debug: require - -attribute float _One; -attribute vec4 _Two4; -attribute vec4 _Three4; - -void main () { - gl_Position = gl_ModelViewMatrix * gl_Vertex; - gl_FrontColor = vec4 (1.0); - - printMESA (_One); - printMESA (_Two4); - printMESA (_Three4); - - printMESA (vec4 (_One)); - - printMESA (_Two4 + _Three4); - printMESA (_Two4 - _Three4); - printMESA (_Two4 * _Three4); - printMESA (_Two4 / _Three4); - - printMESA (_Two4 + _One); - printMESA (_Two4 - _One); - printMESA (_Two4 * _One); - printMESA (_Two4 / _One); - - printMESA (_One + _Two4); - printMESA (_One - _Two4); - printMESA (_One * _Two4); - printMESA (_One / _Two4); - - printMESA (-_Three4); - - printMESA (dot (_Two4.xyz, _Three4.xyz)); - printMESA (dot (_Two4, _Three4)); - - printMESA (length (_Two4.xyz)); - printMESA (length (_Three4)); - - printMESA (normalize (_Two4.xyz)); - printMESA (normalize (_Three4)); - - vec4 tmp = _Two4; - printMESA (tmp); - - printMESA (_Two4 == _Three4); - printMESA (_Two4 != _Three4); - printMESA (_Two4 == _Two4); - printMESA (_Three4 != _Three4); - printMESA (_Two4 != vec4 (_Two4.xyz, 999.0)); - printMESA (_Two4 != vec4 (999.0, _Two4.yzw)); -} - -$output - -1.1 -2.1 -2.2 -2.3 -2.4 -3.1 -3.2 -3.3 -3.4 - -1.1 -1.1 -1.1 -1.1 - -5.2 -5.4 -5.6 -5.8 --1.0 --1.0 --1.0 --1.0 -6.51 -7.04 -7.59 -8.16 -0.677419 -0.6875 -0.69697 -0.705882 - -3.2 -3.3 -3.4 -3.5 -1.0 -1.1 -1.2 -1.3 -2.31 -2.42 -2.53 -2.64 -1.909091 -2.0 -2.090909 -2.181818 - -3.2 -3.3 -3.4 -3.5 --1.0 --1.1 --1.2 --1.3 -2.31 -2.42 -2.53 -2.64 -0.52381 -0.5 -0.478261 -0.458333 - --3.1 --3.2 --3.3 --3.4 - -21.14 -29.3 - -3.813135 -6.503845 - -0.550728 -0.576953 -0.603178 -0.476641 -0.492017 -0.507392 -0.522768 - -2.1 -2.2 -2.3 -2.4 - -false -true -true -false -true -true diff --git a/progs/slang/framework.c b/progs/slang/framework.c deleted file mode 100644 index 692cef9c8c..0000000000 --- a/progs/slang/framework.c +++ /dev/null @@ -1,145 +0,0 @@ -#include "framework.h" - -/* - * GL_ARB_multitexture - */ -#ifndef GL_ARB_multitexture -PFNGLCLIENTACTIVETEXTUREARBPROC glClientActiveTextureARB; -PFNGLMULTITEXCOORD4FVARBPROC glMultiTexCoord4fvARB; -#endif - -/* - * GL_ARB_shader_objects - */ -PFNGLDELETEOBJECTARBPROC glDeleteObjectARB; -PFNGLGETHANDLEARBPROC glGetHandleARB; -PFNGLDETACHOBJECTARBPROC glDetachObjectARB; -PFNGLCREATESHADEROBJECTARBPROC glCreateShaderObjectARB; -PFNGLSHADERSOURCEARBPROC glShaderSourceARB; -PFNGLCOMPILESHADERARBPROC glCompileShaderARB; -PFNGLCREATEPROGRAMOBJECTARBPROC glCreateProgramObjectARB; -PFNGLATTACHOBJECTARBPROC glAttachObjectARB; -PFNGLLINKPROGRAMARBPROC glLinkProgramARB; -PFNGLUSEPROGRAMOBJECTARBPROC glUseProgramObjectARB; -PFNGLGETOBJECTPARAMETERIVARBPROC glGetObjectParameterivARB; -PFNGLGETINFOLOGARBPROC glGetInfoLogARB; -PFNGLGETUNIFORMLOCATIONARBPROC glGetUniformLocationARB; - -/* - * GL_ARB_vertex_shader - */ -PFNGLVERTEXATTRIB4FVARBPROC glVertexAttrib4fvARB; -PFNGLVERTEXATTRIBPOINTERARBPROC glVertexAttribPointerARB; -PFNGLENABLEVERTEXATTRIBARRAYARBPROC glEnableVertexAttribArrayARB; -PFNGLDISABLEVERTEXATTRIBARRAYARBPROC glDisableVertexAttribArrayARB; -PFNGLBINDATTRIBLOCATIONARBPROC glBindAttribLocationARB; -PFNGLGETATTRIBLOCATIONARBPROC glGetAttribLocationARB; - -/* - * GL_EXT_fog_coord - */ -PFNGLFOGCOORDFVEXTPROC glFogCoordfvEXT; -PFNGLFOGCOORDPOINTEREXTPROC glFogCoordPointerEXT; - -/* - * GL_EXT_secondary_color - */ -PFNGLSECONDARYCOLOR3FVEXTPROC glSecondaryColor3fvEXT; -PFNGLSECONDARYCOLORPOINTEREXTPROC glSecondaryColorPointerEXT; - -static void Display (void) -{ - glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - RenderScene (); - glutSwapBuffers (); -} - -static void Idle (void) -{ - glutPostRedisplay (); -} - -void InitFramework (int *argc, char *argv[]) -{ - glutInit (argc, argv); - glutInitWindowPosition (0, 0); - glutInitWindowSize (200, 200); - glutInitDisplayMode (GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); - glutCreateWindow (argv[0]); - -#ifndef GL_ARB_multitexture - GETPROCADDR(glClientActiveTextureARB, PFNGLCLIENTACTIVETEXTUREARBPROC); - GETPROCADDR(glMultiTexCoord4fvARB, PFNGLMULTITEXCOORD4FVARBPROC); -#endif - - GETPROCADDR(glDeleteObjectARB, PFNGLDELETEOBJECTARBPROC); - GETPROCADDR(glGetHandleARB, PFNGLGETHANDLEARBPROC); - GETPROCADDR(glDetachObjectARB, PFNGLDETACHOBJECTARBPROC); - GETPROCADDR(glCreateShaderObjectARB, PFNGLCREATESHADEROBJECTARBPROC); - GETPROCADDR(glShaderSourceARB, PFNGLSHADERSOURCEARBPROC); - GETPROCADDR(glCompileShaderARB, PFNGLCOMPILESHADERARBPROC); - GETPROCADDR(glCreateProgramObjectARB, PFNGLCREATEPROGRAMOBJECTARBPROC); - GETPROCADDR(glAttachObjectARB, PFNGLATTACHOBJECTARBPROC); - GETPROCADDR(glLinkProgramARB, PFNGLLINKPROGRAMARBPROC); - GETPROCADDR(glUseProgramObjectARB, PFNGLUSEPROGRAMOBJECTARBPROC); - GETPROCADDR(glGetObjectParameterivARB, PFNGLGETOBJECTPARAMETERIVARBPROC); - GETPROCADDR(glGetInfoLogARB, PFNGLGETINFOLOGARBPROC); - GETPROCADDR(glGetUniformLocationARB, PFNGLGETUNIFORMLOCATIONARBPROC); - - GETPROCADDR(glVertexAttrib4fvARB, PFNGLVERTEXATTRIB4FVARBPROC); - GETPROCADDR(glVertexAttribPointerARB, PFNGLVERTEXATTRIBPOINTERARBPROC); - GETPROCADDR(glEnableVertexAttribArrayARB, PFNGLENABLEVERTEXATTRIBARRAYARBPROC); - GETPROCADDR(glDisableVertexAttribArrayARB, PFNGLDISABLEVERTEXATTRIBARRAYARBPROC); - GETPROCADDR(glBindAttribLocationARB, PFNGLBINDATTRIBLOCATIONARBPROC); - GETPROCADDR(glGetAttribLocationARB, PFNGLGETATTRIBLOCATIONARBPROC); - - GETPROCADDR(glFogCoordfvEXT, PFNGLFOGCOORDFVEXTPROC); - GETPROCADDR(glFogCoordPointerEXT, PFNGLFOGCOORDPOINTEREXTPROC); - - GETPROCADDR(glSecondaryColor3fvEXT, PFNGLSECONDARYCOLOR3FVEXTPROC); - GETPROCADDR(glSecondaryColorPointerEXT, PFNGLSECONDARYCOLORPOINTEREXTPROC); - - printf ("VENDOR: %s\n", glGetString (GL_VENDOR)); - printf ("RENDERER: %s\n", glGetString (GL_RENDERER)); - - InitScene (); - - glutDisplayFunc (Display); - glutIdleFunc (Idle); - glutMainLoop (); -} - -GLboolean CheckObjectStatus (GLhandleARB handle) -{ - GLint type, status, length; - GLcharARB *infolog; - - glGetObjectParameterivARB (handle, GL_OBJECT_TYPE_ARB, &type); - if (type == GL_SHADER_OBJECT_ARB) - glGetObjectParameterivARB (handle, GL_OBJECT_COMPILE_STATUS_ARB, &status); - else if (type == GL_PROGRAM_OBJECT_ARB) - glGetObjectParameterivARB (handle, GL_OBJECT_LINK_STATUS_ARB, &status); - else { - assert (0); - return GL_FALSE; - } - - if (status) - return GL_TRUE; - - printf ("\n%s FAILED. INFO LOG FOLLOWS:\n", - type == GL_SHADER_OBJECT_ARB ? "SHADER COMPILE" : "PROGRAM LINK"); - - glGetObjectParameterivARB (handle, GL_OBJECT_INFO_LOG_LENGTH_ARB, &length); - infolog = (GLcharARB *) (malloc (length)); - if (infolog != NULL) { - glGetInfoLogARB (handle, length, NULL, infolog); - printf ("%s", infolog); - free (infolog); - } - - printf ("\n"); - - return GL_FALSE; -} - diff --git a/progs/slang/framework.h b/progs/slang/framework.h deleted file mode 100644 index e023f7da8a..0000000000 --- a/progs/slang/framework.h +++ /dev/null @@ -1,82 +0,0 @@ -#ifndef _FRAMEWORK_H_ -#define _FRAMEWORK_H_ - -#ifdef WIN32 -#define WIN32_LEAN_AND_MEAN -#include <windows.h> -#endif - -#include <stdlib.h> -#include <stdio.h> -#include <string.h> -#include <assert.h> -#include <math.h> -#include <GL/gl.h> -#include <GL/glut.h> -#include <GL/glext.h> - -#ifdef WIN32 -#define GETPROCADDRESS(x) wglGetProcAddress (x) -#else -#define GETPROCADDRESS(x) glutGetProcAddress (x) -#endif - -#define GETPROCADDR(x,T) do { x = (T) (GETPROCADDRESS(#x)); assert (x != NULL); } while (0) - -/* - * GL_ARB_multitexture - */ -#ifndef GL_ARB_multitexture -extern PFNGLCLIENTACTIVETEXTUREARBPROC glClientActiveTextureARB; -extern PFNGLMULTITEXCOORD4FVARBPROC glMultiTexCoord4fvARB; -#endif - -/* - * GL_ARB_shader_objects - */ -extern PFNGLDELETEOBJECTARBPROC glDeleteObjectARB; -extern PFNGLGETHANDLEARBPROC glGetHandleARB; -extern PFNGLDETACHOBJECTARBPROC glDetachObjectARB; -extern PFNGLCREATESHADEROBJECTARBPROC glCreateShaderObjectARB; -extern PFNGLSHADERSOURCEARBPROC glShaderSourceARB; -extern PFNGLCOMPILESHADERARBPROC glCompileShaderARB; -extern PFNGLCREATEPROGRAMOBJECTARBPROC glCreateProgramObjectARB; -extern PFNGLATTACHOBJECTARBPROC glAttachObjectARB; -extern PFNGLLINKPROGRAMARBPROC glLinkProgramARB; -extern PFNGLUSEPROGRAMOBJECTARBPROC glUseProgramObjectARB; -extern PFNGLGETOBJECTPARAMETERIVARBPROC glGetObjectParameterivARB; -extern PFNGLGETINFOLOGARBPROC glGetInfoLogARB; -extern PFNGLGETUNIFORMLOCATIONARBPROC glGetUniformLocationARB; -/*static PFNGLUNIFORM4FVARBPROC glUniform4fvARB = NULL;*/ - -/* - * GL_ARB_vertex_shader - */ -extern PFNGLVERTEXATTRIB4FVARBPROC glVertexAttrib4fvARB; -extern PFNGLVERTEXATTRIBPOINTERARBPROC glVertexAttribPointerARB; -extern PFNGLENABLEVERTEXATTRIBARRAYARBPROC glEnableVertexAttribArrayARB; -extern PFNGLDISABLEVERTEXATTRIBARRAYARBPROC glDisableVertexAttribArrayARB; -extern PFNGLBINDATTRIBLOCATIONARBPROC glBindAttribLocationARB; -extern PFNGLGETATTRIBLOCATIONARBPROC glGetAttribLocationARB; - -/* - * GL_EXT_fog_coord - */ -extern PFNGLFOGCOORDFVEXTPROC glFogCoordfvEXT; -extern PFNGLFOGCOORDPOINTEREXTPROC glFogCoordPointerEXT; - -/* - * GL_EXT_secondary_color - */ -extern PFNGLSECONDARYCOLOR3FVEXTPROC glSecondaryColor3fvEXT; -extern PFNGLSECONDARYCOLORPOINTEREXTPROC glSecondaryColorPointerEXT; - -extern void InitFramework (int *argc, char *argv[]); - -extern void InitScene (void); -extern void RenderScene (void); - -extern GLboolean CheckObjectStatus (GLhandleARB); - -#endif - diff --git a/progs/slang/sotest.c b/progs/slang/sotest.c deleted file mode 100644 index 4bd3bc23c9..0000000000 --- a/progs/slang/sotest.c +++ /dev/null @@ -1,439 +0,0 @@ -/* - * GL_ARB_shader_objects & GL_ARB_vertex_shader interface test application. - * Neither compiler nor executor is being tested here, although some simple shader - * compilation tests are performed. - * - * Perfectly valid behaviour produces output that does not have a line - * beginning with three stars (***). - * - * Author: Michal Krol - */ - -#include "framework.h" - -enum TEST_TYPE -{ - TT_GETERROR_NOERROR, - TT_GETERROR_INVALIDVALUE, - TT_GETERROR_INVALIDOPERATION, - TT_PARAM1_ZERO, - TT_PARAM1_NONZERO -}; - -static enum TEST_TYPE current_test; - -static void begintest (enum TEST_TYPE type, const char *name) -{ - current_test = type; - printf ("\n BEGIN TEST: %s\n", name); - while (glGetError () != GL_NO_ERROR) - ; -} - -static void endtest1 (GLuint param1) -{ - const char *msg = NULL; - - switch (current_test) - { - case TT_GETERROR_NOERROR: - if (glGetError () != GL_NO_ERROR) - msg = "glGetError () does not return GL_NO_ERROR"; - break; - case TT_GETERROR_INVALIDVALUE: - if (glGetError () != GL_INVALID_VALUE) - msg = "glGetError () does not return GL_INVALID_VALUE"; - break; - case TT_GETERROR_INVALIDOPERATION: - if (glGetError () != GL_INVALID_OPERATION) - msg = "glGetError () does not return GL_INVALID_OPERATION"; - break; - case TT_PARAM1_ZERO: - if (param1) - msg = "The parameter is not zero"; - break; - case TT_PARAM1_NONZERO: - if (!param1) - msg = "The parameter is not non-zero"; - break; - default: - assert (0); - } - - if (msg == NULL) - printf (" OK\n"); - else - printf ("*** %s\n", msg); - - while (glGetError () != GL_NO_ERROR) - ; -} - -static void endtest () -{ - endtest1 (0); -} - -static GLhandleARB vert = 0; -static GLhandleARB frag = 0; -static GLhandleARB prog = 0; - -static GLhandleARB find_invalid_handle () -{ - GLhandleARB handle; - - for (handle = 1; handle < 16; handle++) - if (handle != vert && handle != frag && handle != prog) - return handle; - assert (0); - return 0; -} - -static const char *invsynvertsrc = - "void main () {\n" - " gl_Position = gl_ModelViewMatrix ! gl_Vertex;\n" /* unexpected token */ - "}\n" -; - -static const char *invsemvertsrc = - "void main () {\n" - " gl_Position = gl_ModelviewMatrix * gl_Vertex;\n" /* undeclared identifier */ - "}\n" -; - -static const char *uniforms = - "uniform vec4 CommonUniform;\n" -; - -static const char *validvertsrc = - "uniform vec4 VertexUniform;\n" - "attribute vec4 FirstAttrib;\n" - "attribute vec4 SecondAttrib;\n" - "void main () {\n" - " gl_Position = gl_ModelViewMatrix * gl_Vertex + CommonUniform + VertexUniform\n" - " + FirstAttrib + SecondAttrib;\n" - "}\n" -; - -static const char *invsynfragsrc = - "void main () {\n" - " gl_FragColor = gl_Color\n" /* missing ; */ - "}\n" -; - -static const char *invsemfragsrc = - "void main () {\n" - " gl_FragColor = gl_FrontColor;\n" /* gl_FrontColor only in vertex shader */ - "}\n" -; - -static const char *validfragsrc = - "uniform vec4 FragmentUniform;\n" - "void main () {\n" - " gl_FragColor = gl_Color + CommonUniform + FragmentUniform;\n" - "}\n" -; - -void InitScene (void) -{ - GLint params[1]; - const char *tab[2]; - - /* - * GL should silently ignore calls that delete object 0. - */ - begintest (TT_GETERROR_NOERROR, "glDeleteObject(0)"); - glDeleteObjectARB (0); - endtest (); - - /* - * GL generates an error on invalid object handle. - */ - begintest (TT_GETERROR_INVALIDVALUE, "Pass invalid non-zero object handle"); - glDeleteObjectARB (find_invalid_handle ()); - endtest (); - glUseProgramObjectARB (find_invalid_handle ()); - endtest (); - - /* - * Create object. GL should return unique non-zero values. - */ - begintest (TT_PARAM1_NONZERO, "Create object"); - vert = glCreateShaderObjectARB (GL_VERTEX_SHADER_ARB); - endtest1 (vert); - frag = glCreateShaderObjectARB (GL_FRAGMENT_SHADER_ARB); - endtest1 (frag); - prog = glCreateProgramObjectARB (); - endtest1 (prog); - endtest1 (vert != frag && frag != prog && prog != vert); - - /* - * Link empty program. - */ - begintest (TT_PARAM1_NONZERO, "Link empty program"); - glLinkProgramARB (prog); - endtest1 (CheckObjectStatus (prog)); - - /* - * Use empty program object. Empty program objects are valid. - */ - begintest (TT_GETERROR_NOERROR, "Use empty program object"); - glUseProgramObjectARB (prog); - endtest (); - - /* - * Attach invalid object handles. Program object 0 should not be accepted. - */ - begintest (TT_GETERROR_INVALIDVALUE, "Attach invalid object handle"); - glAttachObjectARB (0, find_invalid_handle ()); - endtest (); - glAttachObjectARB (0, frag); - endtest (); - glAttachObjectARB (find_invalid_handle (), find_invalid_handle ()); - endtest (); - glAttachObjectARB (find_invalid_handle (), frag); - endtest (); - glAttachObjectARB (prog, find_invalid_handle ()); - endtest (); - - /* - * Attach valid object handles with wrong semantics. - */ - begintest (TT_GETERROR_INVALIDOPERATION, "Attach object badly"); - glAttachObjectARB (vert, frag); - endtest (); - glAttachObjectARB (vert, prog); - endtest (); - glAttachObjectARB (prog, prog); - endtest (); - - /* - * Detach non-attached object. - */ - begintest (TT_GETERROR_INVALIDOPERATION, "Detach non-attached object"); - glDetachObjectARB (prog, vert); - endtest (); - glDetachObjectARB (prog, frag); - endtest (); - - /* - * Attach shader. - */ - begintest (TT_GETERROR_NOERROR, "Attach shader to program object"); - glAttachObjectARB (prog, vert); - endtest (); - glAttachObjectARB (prog, frag); - endtest (); - - /* - * Attach object twice. - */ - begintest (TT_GETERROR_INVALIDOPERATION, "Attach object twice"); - glAttachObjectARB (prog, vert); - endtest (); - glAttachObjectARB (prog, frag); - endtest (); - - /* - * Detach attached object. - */ - begintest (TT_GETERROR_NOERROR, "Detach attached object"); - glDetachObjectARB (prog, vert); - endtest (); - glDetachObjectARB (prog, frag); - endtest (); - - /* - * Attach shader again. - */ - begintest (TT_GETERROR_NOERROR, "Attach shader again"); - glAttachObjectARB (prog, vert); - endtest (); - glAttachObjectARB (prog, frag); - endtest (); - - /* - * Delete attached object. - */ - begintest (TT_GETERROR_NOERROR, "Delete attached object"); - glDeleteObjectARB (vert); - endtest (); - glDeleteObjectARB (frag); - endtest (); - - /* - * Query delete status. It should return TRUE. Object handles are still valid - * as they are referenced by program object container. - */ - begintest (TT_PARAM1_NONZERO, "Query delete status"); - glGetObjectParameterivARB (vert, GL_OBJECT_DELETE_STATUS_ARB, params); - endtest1 (params[0]); - glGetObjectParameterivARB (frag, GL_OBJECT_DELETE_STATUS_ARB, params); - endtest1 (params[0]); - - /* - * Delete already deleted attached object. The behaviour is undefined, but we - * check for no errors. The object still exists, so the handle value is okay. - * In other words, these calls should be silently ignored by GL. - */ - begintest (TT_GETERROR_NOERROR, "Delete already deleted attached object"); - glDeleteObjectARB (vert); - endtest (); - glDeleteObjectARB (frag); - endtest (); - - /* - * Compile shader source with syntax error. - */ - begintest (TT_PARAM1_ZERO, "Compile shader source with syntax error"); - glShaderSourceARB (vert, 1, &invsynvertsrc, NULL); - glCompileShaderARB (vert); - endtest1 (CheckObjectStatus (vert)); - glShaderSourceARB (frag, 1, &invsynfragsrc, NULL); - glCompileShaderARB (frag); - endtest1 (CheckObjectStatus (frag)); - - /* - * Compile shader source with semantic error. - */ - begintest (TT_PARAM1_ZERO, "Compile shader source with semantic error"); - glShaderSourceARB (vert, 1, &invsemvertsrc, NULL); - glCompileShaderARB (vert); - endtest1 (CheckObjectStatus (vert)); - glShaderSourceARB (frag, 1, &invsemfragsrc, NULL); - glCompileShaderARB (frag); - endtest1 (CheckObjectStatus (frag)); - - /* - * Link ill-formed vertex-fragment program. - */ - begintest (TT_PARAM1_ZERO, "Link ill-formed vertex-fragment program"); - glLinkProgramARB (prog); - endtest1 (CheckObjectStatus (prog)); - - /* - * Use badly linked program object. - */ - begintest (TT_GETERROR_INVALIDOPERATION, "Use badly linked program object"); - glUseProgramObjectARB (prog); - endtest (); - - /* - * Compile well-formed shader source. Check if multi-string sources can be handled. - */ - begintest (TT_PARAM1_NONZERO, "Compile well-formed shader source"); - tab[0] = uniforms; - tab[1] = validvertsrc; - glShaderSourceARB (vert, 2, tab, NULL); - glCompileShaderARB (vert); - endtest1 (CheckObjectStatus (vert)); - tab[0] = uniforms; - tab[1] = validfragsrc; - glShaderSourceARB (frag, 2, tab, NULL); - glCompileShaderARB (frag); - endtest1 (CheckObjectStatus (frag)); - - /* - * Link vertex-fragment program. - */ - begintest (TT_PARAM1_NONZERO, "Link vertex-fragment program"); - glLinkProgramARB (prog); - endtest1 (CheckObjectStatus (prog)); - - /* - * Use valid linked program object. - */ - begintest (TT_GETERROR_NOERROR, "Use linked program object"); - glUseProgramObjectARB (prog); - endtest (); - - /* - * Get current program. - */ - begintest (TT_PARAM1_NONZERO, "Get current program"); - endtest1 (glGetHandleARB (GL_PROGRAM_OBJECT_ARB) == prog); - - /* - * Use 0 program object. - */ - begintest (TT_GETERROR_NOERROR, "Use 0 program object"); - glUseProgramObjectARB (0); - endtest (); - - /* - * Query uniform location. Uniforms with gl_ prefix cannot be queried. - */ - begintest (TT_PARAM1_NONZERO, "Query uniform location"); - endtest1 (glGetUniformLocationARB (prog, "gl_ModelViewMatrix") == -1); - endtest1 (glGetUniformLocationARB (prog, "UniformThatDoesNotExist") == -1); - endtest1 (glGetUniformLocationARB (prog, "") == -1); - endtest1 (glGetUniformLocationARB (prog, "CommonUniform") != -1); - endtest1 (glGetUniformLocationARB (prog, "VertexUniform") != -1); - endtest1 (glGetUniformLocationARB (prog, "FragmentUniform") != -1); - - /* - * Query attrib location. Attribs with gl_ prefix cannot be queried. - * When gl_Vertex is used, none of the generic attribs can have index 0. - */ - begintest (TT_PARAM1_NONZERO, "Query attrib location"); - endtest1 (glGetAttribLocationARB (prog, "gl_Vertex") == -1); - endtest1 (glGetAttribLocationARB (prog, "AttribThatDoesNotExist") == -1); - endtest1 (glGetAttribLocationARB (prog, "") == -1); - endtest1 (glGetAttribLocationARB (prog, "FirstAttrib") > 0); - endtest1 (glGetAttribLocationARB (prog, "SecondAttrib") > 0); - - /* - * Bind attrib locations, link and check if locations are correct. - */ - begintest (TT_PARAM1_NONZERO, "Bind attrib location #1"); - glBindAttribLocationARB (prog, 1, "FirstAttrib"); - glBindAttribLocationARB (prog, 2, "SecondAttrib"); - glLinkProgramARB (prog); - endtest1 (CheckObjectStatus (prog)); - endtest1 (glGetAttribLocationARB (prog, "FirstAttrib") == 1); - endtest1 (glGetAttribLocationARB (prog, "SecondAttrib") == 2); - - /* - * Bind attrib locations in different order. Link and check if locations are correct. - */ - begintest (TT_PARAM1_NONZERO, "Bind attrib location #2"); - glBindAttribLocationARB (prog, 1, "SecondAttrib"); - glBindAttribLocationARB (prog, 2, "FirstAttrib"); - glLinkProgramARB (prog); - endtest1 (CheckObjectStatus (prog)); - endtest1 (glGetAttribLocationARB (prog, "SecondAttrib") == 1); - endtest1 (glGetAttribLocationARB (prog, "FirstAttrib") == 2); - - /* - * Detach deleted object. - */ - begintest (TT_GETERROR_NOERROR, "Detach deleted object"); - glDetachObjectARB (prog, vert); - endtest (); - glDetachObjectARB (prog, frag); - endtest (); - - /* - * Delete deleted detached object. - */ - begintest (TT_GETERROR_INVALIDVALUE, "Delete deleted detached object"); - glDeleteObjectARB (vert); - endtest (); - glDeleteObjectARB (frag); - endtest (); - - exit (0); -} - -void RenderScene (void) -{ - /* never reached */ - assert (0); -} - -int main (int argc, char *argv[]) -{ - InitFramework (&argc, argv); - return 0; -} - diff --git a/progs/slang/vstest.c b/progs/slang/vstest.c deleted file mode 100644 index 33c6f09dc5..0000000000 --- a/progs/slang/vstest.c +++ /dev/null @@ -1,346 +0,0 @@ -/* - * GL_ARB_vertex_shader test application. Feeds a vertex shader with attributes that - * that have magic values and check if the values received by the shader are the same. - * - * Requires specific support on the GL implementation side. A special function printMESA() - * must be supported in the language that prints variable's current value of generic type - * to the appropriate shader's info log, and optionally to the screen. - * - * Perfectly valid behaviour produces output that does not have a line - * beginning with three stars (***). - * - * Author: Michal Krol - */ - -#include "framework.h" - -#define EPSILON 0.0001f - -static GLhandleARB vert = 0; -static GLhandleARB prog = 0; - -enum SUBMIT_MODE -{ - SM_IM, - SM_VA, - SM_IM_DL, - SM_VA_DL, - SM_MAX -}; - -static enum SUBMIT_MODE submit_method = SM_IM; - -#define C 0 -#define S 1 -#define N 2 -#define V 3 -#define T 4 -#define F 5 -#define A 6 - -struct ATTRIB_DATA -{ - const char *name; - GLuint dispatch; - GLint index; - GLint bind; - GLuint size; - GLfloat data[4]; -}; - -static struct ATTRIB_DATA attribs[] = { - { "gl_Color", C, -1, -1, 4, { 4.2f, 0.56f, -2.1f, 0.29f } }, - { "gl_SecondaryColor", S, -1, -1, 4, { 0.38f, 2.0f, 0.99f, 1.0f } }, - { "gl_Normal", N, -1, -1, 3, { 54.0f, 77.0f, 1.15f, 0.0f } }, - { "gl_MultiTexCoord0", T, 0, -1, 4, { 11.1f, 11.2f, 11.3f, 11.4f } }, - { "gl_MultiTexCoord1", T, 1, -1, 4, { 22.1f, 22.2f, 22.3f, 22.4f } }, - { "gl_MultiTexCoord2", T, 2, -1, 4, { 33.1f, 33.2f, 33.3f, 33.4f } }, - { "gl_MultiTexCoord3", T, 3, -1, 4, { 44.1f, 44.2f, 44.3f, 44.4f } }, - { "gl_MultiTexCoord4", T, 4, -1, 4, { 55.1f, 55.2f, 55.3f, 55.4f } }, - { "gl_MultiTexCoord5", T, 5, -1, 4, { 66.1f, 66.2f, 66.3f, 66.4f } }, - { "gl_MultiTexCoord6", T, 6, -1, 4, { 77.1f, 77.2f, 77.3f, 77.4f } }, - { "gl_MultiTexCoord7", T, 7, -1, 4, { 88.1f, 88.2f, 88.3f, 88.4f } }, - { "gl_FogCoord", F, -1, -1, 1, { 0.63f, 0.0f, 0.0f, 0.0f } }, - { "Attribute1", A, 1, 1, 4, { 1.11f, 1.22f, 1.33f, 1.44f } }, - { "Attribute2", A, 2, 2, 4, { 2.11f, 2.22f, 2.33f, 2.44f } }, - { "Attribute3", A, 3, 3, 4, { 3.11f, 3.22f, 3.33f, 3.44f } }, - { "Attribute4", A, 4, 4, 1, { 4.11f, 0.0f, 0.0f, 0.0f } }, - { "Attribute5", A, 5, 5, 2, { 5.11f, 5.22f, 0.0f, 0.0f } }, - { "Attribute6", A, 6, 6, 3, { 6.11f, 6.22f, 6.33f, 0.0f } }, - { "Attribute7", A, 7, 7, 2, { 7.11f, 7.22f, 0.0f, 0.0f } }, - { "Attribute7", A, 8, -1, 2, { 8.11f, 8.22f, 0.0f, 0.0f } }, - { "Attribute9", A, 9, 9, 3, { 9.11f, 9.22f, 9.33f, 0.0f } }, - { "Attribute9", A, 10, -1, 3, { 10.11f, 10.22f, 10.33f, 0.0f } }, - { "Attribute9", A, 11, -1, 3, { 11.11f, 11.22f, 11.33f, 0.0f } }, - { "Attribute12", A, 12, 12, 4, { 12.11f, 12.22f, 12.33f, 12.44f } }, - { "Attribute12", A, 13, -1, 4, { 13.11f, 13.22f, 13.33f, 13.44f } }, - { "Attribute12", A, 14, -1, 4, { 14.11f, 14.22f, 14.33f, 14.44f } }, - { "Attribute12", A, 15, -1, 4, { 15.11f, 15.22f, 15.33f, 15.44f } }, - { "gl_Vertex", V, 16, -1, 4, { 0.25f, -0.14f, 0.01f, 1.0f } } -}; - -static void im_render () -{ - GLint i; - - glBegin (GL_POINTS); - for (i = 0; i < sizeof (attribs) / sizeof (*attribs); i++) { - struct ATTRIB_DATA *att = &attribs[i]; - switch (att->dispatch) - { - case C: - glColor4fv (att->data); - break; - case S: - glSecondaryColor3fvEXT (att->data); - break; - case N: - glNormal3fv (att->data); - break; - case V: - glVertex4fv (att->data); - break; - case T: - assert (att->index >= 0 && att->index < 8); - glMultiTexCoord4fvARB (GL_TEXTURE0_ARB + att->index, att->data); - break; - case F: - glFogCoordfvEXT (att->data); - break; - case A: - assert (att->index > 0 && att->index < 16); - glVertexAttrib4fvARB (att->index, att->data); - break; - default: - assert (0); - } - } - glEnd (); -} - -static void va_render () -{ - GLint i; - - for (i = 0; i < sizeof (attribs) / sizeof (*attribs); i++) { - struct ATTRIB_DATA *att = &attribs[i]; - switch (att->dispatch) - { - case C: - glColorPointer (4, GL_FLOAT, 0, att->data); - glEnableClientState (GL_COLOR_ARRAY); - break; - case S: - glSecondaryColorPointerEXT (4, GL_FLOAT, 0, att->data); - glEnableClientState (GL_SECONDARY_COLOR_ARRAY_EXT); - break; - case N: - glNormalPointer (GL_FLOAT, 0, att->data); - glEnableClientState (GL_NORMAL_ARRAY); - break; - case V: - glVertexPointer (4, GL_FLOAT, 0, att->data); - glEnableClientState (GL_VERTEX_ARRAY); - break; - case T: - assert (att->index >= 0 && att->index < 8); - glClientActiveTextureARB (GL_TEXTURE0_ARB + att->index); - glTexCoordPointer (4, GL_FLOAT, 0, att->data); - glEnableClientState (GL_TEXTURE_COORD_ARRAY); - break; - case F: - glFogCoordPointerEXT (GL_FLOAT, 0, att->data); - glEnableClientState (GL_FOG_COORDINATE_ARRAY_EXT); - break; - case A: - assert (att->index > 0 && att->index < 16); - glVertexAttribPointerARB (att->index, 4, GL_FLOAT, GL_FALSE, 0, att->data); - glEnableVertexAttribArrayARB (att->index); - break; - default: - assert (0); - } - } - - glDrawArrays (GL_POINTS, 0, 1); - - for (i = 0; i < sizeof (attribs) / sizeof (*attribs); i++) { - struct ATTRIB_DATA *att = &attribs[i]; - switch (att->dispatch) - { - case C: - glDisableClientState (GL_COLOR_ARRAY); - break; - case S: - glDisableClientState (GL_SECONDARY_COLOR_ARRAY_EXT); - break; - case N: - glDisableClientState (GL_NORMAL_ARRAY); - break; - case V: - glDisableClientState (GL_VERTEX_ARRAY); - break; - case T: - glClientActiveTextureARB (GL_TEXTURE0_ARB + att->index); - glDisableClientState (GL_TEXTURE_COORD_ARRAY); - break; - case F: - glDisableClientState (GL_FOG_COORDINATE_ARRAY_EXT); - break; - case A: - glDisableVertexAttribArrayARB (att->index); - break; - default: - assert (0); - } - } -} - -static void dl_start () -{ - glNewList (GL_COMPILE, 1); -} - -static void dl_end () -{ - glEndList (); - glCallList (1); -} - -static void load_test_file (const char *filename) -{ - FILE *f; - GLint size; - char *code; - GLint i; - - f = fopen (filename, "r"); - if (f == NULL) - return; - - fseek (f, 0, SEEK_END); - size = ftell (f); - - if (size == -1) { - fclose (f); - return; - } - - fseek (f, 0, SEEK_SET); - - code = (char *) (malloc (size)); - if (code == NULL) { - fclose (f); - return; - } - size = fread (code, 1, size, f); - fclose (f); - - glShaderSourceARB (vert, 1, (const GLcharARB **) (&code), &size); - glCompileShaderARB (vert); - if (!CheckObjectStatus (vert)) - exit (0); - - for (i = 0; i < sizeof (attribs) / sizeof (*attribs); i++) - if (attribs[i].dispatch == A && attribs[i].bind != -1) - glBindAttribLocationARB (prog, attribs[i].bind, attribs[i].name); -} - -void InitScene (void) -{ - prog = glCreateProgramObjectARB (); - vert = glCreateShaderObjectARB (GL_VERTEX_SHADER_ARB); - glAttachObjectARB (prog, vert); - glDeleteObjectARB (vert); - load_test_file ("vstest.txt"); - glLinkProgramARB (prog); - if (!CheckObjectStatus (prog)) - exit (0); - glUseProgramObjectARB (prog); -} - -void RenderScene (void) -{ - GLint info_length, length; - char output[65000], *p; - GLint i; - - if (submit_method == SM_MAX) - exit (0); - - /* - * Get the current size of the info log. Any text output produced by executed - * shader will be appended to the end of log. - */ - glGetObjectParameterivARB (vert, GL_OBJECT_INFO_LOG_LENGTH_ARB, &info_length); - - switch (submit_method) - { - case SM_IM: - printf ("\n--- TESTING IMMEDIATE MODE\n"); - im_render (); - break; - case SM_VA: - printf ("\n--- TESTING VERTEX ARRAY MODE\n"); - va_render (); - break; - case SM_IM_DL: - printf ("\n--- TESTING IMMEDIATE + DISPLAY LIST MODE\n"); - dl_start (); - im_render (); - dl_end (); - break; - case SM_VA_DL: - printf ("\n--- TESTING VERTEX ARRAY + DISPLAY LIST MODE\n"); - dl_start (); - va_render (); - dl_end (); - break; - default: - assert (0); - } - - glFlush (); - - /* - * Get the info log and set the pointer to the beginning of the output. - */ - glGetInfoLogARB (vert, sizeof (output), &length, output); - p = output + info_length - 1; - - for (i = 0; i < sizeof (attribs) / sizeof (*attribs); i++) { - GLuint j; - for (j = 0; j < attribs[i].size; j++) { - GLfloat value; - if (p == NULL) { - printf ("*** %s\n", "I/O error"); - break; - } - if (strncmp (p, "true", 4) == 0) - value = 1.0f; - else if (strncmp (p, "false", 5) == 0) - value = 0.0f; - else if (sscanf (p, "%f", &value) != 1) { - printf ("*** %s\n", "I/O error"); - p = NULL; - break; - } - if (fabs (value - attribs[i].data[j]) > EPSILON) - printf ("*** %s, is %f, should be %f\n", "Values are different", value, attribs[i].data[j]); - p = strchr (p, '\n'); - if (p != NULL) - p++; - } - if (p == NULL) - break; - } - - submit_method++; -} - -int main (int argc, char *argv[]) -{ - InitFramework (&argc, argv); - return 0; -} - diff --git a/progs/slang/vstest.txt b/progs/slang/vstest.txt deleted file mode 100644 index 7f51d0bc81..0000000000 --- a/progs/slang/vstest.txt +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Vertex shader test. - * Uses all conventional attributes and 15 generic attributes to print - * their values, using printMESA() extension function, to the debugger - * to compare them with the actual passed-in values. - * Use different types for generic attributes to check matrix handling. - * - * Author: Michal Krol - */ - -#version 110 - -#extension MESA_shader_debug: require - -attribute vec4 Attribute1; -attribute vec4 Attribute2; -attribute vec4 Attribute3; -attribute float Attribute4; -attribute vec2 Attribute5; -attribute vec3 Attribute6; -attribute mat2 Attribute7; -attribute mat3 Attribute9; -attribute mat4 Attribute12; - -void main () -{ - // - // Do some legal stuff. - // - gl_Position = gl_ModelViewMatrix * gl_Vertex; - gl_FrontColor = vec4 (1.0); - - // - // Conventional attributes - except for gl_Vertex. - // - printMESA (gl_Color); - printMESA (gl_SecondaryColor); - printMESA (gl_Normal); - printMESA (gl_MultiTexCoord0); - printMESA (gl_MultiTexCoord1); - printMESA (gl_MultiTexCoord2); - printMESA (gl_MultiTexCoord3); - printMESA (gl_MultiTexCoord4); - printMESA (gl_MultiTexCoord5); - printMESA (gl_MultiTexCoord6); - printMESA (gl_MultiTexCoord7); - printMESA (gl_FogCoord); - - // - // Generic attributes - attrib with index 0 is not used because it would - // alias with gl_Vertex, which is not allowed. - // - printMESA (Attribute1); - printMESA (Attribute2); - printMESA (Attribute3); - printMESA (Attribute4); - printMESA (Attribute5); - printMESA (Attribute6); - printMESA (Attribute7); - printMESA (Attribute9); - printMESA (Attribute12); - - // - // Vertex position goes last. - // - printMESA (gl_Vertex); -} - diff --git a/progs/slang/windows/vc60/cltest.dsp b/progs/slang/windows/vc60/cltest.dsp deleted file mode 100644 index b420397317..0000000000 --- a/progs/slang/windows/vc60/cltest.dsp +++ /dev/null @@ -1,94 +0,0 @@ -# Microsoft Developer Studio Project File - Name="cltest" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=cltest - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "cltest.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "cltest.mak" CFG="cltest - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "cltest - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "cltest - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "cltest - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "cltest_release" -# PROP Intermediate_Dir "cltest_release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x415 /d "NDEBUG" -# ADD RSC /l 0x415 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "cltest - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "cltest_debug" -# PROP Intermediate_Dir "cltest_debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x415 /d "_DEBUG" -# ADD RSC /l 0x415 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "cltest - Win32 Release" -# Name "cltest - Win32 Debug" -# Begin Source File - -SOURCE=..\..\cltest.c -# End Source File -# Begin Source File - -SOURCE=..\..\cltest.txt -# End Source File -# End Target -# End Project diff --git a/progs/slang/windows/vc60/framework.dsp b/progs/slang/windows/vc60/framework.dsp deleted file mode 100644 index f8ca5d169d..0000000000 --- a/progs/slang/windows/vc60/framework.dsp +++ /dev/null @@ -1,92 +0,0 @@ -# Microsoft Developer Studio Project File - Name="framework" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=framework - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "framework.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "framework.mak" CFG="framework - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "framework - Win32 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "framework - Win32 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "framework - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "framework_release" -# PROP Intermediate_Dir "framework_release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c -# ADD BASE RSC /l 0x415 /d "NDEBUG" -# ADD RSC /l 0x415 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo - -!ELSEIF "$(CFG)" == "framework - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "framework_debug" -# PROP Intermediate_Dir "framework_debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c -# ADD BASE RSC /l 0x415 /d "_DEBUG" -# ADD RSC /l 0x415 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo - -!ENDIF - -# Begin Target - -# Name "framework - Win32 Release" -# Name "framework - Win32 Debug" -# Begin Source File - -SOURCE=..\..\framework.c -# End Source File -# Begin Source File - -SOURCE=..\..\framework.h -# End Source File -# End Target -# End Project diff --git a/progs/slang/windows/vc60/slang.dsw b/progs/slang/windows/vc60/slang.dsw deleted file mode 100644 index ec38d1d9d5..0000000000 --- a/progs/slang/windows/vc60/slang.dsw +++ /dev/null @@ -1,74 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "cltest"=".\cltest.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name framework - End Project Dependency -}}} - -############################################################################### - -Project: "framework"=".\framework.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "sotest"=".\sotest.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name framework - End Project Dependency -}}} - -############################################################################### - -Project: "vstest"=".\vstest.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name framework - End Project Dependency -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/progs/slang/windows/vc60/sotest.dsp b/progs/slang/windows/vc60/sotest.dsp deleted file mode 100644 index 3a08ec93aa..0000000000 --- a/progs/slang/windows/vc60/sotest.dsp +++ /dev/null @@ -1,90 +0,0 @@ -# Microsoft Developer Studio Project File - Name="sotest" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=sotest - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "sotest.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "sotest.mak" CFG="sotest - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "sotest - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "sotest - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "sotest - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "sotest_release" -# PROP Intermediate_Dir "sotest_release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x415 /d "NDEBUG" -# ADD RSC /l 0x415 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "sotest - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "sotest_debug" -# PROP Intermediate_Dir "sotest_debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x415 /d "_DEBUG" -# ADD RSC /l 0x415 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "sotest - Win32 Release" -# Name "sotest - Win32 Debug" -# Begin Source File - -SOURCE=..\..\sotest.c -# End Source File -# End Target -# End Project diff --git a/progs/slang/windows/vc60/vstest.dsp b/progs/slang/windows/vc60/vstest.dsp deleted file mode 100644 index deb9e3d359..0000000000 --- a/progs/slang/windows/vc60/vstest.dsp +++ /dev/null @@ -1,93 +0,0 @@ -# Microsoft Developer Studio Project File - Name="vstest" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=vstest - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "vstest.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "vstest.mak" CFG="vstest - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "vstest - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "vstest - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "vstest - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "vstest_release" -# PROP Intermediate_Dir "vstest_release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x415 /d "NDEBUG" -# ADD RSC /l 0x415 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "vstest - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "vstest_debug" -# PROP Intermediate_Dir "vstest_debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x415 /d "_DEBUG" -# ADD RSC /l 0x415 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "vstest - Win32 Release" -# Name "vstest - Win32 Debug" -# Begin Source File - -SOURCE=..\..\vstest.c -# End Source File -# Begin Source File - -SOURCE=..\..\vstest.txt -# End Source File -# End Target -# End Project diff --git a/progs/tests/.gitignore b/progs/tests/.gitignore deleted file mode 100644 index 3479ff8b33..0000000000 --- a/progs/tests/.gitignore +++ /dev/null @@ -1,106 +0,0 @@ -.cvsignore -afsmultiarb -antialias -arbfpspec -arbfptest1 -arbfptexture -arbfptrig -arbgpuprog -arbnpot -arbnpot-mipmap -arbvptest1 -arbvptest3 -arbvptorus -arbvpwarpmesh -arraytexture -blendminmax -blendsquare -blendxor -bufferobj -bug_3050 -bug_3101 -bug_3195 -bug_texstore_i8 -bumpmap -calibrate_rast -copypixrate -crossbar -cva -drawbuffers -extfuncs.h -exactrast -fbotest1 -fbotest2 -fillrate -floattex -fog -fogcoord -fptest1 -fptexture -getprocaddress -getproclist.h -getteximage -glutfx -interleave -invert -jkrahntest -lineclip -manytex -mapbufrange -mapvbo -minmag -mipgen -mipmap_comp -mipmap_comp_tests -mipmap_limits -mipmap_view -multipal -no_s3tc -packedpixels -persp_hint -pbo -prim -prog_parameter -quads -random -readrate -readtex.c -readtex.h -rubberband -scissor -scissor-viewport -seccolor -shader_api -shaderutil.c -shaderutil.h -sharedtex -stencil_twoside -stencilwrap -stencil_wrap -streaming_rect -subtex -subtexrate -tex1d -texcompress2 -texcompsub -texdown -texfilt -texline -texobj -texobjshare -texrect -texwrap -unfilledclip -vao-01 -vao-02 -vparray -vptest1 -vptest2 -vptest3 -vptorus -vpwarpmesh -yuvrect -yuvsquare -zcomp -zdrawpix -zreaddraw diff --git a/progs/tests/Makefile b/progs/tests/Makefile deleted file mode 100644 index 197e14d5b0..0000000000 --- a/progs/tests/Makefile +++ /dev/null @@ -1,257 +0,0 @@ -# progs/tests/Makefile - - -# These programs aren't intended to be included with the normal distro. -# They're not too interesting but they're good for testing. - -TOP = ../.. -include $(TOP)/configs/current - - -LIBS = -L$(TOP)/$(LIB_DIR) -l$(GLUT_LIB) -l$(GLEW_LIB) -l$(GLU_LIB) -l$(GL_LIB) $(APP_LIB_DEPS) - -SOURCES = \ - afsmultiarb.c \ - antialias.c \ - arbfpspec.c \ - arbfptest1.c \ - arbfptexture.c \ - arbfptrig.c \ - arbgpuprog.c \ - arbnpot.c \ - arbnpot-mipmap.c \ - arbvptest1.c \ - arbvptest3.c \ - arbvptorus.c \ - arbvpwarpmesh.c \ - arraytexture.c \ - auxbuffer.c \ - blendminmax.c \ - blendsquare.c \ - blendxor.c \ - blitfb.c \ - bufferobj.c \ - bumpmap.c \ - bug_3050.c \ - bug_3101.c \ - bug_3195.c \ - bug_texstore_i8.c \ - calibrate_rast.c \ - copypixrate.c \ - crossbar.c \ - cva.c \ - drawbuffers.c \ - exactrast.c \ - ext422square.c \ - floattex.c \ - fbotest1.c \ - fbotest2.c \ - fillrate.c \ - fog.c \ - fogcoord.c \ - fptest1.c \ - fptexture.c \ - getprocaddress.c \ - getteximage.c \ - glutfx.c \ - interleave.c \ - invert.c \ - jkrahntest.c \ - lineclip.c \ - manytex.c \ - mapbufrange.c \ - mapvbo.c \ - minmag.c \ - mipgen.c \ - mipmap_comp.c \ - mipmap_comp_tests.c \ - mipmap_limits.c \ - mipmap_view.c \ - multipal.c \ - multitexarray.c \ - multiwindow.c \ - no_s3tc.c \ - packedpixels.c \ - pbo.c \ - persp_hint.c \ - prim.c \ - prog_parameter.c \ - quads.c \ - random.c \ - readrate.c \ - rubberband.c \ - scissor.c \ - scissor-viewport.c \ - seccolor.c \ - shader_api.c \ - sharedtex.c \ - stencil_twoside.c \ - stencilwrap.c \ - stencil_wrap.c \ - streaming_rect \ - subtex \ - subtexrate.c \ - tex1d.c \ - texcmp.c \ - texcompress2.c \ - texcompsub.c \ - texdown \ - texfilt.c \ - texgenmix.c \ - texline.c \ - texobj.c \ - texobjshare.c \ - texrect.c \ - texwrap.c \ - unfilledclip.c \ - vao-01.c \ - vao-02.c \ - vparray.c \ - vpeval.c \ - vptest1.c \ - vptest2.c \ - vptest3.c \ - vptorus.c \ - vpwarpmesh.c \ - yuvrect.c \ - yuvsquare.c \ - zcomp.c \ - zdrawpix.c \ - zreaddraw.c - -PROGS = $(SOURCES:%.c=%) - -INCLUDES = -I. -I$(TOP)/include - -UTIL_FILES = readtex.h readtex.c - - -##### TARGETS ##### - -default: $(UTIL_FILES) $(PROGS) - -clean: - -rm -f $(PROGS) - -rm -f *.o - -rm -f getproclist.h - -##### RULES ##### - -.SUFFIXES: -.SUFFIXES: .c - -.c: - $(APP_CC) $(INCLUDES) $(CFLAGS) $(LDFLAGS) $< $(LIBS) -o $@ - -.c.o: - $(APP_CC) -c $(INCLUDES) $(CFLAGS) $(DEFINES) $< -o $@ - -.S.o: - $(APP_CC) -c $(INCLUDES) $(CFLAGS) $(DEFINES) $< -o $@ - -# auto code generation -getprocaddress: getprocaddress.c getproclist.h - -getproclist.h: $(TOP)/src/mesa/glapi/gl_API.xml getprocaddress.c getprocaddress.py - python getprocaddress.py > getproclist.h - -arraytexture: arraytexture.o readtex.o - $(APP_CC) $(CFLAGS) arraytexture.o readtex.o $(LIBS) -o $@ - -arraytexture.o: arraytexture.c readtex.h - $(APP_CC) -c $(INCLUDES) $(CFLAGS) $(DEFINES) arraytexture.c -o $@ - -afsmultiarb: afsmultiarb.o readtex.o - $(APP_CC) $(CFLAGS) $(LDFLAGS) afsmultiarb.o readtex.o $(LIBS) -o $@ - -afsmultiarb.o: afsmultiarb.c readtex.h - $(APP_CC) -c $(INCLUDES) $(CFLAGS) $(DEFINES) afsmultiarb.c -o $@ - -bumpmap: bumpmap.o readtex.o - $(CC) $(CFLAGS) $(LDFLAGS) bumpmap.o readtex.o $(LIBS) -o $@ - -bumpmap.o: bumpmap.c readtex.h - $(CC) -c $(INCLUDES) $(CFLAGS) $(DEFINES) bumpmap.c -o $@ - -drawbuffers: drawbuffers.o - $(APP_CC) $(CFLAGS) $(LDFLAGS) drawbuffers.o $(LIBS) -o $@ - -drawbuffers.o: drawbuffers.c extfuncs.h - $(APP_CC) -c $(INCLUDES) $(CFLAGS) $(DEFINES) drawbuffers.c -o $@ - -texrect: texrect.o readtex.o - $(APP_CC) $(CFLAGS) $(LDFLAGS) texrect.o readtex.o $(LIBS) -o $@ - -texrect.o: texrect.c readtex.h - $(APP_CC) -c $(INCLUDES) $(CFLAGS) $(DEFINES) texrect.c -o $@ - -bug_3195: bug_3195.o readtex.o - $(APP_CC) $(CFLAGS) $(LDFLAGS) bug_3195.o readtex.o $(LIBS) -o $@ - -bug_3195.o: bug_3195.c readtex.h - $(APP_CC) -c $(INCLUDES) $(CFLAGS) $(DEFINES) bug_3195.c -o $@ - -invert: invert.o readtex.o - $(APP_CC) $(CFLAGS) $(LDFLAGS) invert.o readtex.o $(LIBS) -o $@ - -invert.o: invert.c readtex.h - $(APP_CC) -c $(INCLUDES) $(CFLAGS) $(DEFINES) invert.c -o $@ - -mipmap_view: mipmap_view.o readtex.o - $(APP_CC) $(CFLAGS) mipmap_view.o readtex.o $(LIBS) -o $@ - -mipmap_view.o: mipmap_view.c readtex.h - $(APP_CC) -c $(INCLUDES) $(CFLAGS) $(DEFINES) $< -o $@ - -mipmap_limits: mipmap_limits.o readtex.o - $(APP_CC) $(CFLAGS) mipmap_limits.o readtex.o $(LIBS) -o $@ - -mipmap_limits.o: mipmap_limits.c readtex.h - $(APP_CC) -c $(INCLUDES) $(CFLAGS) $(DEFINES) $< -o $@ - -fillrate: fillrate.o readtex.o - $(APP_CC) $(CFLAGS) fillrate.o readtex.o $(LIBS) -o $@ - -fillrate.o: fillrate.c readtex.h - $(APP_CC) -c $(INCLUDES) $(CFLAGS) $(DEFINES) $< -o $@ - - - - -floattex: floattex.o readtex.o shaderutil.o - $(APP_CC) $(CFLAGS) $(LDFLAGS) floattex.o readtex.o shaderutil.o $(LIBS) -o $@ - -floattex.o: floattex.c readtex.h shaderutil.h - $(APP_CC) -c $(INCLUDES) $(CFLAGS) $(DEFINES) floattex.c -o $@ - - -readtex.o: readtex.c - $(APP_CC) -c $(INCLUDES) $(CFLAGS) $(DEFINES) readtex.c -o $@ - -readtex.h: $(TOP)/progs/util/readtex.h - ln -s $(TOP)/progs/util/readtex.h . - -readtex.c: $(TOP)/progs/util/readtex.c - ln -s $(TOP)/progs/util/readtex.c . - - - -extfuncs.h: $(TOP)/progs/util/extfuncs.h - ln -s $(TOP)/progs/util/extfuncs.h . - - - -shaderutil.c: $(TOP)/progs/util/shaderutil.c - cp $< . - -shaderutil.h: $(TOP)/progs/util/shaderutil.h - cp $< . - -shaderutil.o: shaderutil.c shaderutil.h - $(APP_CC) -c -I$(INCDIR) $(INCLUDES) $(CFLAGS) shaderutil.c - - - -# Emacs tags -tags: - etags `find . -name \*.[ch]` `find ../include` diff --git a/progs/tests/Makefile.win b/progs/tests/Makefile.win deleted file mode 100644 index d42e3cb654..0000000000 --- a/progs/tests/Makefile.win +++ /dev/null @@ -1,43 +0,0 @@ - -# Mesa 3-D graphics library -# Version: 3.5 -# Copyright (C) 1995-2001 Brian Paul - -# Makefile for GLUT-based demo programs for Windows - -!include <win32.mak> - -##### MACROS ##### - -TOP = .. -INCDIR = ..\include -LIBDIR = ..\lib - -SRCS = cva.c \ - dinoshade.c \ - fogcoord.c \ - manytex.c \ - multipal.c \ - projtex.c \ - seccolor.c \ -# sharedtex.c \ - texline.c \ - texwrap.c \ - vptest1.c \ - vptest2.c \ - vptest3.c \ - vptorus.c \ - vpwarpmesh.c - -!include "../mesawin32.mak" - -##### TARGETS ##### - -clean:: - -clobber:: - @del readtex.c readtex.h - -$(EXES) :$*.obj - @echo $@ - $(link) -out:$@ $* /LIBPATH:$(LIBDIR) $(LIBS) diff --git a/progs/tests/SConscript b/progs/tests/SConscript deleted file mode 100644 index 3a0da62717..0000000000 --- a/progs/tests/SConscript +++ /dev/null @@ -1,144 +0,0 @@ -Import('*') - -if not env['GLUT']: - Return() - -env = env.Clone() - -env.Prepend(CPPPATH = [ - '../util', -]) - -env.Prepend(LIBS = [ - util, - '$GLUT_LIB' -]) - -if env['platform'] == 'windows': - env.Append(CPPDEFINES = ['NOMINMAX']) - env.Prepend(LIBS = ['winmm']) - -linux_progs = [ - 'api_speed', -] - -glx_progs = [ - 'auxbuffer', - 'getprocaddress', - 'jkrahntest', - 'sharedtex', - 'texcompress2', - 'texobjshare', -] - -mesa_progs = [ - 'debugger', -] - -progs = [ - 'afsmultiarb', - 'antialias', - 'arbfpspec', - 'arbfptest1', - 'arbfptexture', - 'arbfptrig', - 'arbnpot', - 'arbnpot-mipmap', - 'arbvptest1', - 'arbvptest3', - 'arbvptorus', - 'arbvpwarpmesh', - 'arraytexture', - 'blendminmax', - 'blendsquare', - 'blendxor', - 'blitfb', - 'bufferobj', - 'bug_3050', - 'bug_3101', - 'bug_3195', - 'bug_texstore_i8', - 'calibrate_rast', - 'copypixrate', - 'crossbar', - 'cva', - 'drawbuffers', - 'exactrast', - 'ext422square', - 'fbotest1', - 'fbotest2', - 'fillrate', - 'floattex', - 'fog', - 'fogcoord', - 'fptest1', - 'fptexture', - 'getteximage', - 'glutfx', - 'interleave', - 'invert', - 'lineclip', - 'manytex', - 'mapbufrange', - 'mapvbo', - 'minmag', - 'mipgen', - 'mipmap_comp', - 'mipmap_comp_tests', - 'mipmap_limits', - 'mipmap_view', - 'multipal', - 'multitexarray', - 'multiwindow', - 'no_s3tc', - 'packedpixels', - 'pbo', - 'persp_hint', - 'prog_parameter', - 'quads', - 'random', - 'readrate', - 'rubberband', - 'scissor', - 'scissor-viewport', - 'seccolor', - 'shader_api', - 'stencil_twoside', - 'stencil_wrap', - 'stencilwrap', - 'streaming_rect', - 'subtex', - 'subtexrate', - 'tex1d', - 'texcmp', - 'texcompress2', - 'texcompsub', - 'texdown', - 'texfilt', - 'texgenmix', - 'texline', - 'texobj', - 'texrect', - 'texwrap', - 'unfilledclip', - 'vao-01', - 'vao-02', - 'vparray', - 'vpeval', - 'vptest1', - 'vptest2', - 'vptest3', - 'vptorus', - 'vpwarpmesh', - 'yuvrect', - 'yuvsquare', - 'zcomp', - 'zdrawpix', - 'zreaddraw', -] - -for prog in progs: - env.Program( - target = prog, - source = prog + '.c', - ) diff --git a/progs/tests/afsmultiarb.c b/progs/tests/afsmultiarb.c deleted file mode 100644 index ca25a4d75b..0000000000 --- a/progs/tests/afsmultiarb.c +++ /dev/null @@ -1,470 +0,0 @@ -/* - * GL_ATI_fragment_shader test - * Roland Scheidegger - * - * Command line options: - * -info print GL implementation information - */ - - -#include <math.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <GL/glew.h> -#include <GL/glut.h> - -#include "readtex.h" - -#define TEXTURE_1_FILE "../images/girl.rgb" -#define TEXTURE_2_FILE "../images/reflect.rgb" - -#define TEX0 1 -#define TEX7 8 -#define ANIMATE 10 -#define SHADER 20 -#define QUIT 100 - -static GLboolean Animate = GL_TRUE; -static GLint NumUnits = 6; -static GLboolean TexEnabled[8]; -static GLuint boringshaderID = 0; -static GLuint boring2passID = 0; -static GLboolean Shader = GL_FALSE; - -static GLfloat Drift = 0.0; -static GLfloat drift_increment = 0.005; -static GLfloat Xrot = 20.0, Yrot = 30.0, Zrot = 0.0; -static GLfloat shaderconstant[4] = {0.5, 0.0, 0.0, 0.0}; - -static void Idle( void ) -{ - if (Animate) { - GLint i; - - Drift += drift_increment; - if (Drift >= 1.0) - Drift = 0.0; - - for (i = 0; i < NumUnits; i++) { - glActiveTextureARB(GL_TEXTURE0_ARB + i); - glMatrixMode(GL_TEXTURE); - glLoadIdentity(); - if (i == 0) { - glTranslatef(Drift, 0.0, 0.0); - glScalef(2, 2, 1); - } - else if (i == 1) { - glTranslatef(0.0, Drift, 0.0); - } - else { - glTranslatef(0.5, 0.5, 0.0); - glRotatef(180.0 * Drift, 0, 0, 1); - glScalef(1.0/i, 1.0/i, 1.0/i); - glTranslatef(-0.5, -0.5, 0.0); - } - } - glMatrixMode(GL_MODELVIEW); - - glutPostRedisplay(); - } -} - - -static void DrawObject(void) -{ - GLint i; - GLint j; - static const GLfloat tex_coords[] = { 0.0, 0.0, 1.0, 1.0, 0.0 }; - static const GLfloat vtx_coords[] = { -1.0, -1.0, 1.0, 1.0, -1.0 }; - - if (!TexEnabled[0] && !TexEnabled[1]) - glColor3f(0.1, 0.1, 0.1); /* add onto this */ - else - glColor3f(1, 1, 1); /* modulate this */ - - glBegin(GL_QUADS); - - /* Toggle between the vector and scalar entry points. This is done purely - * to hit multiple paths in the driver. - */ - if ( Drift > 0.49 ) { - for (j = 0; j < 4; j++ ) { - for (i = 0; i < NumUnits; i++) - glMultiTexCoord2fARB(GL_TEXTURE0_ARB + i, - tex_coords[j], tex_coords[j+1]); - glVertex2f( vtx_coords[j], vtx_coords[j+1] ); - } - } - else { - for (j = 0; j < 4; j++ ) { - for (i = 0; i < NumUnits; i++) - glMultiTexCoord2fvARB(GL_TEXTURE0_ARB + i, & tex_coords[j]); - glVertex2fv( & vtx_coords[j] ); - } - } - - glEnd(); -} - - - -static void Display( void ) -{ - static GLint T0 = 0; - static GLint Frames = 0; - GLint t; - - glClear( GL_COLOR_BUFFER_BIT ); - - glPushMatrix(); - glRotatef(Xrot, 1.0, 0.0, 0.0); - glRotatef(Yrot, 0.0, 1.0, 0.0); - glRotatef(Zrot, 0.0, 0.0, 1.0); - glScalef(5.0, 5.0, 5.0); - DrawObject(); - glPopMatrix(); - - glutSwapBuffers(); - - Frames++; - - t = glutGet(GLUT_ELAPSED_TIME); - if (t - T0 >= 2500) { - GLfloat seconds = (t - T0) / 1000.0; - GLfloat fps = Frames / seconds; - drift_increment = 2.2 * seconds / Frames; - printf("%d frames in %6.3f seconds = %6.3f FPS\n", Frames, seconds, fps); - T0 = t; - Frames = 0; - } -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -1.0, 1.0, -1.0, 1.0, 10.0, 100.0 ); - /*glOrtho( -6.0, 6.0, -6.0, 6.0, 10.0, 100.0 );*/ - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - glTranslatef( 0.0, 0.0, -70.0 ); -} - - -static void ModeMenu(int entry) -{ - if (entry >= TEX0 && entry <= TEX7) { - /* toggle */ - GLint i = entry - TEX0; - TexEnabled[i] = !TexEnabled[i]; - glActiveTextureARB(GL_TEXTURE0_ARB + i); - if (TexEnabled[i]) - glEnable(GL_TEXTURE_2D); - else - glDisable(GL_TEXTURE_2D); - printf("Enabled: "); - for (i = 0; i < NumUnits; i++) - printf("%d ", (int) TexEnabled[i]); - printf("\n"); - } - else if (entry==ANIMATE) { - Animate = !Animate; - } - else if (entry==SHADER) { - Shader = !Shader; - if (Shader) { - fprintf(stderr, "using 2-pass shader\n"); - glBindFragmentShaderATI(boring2passID); - } - else { - fprintf(stderr, "using 1-pass shader\n"); - glBindFragmentShaderATI(boringshaderID); - } - } - else if (entry==QUIT) { - exit(0); - } - - glutPostRedisplay(); -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void SpecialKey( int key, int x, int y ) -{ - float step = 3.0; - (void) x; - (void) y; - - switch (key) { - case GLUT_KEY_UP: - Xrot += step; - break; - case GLUT_KEY_DOWN: - Xrot -= step; - break; - case GLUT_KEY_LEFT: - Yrot += step; - break; - case GLUT_KEY_RIGHT: - Yrot -= step; - break; - } - glutPostRedisplay(); -} - - -static void Init( int argc, char *argv[] ) -{ - GLuint texObj[8]; - GLint size, i; - - const char *exten = (const char *) glGetString(GL_EXTENSIONS); - if (!strstr(exten, "GL_ATI_fragment_shader")) { - printf("Sorry, GL_ATI_fragment_shader not supported by this renderer.\n"); - exit(1); - } - - - glGetIntegerv(GL_MAX_TEXTURE_SIZE, &size); - printf("%d x %d max texture size\n", size, size); - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - - for (i = 0; i < NumUnits; i++) { - if (i < 6) - TexEnabled[i] = GL_TRUE; - else - TexEnabled[i] = GL_FALSE; - } - - /* allocate two texture objects */ - glGenTextures(NumUnits, texObj); - - /* setup the texture objects */ - for (i = 0; i < NumUnits; i++) { - - glActiveTextureARB(GL_TEXTURE0_ARB + i); - glBindTexture(GL_TEXTURE_2D, texObj[i]); - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - - if (i == 0) { - if (!LoadRGBMipmaps(TEXTURE_1_FILE, GL_RGB)) { - printf("Error: couldn't load texture image\n"); - exit(1); - } - } - else if (i == 1) { - if (!LoadRGBMipmaps(TEXTURE_2_FILE, GL_RGB)) { - printf("Error: couldn't load texture image\n"); - exit(1); - } - } - else { - /* checker */ - GLubyte image[8][8][3]; - GLint i, j; - for (i = 0; i < 8; i++) { - for (j = 0; j < 8; j++) { - if ((i + j) & 1) { - image[i][j][0] = 50; - image[i][j][1] = 50; - image[i][j][2] = 50; - } - else { - image[i][j][0] = 25; - image[i][j][1] = 25; - image[i][j][2] = 25; - } - } - } - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 8, 8, 0, - GL_RGB, GL_UNSIGNED_BYTE, (GLvoid *) image); - } - - /* Bind texObj[i] to ith texture unit */ -/* if (i < 2) - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - else - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_ADD);*/ - - if (TexEnabled[i]) - glEnable(GL_TEXTURE_2D); - } - - boringshaderID = glGenFragmentShadersATI(1); - boring2passID = glGenFragmentShadersATI(1); - if (boring2passID == 0) - { - fprintf(stderr, "couldn't get frag shader id\n"); - exit(1); - } - glBindFragmentShaderATI(boringshaderID); -/* maybe not the most creative shader but at least I know how it should look like! */ - glBeginFragmentShaderATI(); - glSampleMapATI(GL_REG_0_ATI, GL_TEXTURE0_ARB, GL_SWIZZLE_STR_ATI); - glSampleMapATI(GL_REG_1_ATI, GL_TEXTURE1_ARB, GL_SWIZZLE_STR_ATI); - glSampleMapATI(GL_REG_2_ATI, GL_TEXTURE2_ARB, GL_SWIZZLE_STR_ATI); - glSampleMapATI(GL_REG_3_ATI, GL_TEXTURE3_ARB, GL_SWIZZLE_STR_ATI); - glSampleMapATI(GL_REG_4_ATI, GL_TEXTURE4_ARB, GL_SWIZZLE_STR_ATI); - glSampleMapATI(GL_REG_5_ATI, GL_TEXTURE5_ARB, GL_SWIZZLE_STR_ATI); - glColorFragmentOp2ATI(GL_MUL_ATI, - GL_REG_0_ATI, GL_NONE, GL_SATURATE_BIT_ATI, - GL_REG_0_ATI, GL_NONE, GL_NONE, - GL_PRIMARY_COLOR, GL_NONE, GL_NONE); - glAlphaFragmentOp1ATI(GL_MOV_ATI, - GL_REG_0_ATI, GL_NONE, - GL_PRIMARY_COLOR, GL_NONE, GL_NONE); - glColorFragmentOp3ATI(GL_MAD_ATI, - GL_REG_0_ATI, GL_NONE, GL_SATURATE_BIT_ATI, - GL_REG_0_ATI, GL_NONE, GL_NONE, - GL_REG_1_ATI, GL_NONE, GL_NONE, - GL_REG_2_ATI, GL_NONE, GL_NONE); - glColorFragmentOp2ATI(GL_ADD_ATI, - GL_REG_0_ATI, GL_NONE, GL_SATURATE_BIT_ATI, - GL_REG_0_ATI, GL_NONE, GL_NONE, - GL_REG_3_ATI, GL_NONE, GL_NONE); - glColorFragmentOp2ATI(GL_ADD_ATI, - GL_REG_0_ATI, GL_NONE, GL_SATURATE_BIT_ATI, - GL_REG_0_ATI, GL_NONE, GL_NONE, - GL_REG_4_ATI, GL_NONE, GL_NONE); - glColorFragmentOp2ATI(GL_ADD_ATI, - GL_REG_0_ATI, GL_NONE, GL_SATURATE_BIT_ATI, - GL_REG_0_ATI, GL_NONE, GL_NONE, - GL_REG_5_ATI, GL_NONE, GL_NONE); - glEndFragmentShaderATI(); - -/* mathematically equivalent to first shader but using 2 passes together with - some tex coord rerouting */ - glBindFragmentShaderATI(boring2passID); - glBeginFragmentShaderATI(); - glPassTexCoordATI(GL_REG_1_ATI, GL_TEXTURE0_ARB, GL_SWIZZLE_STR_ATI); - glSampleMapATI(GL_REG_2_ATI, GL_TEXTURE2_ARB, GL_SWIZZLE_STR_ATI); - glSampleMapATI(GL_REG_3_ATI, GL_TEXTURE3_ARB, GL_SWIZZLE_STR_ATI); - glSampleMapATI(GL_REG_4_ATI, GL_TEXTURE4_ARB, GL_SWIZZLE_STR_ATI); - glSampleMapATI(GL_REG_5_ATI, GL_TEXTURE5_ARB, GL_SWIZZLE_STR_ATI); - glColorFragmentOp2ATI(GL_ADD_ATI, - GL_REG_0_ATI, GL_NONE, GL_SATURATE_BIT_ATI, - GL_REG_2_ATI, GL_NONE, GL_NONE, - GL_REG_3_ATI, GL_NONE, GL_NONE); - glColorFragmentOp2ATI(GL_ADD_ATI, - GL_REG_0_ATI, GL_NONE, GL_SATURATE_BIT_ATI, - GL_REG_0_ATI, GL_NONE, GL_NONE, - GL_REG_4_ATI, GL_NONE, GL_NONE); - glColorFragmentOp2ATI(GL_ADD_ATI, - GL_REG_0_ATI, GL_NONE, GL_SATURATE_BIT_ATI, - GL_REG_0_ATI, GL_NONE, GL_NONE, - GL_REG_5_ATI, GL_NONE, GL_NONE); - /* not really a dependant read */ - glSampleMapATI(GL_REG_0_ATI, GL_REG_1_ATI, GL_SWIZZLE_STR_ATI); - glSampleMapATI(GL_REG_1_ATI, GL_TEXTURE1_ARB, GL_SWIZZLE_STR_ATI); - glPassTexCoordATI(GL_REG_5_ATI, GL_REG_0_ATI, GL_SWIZZLE_STR_ATI); - glColorFragmentOp2ATI(GL_MUL_ATI, - GL_REG_0_ATI, GL_NONE, GL_SATURATE_BIT_ATI, - GL_REG_0_ATI, GL_NONE, GL_NONE, - GL_PRIMARY_COLOR, GL_NONE, GL_NONE); - glAlphaFragmentOp1ATI(GL_MOV_ATI, - GL_REG_0_ATI, GL_NONE, - GL_PRIMARY_COLOR, GL_NONE, GL_NONE); - glColorFragmentOp3ATI(GL_MAD_ATI, - GL_REG_0_ATI, GL_NONE, GL_SATURATE_BIT_ATI, - GL_REG_0_ATI, GL_NONE, GL_NONE, - GL_REG_1_ATI, GL_NONE, GL_NONE, - GL_REG_5_ATI, GL_NONE, GL_NONE); - /* in principle we're finished here, but to test a bit more - we do some fun with dot ops, replication et al. */ - glSetFragmentShaderConstantATI(GL_CON_3_ATI, shaderconstant); - glColorFragmentOp2ATI(GL_DOT4_ATI, - GL_REG_3_ATI, GL_GREEN_BIT_ATI, GL_EIGHTH_BIT_ATI, - GL_ZERO, GL_NONE, GL_COMP_BIT_ATI | GL_NEGATE_BIT_ATI, - GL_CON_3_ATI, GL_RED, GL_2X_BIT_ATI); - /* those args must get ignored, except dstReg */ - glAlphaFragmentOp2ATI(GL_DOT4_ATI, - GL_REG_4_ATI, GL_NONE, - GL_ZERO, GL_NONE, GL_NONE, - GL_ZERO, GL_NONE, GL_NONE); - /* -> reg3 g = reg4 alpha = -0.5 */ - glAlphaFragmentOp2ATI(GL_ADD_ATI, - GL_REG_5_ATI, GL_NONE, - GL_REG_3_ATI, GL_GREEN, GL_NONE, - GL_REG_4_ATI, GL_NONE, GL_NONE); - /* -> reg5 a = -1 */ - glColorFragmentOp3ATI(GL_DOT2_ADD_ATI, - GL_REG_4_ATI, GL_BLUE_BIT_ATI, GL_HALF_BIT_ATI, - GL_REG_5_ATI, GL_ALPHA, GL_NEGATE_BIT_ATI, - GL_ONE, GL_NONE, GL_BIAS_BIT_ATI, - GL_ONE, GL_ALPHA, GL_2X_BIT_ATI | GL_NEGATE_BIT_ATI); - /* -> reg 4 b = -0.5 */ - glColorFragmentOp2ATI(GL_MUL_ATI, - GL_REG_0_ATI, GL_NONE, GL_NONE, - GL_REG_4_ATI, GL_BLUE, GL_NEGATE_BIT_ATI | GL_2X_BIT_ATI, - GL_REG_0_ATI, GL_NONE, GL_NONE); - glEndFragmentShaderATI(); - - glBindFragmentShaderATI(boringshaderID); - glEnable(GL_FRAGMENT_SHADER_ATI); - - glShadeModel(GL_FLAT); - glClearColor(0.3, 0.3, 0.4, 1.0); - - if (argc > 1 && strcmp(argv[1], "-info")==0) { - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - printf("GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - printf("GL_EXTENSIONS = %s\n", (char *) glGetString(GL_EXTENSIONS)); - } - printf("output should be identical with both shaders to multiarb demo when 6 textures are enabled\n"); -} - - -int main( int argc, char *argv[] ) -{ -/* GLint i;*/ - - glutInit( &argc, argv ); - glutInitWindowSize( 300, 300 ); - glutInitWindowPosition( 0, 0 ); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE ); - glutCreateWindow(argv[0] ); - glewInit(); - - Init( argc, argv ); - - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutSpecialFunc( SpecialKey ); - glutDisplayFunc( Display ); - glutIdleFunc( Idle ); - - glutCreateMenu(ModeMenu); - -/* for (i = 0; i < NumUnits; i++) { - char s[100]; - sprintf(s, "Toggle Texture %d", i); - glutAddMenuEntry(s, TEX0 + i); - }*/ - glutAddMenuEntry("Toggle 1/2 Pass Shader", SHADER); - glutAddMenuEntry("Toggle Animation", ANIMATE); - glutAddMenuEntry("Quit", QUIT); - glutAttachMenu(GLUT_RIGHT_BUTTON); - - glutMainLoop(); - return 0; -} diff --git a/progs/tests/antialias.c b/progs/tests/antialias.c deleted file mode 100644 index 656bf2471f..0000000000 --- a/progs/tests/antialias.c +++ /dev/null @@ -1,238 +0,0 @@ - -/* - * Test multisampling and polygon smoothing. - * - * Brian Paul - * 4 November 2002 - */ - -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - - -static GLfloat Zrot = 0; -static GLboolean Anim = GL_TRUE; -static GLboolean HaveMultisample = GL_TRUE; -static GLboolean DoMultisample = GL_TRUE; - - -static void -PrintString(const char *s) -{ - while (*s) { - glutBitmapCharacter(GLUT_BITMAP_8_BY_13, (int) *s); - s++; - } -} - - -static void -doPolygon( GLint verts, GLfloat radius, GLfloat z ) -{ - int i; - for (i = 0; i < verts; i++) { - float a = (i * 2.0 * 3.14159) / verts; - float x = radius * cos(a); - float y = radius * sin(a); - glVertex3f(x, y, z); - } -} - - -static void -DrawObject( void ) -{ - glLineWidth(3.0); - glColor3f(1, 1, 1); - glBegin(GL_LINE_LOOP); - doPolygon(12, 1.2, 0); - glEnd(); - - glLineWidth(1.0); - glColor3f(1, 1, 1); - glBegin(GL_LINE_LOOP); - doPolygon(12, 1.1, 0); - glEnd(); - - glColor3f(1, 0, 0); - glBegin(GL_POLYGON); - doPolygon(12, 0.4, 0.3); - glEnd(); - - glColor3f(0, 1, 0); - glBegin(GL_POLYGON); - doPolygon(12, 0.6, 0.2); - glEnd(); - - glColor3f(0, 0, 1); - glBegin(GL_POLYGON); - doPolygon(12, 0.8, 0.1); - glEnd(); - - glColor3f(1, 1, 1); - glBegin(GL_POLYGON); - doPolygon(12, 1.0, 0); - glEnd(); -} - - -static void -Display( void ) -{ - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - glColor3f(1, 1, 1); - if (HaveMultisample) { - glRasterPos2f(-3.1, -1.6); - if (DoMultisample) - PrintString("MULTISAMPLE"); - else - PrintString("MULTISAMPLE (off)"); - } - glRasterPos2f(-0.8, -1.6); - PrintString("No antialiasing"); - glRasterPos2f(1.6, -1.6); - PrintString("GL_POLYGON_SMOOTH"); - - /* multisample */ - if (HaveMultisample) { - glEnable(GL_DEPTH_TEST); - if (DoMultisample) - glEnable(GL_MULTISAMPLE_ARB); - glPushMatrix(); - glTranslatef(-2.5, 0, 0); - glPushMatrix(); - glRotatef(Zrot, 0, 0, 1); - DrawObject(); - glPopMatrix(); - glPopMatrix(); - glDisable(GL_MULTISAMPLE_ARB); - glDisable(GL_DEPTH_TEST); - } - - /* non-aa */ - glEnable(GL_DEPTH_TEST); - glPushMatrix(); - glTranslatef(0, 0, 0); - glPushMatrix(); - glRotatef(Zrot, 0, 0, 1); - DrawObject(); - glPopMatrix(); - glPopMatrix(); - glDisable(GL_DEPTH_TEST); - - /* polygon smooth */ - glEnable(GL_POLYGON_SMOOTH); - glEnable(GL_LINE_SMOOTH); - glEnable(GL_BLEND); - glPushMatrix(); - glTranslatef(2.5, 0, 0); - glPushMatrix(); - glRotatef(Zrot, 0, 0, 1); - DrawObject(); - glPopMatrix(); - glPopMatrix(); - glDisable(GL_LINE_SMOOTH); - glDisable(GL_POLYGON_SMOOTH); - glDisable(GL_BLEND); - - glutSwapBuffers(); -} - - -static void -Reshape( int width, int height ) -{ - GLfloat ar = (float) width / (float) height; - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glOrtho(-2.0*ar, 2.0*ar, -2.0, 2.0, -1.0, 1.0); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); -} - - -static void -Idle( void ) -{ - Zrot = 0.01 * glutGet(GLUT_ELAPSED_TIME); - glutPostRedisplay(); -} - - -static void -Key( unsigned char key, int x, int y ) -{ - const GLfloat step = 1.0; - (void) x; - (void) y; - switch (key) { - case 'a': - Anim = !Anim; - if (Anim) - glutIdleFunc(Idle); - else - glutIdleFunc(NULL); - break; - case 'm': - DoMultisample = !DoMultisample; - break; - case 'z': - Zrot = (int) (Zrot - step); - break; - case 'Z': - Zrot = (int) (Zrot + step); - break; - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void -Init( void ) -{ - /* GLUT imposes the four samples/pixel requirement */ - int s; - glGetIntegerv(GL_SAMPLES_ARB, &s); - if (!glutExtensionSupported("GL_ARB_multisample") || s < 1) { - printf("Warning: multisample antialiasing not supported.\n"); - HaveMultisample = GL_FALSE; - } - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - printf("GL_SAMPLES_ARB = %d\n", s); - - glBlendFunc(GL_SRC_ALPHA, GL_ONE); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glBlendFunc(GL_SRC_ALPHA_SATURATE, GL_ONE); - - glGetIntegerv(GL_MULTISAMPLE_ARB, &s); - printf("GL_MULTISAMPLE_ARB = %d\n", s); -} - - -int -main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 600, 300 ); - glutInitDisplayMode( GLUT_RGB | GLUT_ALPHA | GLUT_DOUBLE | - GLUT_DEPTH | GLUT_MULTISAMPLE ); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - if (Anim) - glutIdleFunc( Idle ); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/api_speed.c b/progs/tests/api_speed.c deleted file mode 100644 index 28e28e61d8..0000000000 --- a/progs/tests/api_speed.c +++ /dev/null @@ -1,145 +0,0 @@ -/* - * (C) Copyright IBM Corporation 2002 - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * on the rights to use, copy, modify, merge, publish, distribute, sub - * license, and/or sell copies of the Software, and to permit persons to whom - * the Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL - * VA LINUX SYSTEM, IBM AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - * USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/** - * \file api_speed.c - * Simple test to measure the overhead of making GL calls. - * - * The main purpose of this test is to measure the difference in calling - * overhead of different dispatch methods. Since it uses asm/timex.h to - * access the Pentium's cycle counters, it will probably only compile on - * Linux (though most architectures have a get_cycles function in timex.h). - * That is why it isn't in the default Makefile. - * - * \author Ian Romanick <idr@us.ibm.com> - */ - -#include <stdio.h> -#include <stdlib.h> -#include <GL/glew.h> -#include <GL/glut.h> - -#define inline __inline__ -#include <asm/timex.h> - -static float Width = 400; -static float Height = 400; -static unsigned count = 1000000; - - -static void Idle( void ) -{ - glutPostRedisplay(); -} - -#define DO_FUNC(f,p) \ - do { \ - t0 = get_cycles(); \ - for ( i = 0 ; i < count ; i++ ) { \ - f p ; \ - } \ - t1 = get_cycles(); \ - printf("%u calls to % 20s required %llu cycles.\n", count, # f, t1 - t0); \ - } while( 0 ) - -/** - * Main display function. This is the place to add more API calls. - */ -static void Display( void ) -{ - int i; - const float v[3] = { 1.0, 0.0, 0.0 }; - cycles_t t0; - cycles_t t1; - - glBegin(GL_TRIANGLE_STRIP); - - DO_FUNC( glColor3fv, (v) ); - DO_FUNC( glNormal3fv, (v) ); - DO_FUNC( glTexCoord2fv, (v) ); - DO_FUNC( glTexCoord3fv, (v) ); - DO_FUNC( glMultiTexCoord2fv, (GL_TEXTURE0, v) ); - DO_FUNC( glMultiTexCoord2f, (GL_TEXTURE0, 0.0, 0.0) ); - DO_FUNC( glFogCoordfvEXT, (v) ); - DO_FUNC( glFogCoordfEXT, (0.5) ); - - glEnd(); - - exit(0); -} - - -static void Reshape( int width, int height ) -{ - Width = width; - Height = height; - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glOrtho(0.0, width, 0.0, height, -1.0, 1.0); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowSize( (int) Width, (int) Height ); - glutInitWindowPosition( 0, 0 ); - - glutInitDisplayMode( GLUT_RGB ); - - glutCreateWindow( argv[0] ); - glewInit(); - - if ( argc > 1 ) { - count = strtoul( argv[1], NULL, 0 ); - if ( count == 0 ) { - fprintf( stderr, "Usage: %s [iterations]\n", argv[0] ); - exit(1); - } - } - - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - glutIdleFunc( Idle ); - - glutMainLoop(); - return 0; -} diff --git a/progs/tests/api_speed.py b/progs/tests/api_speed.py deleted file mode 100755 index 0ddaf5836c..0000000000 --- a/progs/tests/api_speed.py +++ /dev/null @@ -1,143 +0,0 @@ -#!/usr/bin/env python2 - -# (C) Copyright IBM Corporation 2004 -# All Rights Reserved. -# -# Permission is hereby granted, free of charge, to any person obtaining a -# copy of this software and associated documentation files (the "Software"), -# to deal in the Software without restriction, including without limitation -# on the rights to use, copy, modify, merge, publish, distribute, sub -# license, and/or sell copies of the Software, and to permit persons to whom -# the Software is furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice (including the next -# paragraph) shall be included in all copies or substantial portions of the -# Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL -# IBM AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -# IN THE SOFTWARE. -# -# Authors: -# Ian Romanick <idr@us.ibm.com> - - -# This script is used to run api_speed against several different libGL -# libraries and compare the results. See the show_usage function for more -# details on how to use it. - - -import re, os, sys, getopt - -class results: - def process_file(self, f): - self.cycles = {} - self.iterations = -1 - - for line in f.readlines(): - m = re.match("(\d+) calls to (.{20}) required (\d+) cycles.", line) - - if self.iterations != -1 and int(m.group(1)) != self.iterations: - raise - - # This could be done with lstrip, but the version of - # the Python library on my system doesn't have it. - # The installed version of Python is quite old. :( - - temp = m.group(2) - function_name = None - for i in range(len(temp)): - if temp[i] != ' ': - function_name = temp[i:] - break - - if function_name == None: - raise - - self.cycles[ function_name ] = int(m.group(3)) - self.iterations = int(m.group(1)) - - - def show_results(self): - for name in self.cycles: - print "%s -> %f" % (name, float(self.cycles[name]) / self.iterations) - - - def compare_results(self, other): - for name in self.cycles: - if other.cycles.has_key(name): - a = float(self.cycles[name]) / float(self.iterations) - b = float(other.cycles[name]) / float(other.iterations) - if abs( a ) < 0.000001: - print "a = %f, b = %f" % (a, b) - else: - p = (100.0 * b / a) - 100.0 - print "%- 20s %7.2f - %7.2f = % -6.2f (%+.1f%%)" % (name, a, b, a - b, p) - return - - -def make_execution_string(lib, iterations): - if lib == None: - return "./api_speed %u" % (iterations) - else: - return "LD_PRELOAD=%s ./api_speed %u" % (lib, iterations) - - -def show_usage(): - print """Usage: %s [-i iterations] {library ...} - -The full path to one or more libGL libraries (including the full name of the -library) can be included on the command-line. Each library will be tested, -and the results compared. The first library listed will be used as the -"base line" for all comparisons.""" % (sys.argv[0]) - sys.exit(1) - - -if __name__ == '__main__': - try: - (args, trail) = getopt.getopt(sys.argv[1:], "i:") - except Exception,e: - show_usage() - - iterations = 1000000 - try: - for (arg,val) in args: - if arg == "-i": - iterations = int(val) - except Exception,e: - show_usage() - - - # If no libraries were specifically named, just run the test against - # the default system libGL. - - if len(trail) == 0: - trail.append(None) - - - result_array = [] - names = [] - - for lib in trail: - s = make_execution_string( lib, iterations ) - r = results() - r.process_file( os.popen(s) ) - names.append(lib) - result_array.append(r) - - - # If the test was only run against one library, just show the results - # of the test run. Otherwise, compare each successive run against - # the first run. - - if len( result_array ) == 1: - result_array[0].show_results() - else: - for i in range(1, len( result_array )): - print "%s vs. %s" % (names[0], names[i]) - result_array[0].compare_results( result_array[i] ) - print "" diff --git a/progs/tests/arbfpspec.c b/progs/tests/arbfpspec.c deleted file mode 100644 index 550e954340..0000000000 --- a/progs/tests/arbfpspec.c +++ /dev/null @@ -1,193 +0,0 @@ -/* - * To demo that specular color gets lost someplace after vertex - * program completion and fragment program startup - */ - -#include <assert.h> -#include <string.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - -static float Xrot = 0.0, Yrot = 0.0, Zrot = 0.0; -static GLboolean Anim = GL_TRUE; - - -static void Idle( void ) -{ - Xrot += .3; - Yrot += .4; - Zrot += .2; - glutPostRedisplay(); -} - - -static void Display( void ) -{ - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - glPushMatrix(); - glRotatef(Xrot, 1, 0, 0); - glRotatef(Yrot, 0, 1, 0); - glRotatef(Zrot, 0, 0, 1); - glutSolidTorus(0.75, 2.0, 10, 20); - glPopMatrix(); - - glutSwapBuffers(); -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -2.0, 2.0, -2.0, 2.0, 5.0, 25.0 ); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - glTranslatef( 0.0, 0.0, -12.0 ); -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case ' ': - Xrot = Yrot = Zrot = 0; - break; - case 'a': - Anim = !Anim; - if (Anim) - glutIdleFunc(Idle); - else - glutIdleFunc(NULL); - break; - case 'z': - Zrot -= 5.0; - break; - case 'Z': - Zrot += 5.0; - break; - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void SpecialKey( int key, int x, int y ) -{ - const GLfloat step = 3.0; - (void) x; - (void) y; - switch (key) { - case GLUT_KEY_UP: - Xrot -= step; - break; - case GLUT_KEY_DOWN: - Xrot += step; - break; - case GLUT_KEY_LEFT: - Yrot -= step; - break; - case GLUT_KEY_RIGHT: - Yrot += step; - break; - } - glutPostRedisplay(); -} - - -static void Init( void ) -{ - GLint errno; - GLuint prognum, fprognum; - - static const char prog[] = - "!!ARBvp1.0\n" - "DP4 result.position.x, state.matrix.mvp.row[0], vertex.position ;\n" - "DP4 result.position.y, state.matrix.mvp.row[1], vertex.position ;\n" - "DP4 result.position.z, state.matrix.mvp.row[2], vertex.position ;\n" - "DP4 result.position.w, state.matrix.mvp.row[3], vertex.position ;\n" - "MOV result.color.front.primary, {.5, .5, .5, 1};\n" - "MOV result.color.front.secondary, {1, 1, 1, 1};\n" - "END"; - - static const char fprog[] = - "!!ARBfp1.0\n" - "MOV result.color, fragment.color.secondary;\n" - "END"; - - if (!glutExtensionSupported("GL_ARB_vertex_program")) { - printf("Sorry, this program requires GL_ARB_vertex_program"); - exit(1); - } - - if (!glutExtensionSupported("GL_ARB_fragment_program")) { - printf("Sorry, this program requires GL_ARB_fragment_program"); - exit(1); - } - - glGenProgramsARB(1, &prognum); - glGenProgramsARB(1, &fprognum); - - glBindProgramARB(GL_VERTEX_PROGRAM_ARB, prognum); - glProgramStringARB(GL_VERTEX_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, - strlen(prog), (const GLubyte *) prog); - - assert(glIsProgramARB(prognum)); - errno = glGetError(); - printf("glGetError = %d\n", errno); - if (errno != GL_NO_ERROR) - { - GLint errorpos; - - glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &errorpos); - printf("errorpos: %d\n", errorpos); - printf("%s\n", (char *)glGetString(GL_PROGRAM_ERROR_STRING_ARB)); - } - - glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, fprognum); - glProgramStringARB(GL_FRAGMENT_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, - strlen(fprog), (const GLubyte *) fprog); - errno = glGetError(); - printf("glGetError = %d\n", errno); - if (errno != GL_NO_ERROR) - { - GLint errorpos; - - glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &errorpos); - printf("errorpos: %d\n", errorpos); - printf("%s\n", (char *)glGetString(GL_PROGRAM_ERROR_STRING_ARB)); - } - - glEnable(GL_VERTEX_PROGRAM_ARB); - glEnable(GL_FRAGMENT_PROGRAM_ARB); - glEnable(GL_DEPTH_TEST); - glClearColor(0.3, 0.3, 0.3, 1); -} - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 250, 250 ); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH ); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutSpecialFunc( SpecialKey ); - glutDisplayFunc( Display ); - if (Anim) - glutIdleFunc(Idle); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/arbfptest1.c b/progs/tests/arbfptest1.c deleted file mode 100644 index e7237b76a8..0000000000 --- a/progs/tests/arbfptest1.c +++ /dev/null @@ -1,211 +0,0 @@ -/* Test GL_ARB_fragment_program */ - -#include <assert.h> -#include <string.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - - - -static void Display( void ) -{ - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - glPushMatrix(); - - glColor4f(0, 0.5, 0, 1); - glColor4f(0, 1, 0, 1); - glBegin(GL_POLYGON); - glVertex2f(-1, -1); - glVertex2f( 1, -1); - glVertex2f( 0, 1); - glEnd(); - - glPopMatrix(); - - glutSwapBuffers(); -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -1.0, 1.0, -1.0, 1.0, 5.0, 25.0 ); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - glTranslatef( 0.0, 0.0, -15.0 ); -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - -static void load_program(const char *prog, GLuint prognum) -{ - int a; - GLint errorpos, errno; - - glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, prognum); - glProgramStringARB(GL_FRAGMENT_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, - strlen(prog), (const GLubyte *) prog); - - assert(glIsProgramARB(prognum)); - errno = glGetError(); - printf("glGetError = %d\n", errno); - if (errno != GL_NO_ERROR) - { - glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &errorpos); - printf("errorpos: %d\n", errorpos); - printf("%s\n", (char *)glGetString(GL_PROGRAM_ERROR_STRING_ARB)); - - for (a=-10; a<10; a++) - { - if ((errorpos+a < 0) || (errorpos+a >= strlen(prog))) continue; - printf("%c", prog[errorpos+a]); - } - printf("\n"); - exit(1); - } -} - -static void Init( void ) -{ - static const char *prog0 = - "!!ARBfp1.0\n" - "TEMP R0, RC, HC, H0, H1, H2, H3, H30 ;\n" - "MUL result.color, R0, fragment.position; \n" - "ADD result.color, H3, fragment.texcoord; \n" - "ADD_SAT result.color, H3, fragment.texcoord; \n" - "MUL result.color.xy, R0.wzyx, fragment.position; \n" - "MUL result.color, H0, fragment.position; \n" - "MUL result.color, -H0, fragment.position; \n" - "MOV RC, H1; \n" - "MOV HC, H2; \n" - "END \n" - ; - /* masked updates, defines, declarations */ - static const char *prog1 = - "!!ARBfp1.0\n" - "PARAM foo = {1., 2., 3., 4.}; \n" - "PARAM foo2 = 5.; \n" - "PARAM foo3 = {5., 6., 7., 8.}; \n" - "PARAM bar = 3.; \n" - "TEMP R0, R1, RC, EQ, NE, bar2; \n" - "ALIAS bar3 = bar; \n" - "MOV result.color.xy, R0; \n" - "MOV result.color, R0; \n" - "MOV result.color.xyzw, R0; \n" - "MOV result.color.xy, R0; \n" - "MOV RC.x, R1.x; \n" - "KIL NE; \n" - "KIL EQ.xyxy; \n" - "END \n" - ; - - /* texture instructions */ - static const char *prog2 = - "!!ARBfp1.0\n" - "TEMP R0, R1, R2, R3;\n" - "TEX R0, fragment.texcoord, texture[0], 2D; \n" - "TEX R1, fragment.texcoord[1], texture[1], CUBE; \n" - "TEX R2, fragment.texcoord[2], texture[2], 3D; \n" - "TXP R3, fragment.texcoord[3], texture[3], RECT; \n" - "MUL result.color, R0, fragment.color; \n" - "END \n" - ; - - /* test negation, absolute value */ - static const char *prog3 = - "!!ARBfp1.0\n" - "TEMP R0, R1;\n" - "MOV R0, R1; \n" - "MOV R0, -R1; \n" - "MOV result.color, R0; \n" - "END \n" - ; - - /* literal constant sources */ - static const char *prog4 = - "!!ARBfp1.0\n" - "TEMP R0, R1;\n" - "PARAM Pi = 3.14159; \n" - "MOV R0, {1., -2., +3., 4.}; \n" - "MOV R0, 5.; \n" - "MOV R0, -5.; \n" - "MOV R0, 5.; \n" - "MOV R0, Pi; \n" - "MOV result.color, R0; \n" - "END \n" - ; - - /* change the fragment color in a simple way */ - static const char *prog10 = - "!!ARBfp1.0\n" - "PARAM blue = {0., 0., 1., 0.};\n" - "PARAM color = {1., 0., 0., 1.};\n" - "TEMP R0; \n" - "MOV R0, fragment.color; \n" - "#ADD result.color, R0, fragment.color; \n" - "#ADD result.color, blue, fragment.color; \n" - "#ADD result.color, {1., 0., 0., 0.}, fragment.color; \n" - "ADD result.color, color, fragment.color; \n" - "END \n" - ; - - GLuint progs[20]; - - glGenProgramsARB(20, progs); - assert(progs[0]); - assert(progs[1]); - assert(progs[0] != progs[1]); - - - printf("program 0:\n"); - load_program(prog0, progs[0]); - printf("program 1:\n"); - load_program(prog1, progs[1]); - printf("program 2:\n"); - load_program(prog2, progs[2]); - printf("program 3:\n"); - load_program(prog3, progs[3]); - printf("program 4:\n"); - load_program(prog4, progs[4]); - printf("program 10:\n"); - load_program(prog10, progs[5]); - - - glEnable(GL_FRAGMENT_PROGRAM_ARB); - glEnable(GL_ALPHA_TEST); - glAlphaFunc(GL_ALWAYS, 0.0); -} - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 250, 250 ); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH ); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/arbfptexture.c b/progs/tests/arbfptexture.c deleted file mode 100644 index f66b060cbb..0000000000 --- a/progs/tests/arbfptexture.c +++ /dev/null @@ -1,154 +0,0 @@ -/* GL_ARB_fragment_program texture test */ - -#include <assert.h> -#include <string.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - -#include "readtex.c" - - -#define TEXTURE_FILE "../images/girl.rgb" - -static GLfloat Xrot = 0.0, Yrot = 0.0, Zrot = 0.0; - - -static void Display( void ) -{ - glClear( GL_COLOR_BUFFER_BIT ); - - glPushMatrix(); - glRotatef(Xrot, 1.0, 0.0, 0.0); - glRotatef(Yrot, 0.0, 1.0, 0.0); - glRotatef(Zrot, 0.0, 0.0, 1.0); - - glBegin(GL_POLYGON); -#define Q 2 - glColor4f(1.0, 1.0, 1.0, 1); glTexCoord4f(0, 0, 0, Q); glVertex2f(-1, -1); - glColor4f(0.2, 0.2, 1.0, 1); glTexCoord4f(1, 0, 0, Q); glVertex2f( 1, -1); - glColor4f(0.2, 1.0, 0.2, 1); glTexCoord4f(1, 1, 0, Q); glVertex2f( 1, 1); - glColor4f(1.0, 0.2, 0.2, 1); glTexCoord4f(0, 1, 0, Q); glVertex2f(-1, 1); - glEnd(); - - glPopMatrix(); - - glutSwapBuffers(); -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -1.0, 1.0, -1.0, 1.0, 5.0, 25.0 ); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - glTranslatef( 0.0, 0.0, -8.0 ); -} - - -static void SpecialKey( int key, int x, int y ) -{ - float step = 3.0; - (void) x; - (void) y; - - switch (key) { - case GLUT_KEY_UP: - Xrot += step; - break; - case GLUT_KEY_DOWN: - Xrot -= step; - break; - case GLUT_KEY_LEFT: - Yrot += step; - break; - case GLUT_KEY_RIGHT: - Yrot -= step; - break; - } - glutPostRedisplay(); -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void Init( void ) -{ - static const char *modulate2D = - "!!ARBfp1.0\n" - "TEMP R0;\n" - "TEX R0, fragment.texcoord[0], texture[0], 2D; \n" - "MUL result.color, R0, fragment.color; \n" - "END" - ; - GLuint modulateProg; - GLuint Texture; - - if (!glutExtensionSupported("GL_ARB_fragment_program")) { - printf("Error: GL_ARB_fragment_program not supported!\n"); - exit(1); - } - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - - /* Setup the fragment program */ - glGenProgramsARB(1, &modulateProg); - glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, modulateProg); - glProgramStringARB(GL_FRAGMENT_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, - strlen(modulate2D), (const GLubyte *)modulate2D); - - printf("glGetError = 0x%x\n", (int) glGetError()); - printf("glError(GL_PROGRAM_ERROR_STRING_ARB) = %s\n", - (char *) glGetString(GL_PROGRAM_ERROR_STRING_ARB)); - assert(glIsProgramARB(modulateProg)); - - glEnable(GL_FRAGMENT_PROGRAM_ARB); - - /* Load texture */ - glGenTextures(1, &Texture); - glBindTexture(GL_TEXTURE_2D, Texture); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - if (!LoadRGBMipmaps(TEXTURE_FILE, GL_RGB)) { - printf("Error: couldn't load texture image file %s\n", TEXTURE_FILE); - exit(1); - } - /* XXX this enable shouldn't really be needed!!! */ - glEnable(GL_TEXTURE_2D); - - glClearColor(.3, .3, .3, 0); -} - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 250, 250 ); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH ); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutSpecialFunc( SpecialKey ); - glutDisplayFunc( Display ); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/arbfptrig.c b/progs/tests/arbfptrig.c deleted file mode 100644 index 95f008a078..0000000000 --- a/progs/tests/arbfptrig.c +++ /dev/null @@ -1,157 +0,0 @@ -/* GL_ARB_fragment_program texture test */ - -#include <assert.h> -#include <string.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - -#include "readtex.c" - - -#define TEXTURE_FILE "../images/girl.rgb" - -static GLfloat Xrot = 0.0, Yrot = 0.0, Zrot = 0.0; - -#define PI 3.141592 - -static void Display( void ) -{ - glClear( GL_COLOR_BUFFER_BIT ); - - glPushMatrix(); - glRotatef(Xrot, 1.0, 0.0, 0.0); - glRotatef(Yrot, 0.0, 1.0, 0.0); - glRotatef(Zrot, 0.0, 0.0, 1.0); - - glBegin(GL_POLYGON); - glTexCoord2f(-PI, 0); glVertex2f(-1, -1); - glTexCoord2f(PI, 0); glVertex2f( 1, -1); - glTexCoord2f(PI, 1); glVertex2f( 1, 1); - glTexCoord2f(-PI, 1); glVertex2f(-1, 1); - glEnd(); - - glPopMatrix(); - - glutSwapBuffers(); -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -1.0, 1.0, -1.0, 1.0, 5.0, 25.0 ); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - glTranslatef( 0.0, 0.0, -8.0 ); -} - - -static void SpecialKey( int key, int x, int y ) -{ - float step = 3.0; - (void) x; - (void) y; - - switch (key) { - case GLUT_KEY_UP: - Xrot += step; - break; - case GLUT_KEY_DOWN: - Xrot -= step; - break; - case GLUT_KEY_LEFT: - Yrot += step; - break; - case GLUT_KEY_RIGHT: - Yrot -= step; - break; - } - glutPostRedisplay(); -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void Init( void ) -{ - static const char *modulate2D = - "!!ARBfp1.0\n" - "TEMP R0;\n" - "MOV R0, {0,0,0,1};\n" - "SCS R0, fragment.texcoord[0].x; \n" - "ADD R0, R0, {1.0}.x;\n" - "MUL R0, R0, {0.5}.x;\n" - "MOV result.color, R0; \n" - "END" - ; - GLuint modulateProg; - GLuint Texture; - - if (!glutExtensionSupported("GL_ARB_fragment_program")) { - printf("Error: GL_ARB_fragment_program not supported!\n"); - exit(1); - } - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - - /* Setup the fragment program */ - glGenProgramsARB(1, &modulateProg); - glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, modulateProg); - glProgramStringARB(GL_FRAGMENT_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, - strlen(modulate2D), (const GLubyte *)modulate2D); - - printf("glGetError = 0x%x\n", (int) glGetError()); - printf("glError(GL_PROGRAM_ERROR_STRING_ARB) = %s\n", - (char *) glGetString(GL_PROGRAM_ERROR_STRING_ARB)); - assert(glIsProgramARB(modulateProg)); - - glEnable(GL_FRAGMENT_PROGRAM_ARB); - - /* Load texture */ - glGenTextures(1, &Texture); - glBindTexture(GL_TEXTURE_2D, Texture); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - if (!LoadRGBMipmaps(TEXTURE_FILE, GL_RGB)) { - printf("Error: couldn't load texture image file %s\n", TEXTURE_FILE); - exit(1); - } - /* XXX this enable shouldn't really be needed!!! */ - glEnable(GL_TEXTURE_2D); - - glClearColor(.3, .3, .3, 0); -} - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 250, 250 ); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH ); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutSpecialFunc( SpecialKey ); - glutDisplayFunc( Display ); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/arbgpuprog.c b/progs/tests/arbgpuprog.c deleted file mode 100644 index 6098dca787..0000000000 --- a/progs/tests/arbgpuprog.c +++ /dev/null @@ -1,234 +0,0 @@ -/** - * Just compile ARB vert/frag program from named file(s). - */ - -#include <assert.h> -#include <string.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glut.h> - - -static GLuint FragProg; -static GLuint VertProg; -static GLint Win; - -static PFNGLPROGRAMLOCALPARAMETER4FVARBPROC glProgramLocalParameter4fvARB_func; -static PFNGLPROGRAMLOCALPARAMETER4DARBPROC glProgramLocalParameter4dARB_func; -static PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC glGetProgramLocalParameterdvARB_func; -static PFNGLGENPROGRAMSARBPROC glGenProgramsARB_func; -static PFNGLPROGRAMSTRINGARBPROC glProgramStringARB_func; -static PFNGLBINDPROGRAMARBPROC glBindProgramARB_func; -static PFNGLISPROGRAMARBPROC glIsProgramARB_func; -static PFNGLDELETEPROGRAMSARBPROC glDeleteProgramsARB_func; - - -static void Redisplay( void ) -{ - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - glutSwapBuffers(); - exit(0); -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -1.0, 1.0, -1.0, 1.0, 5.0, 25.0 ); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - glTranslatef( 0.0, 0.0, -15.0 ); -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - glDeleteProgramsARB_func(1, &VertProg); - glDeleteProgramsARB_func(1, &FragProg); - glutDestroyWindow(Win); - exit(0); - break; - } - glutPostRedisplay(); -} - - -/* A helper for finding errors in program strings */ -static int FindLine( const char *program, int position ) -{ - int i, line = 1; - for (i = 0; i < position; i++) { - if (program[i] == '\n') - line++; - } - return line; -} - - -static void Init( const char *vertProgFile, - const char *fragProgFile ) -{ - GLint errorPos; - char buf[10*1000]; - - if (!glutExtensionSupported("GL_ARB_vertex_program")) { - printf("Sorry, this demo requires GL_ARB_vertex_program\n"); - exit(1); - } - if (!glutExtensionSupported("GL_ARB_fragment_program")) { - printf("Sorry, this demo requires GL_ARB_fragment_program\n"); - exit(1); - } - - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - - /* - * Get extension function pointers. - */ - glProgramLocalParameter4fvARB_func = (PFNGLPROGRAMLOCALPARAMETER4FVARBPROC) glutGetProcAddress("glProgramLocalParameter4fvARB"); - assert(glProgramLocalParameter4fvARB_func); - - glProgramLocalParameter4dARB_func = (PFNGLPROGRAMLOCALPARAMETER4DARBPROC) glutGetProcAddress("glProgramLocalParameter4dARB"); - assert(glProgramLocalParameter4dARB_func); - - glGetProgramLocalParameterdvARB_func = (PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC) glutGetProcAddress("glGetProgramLocalParameterdvARB"); - assert(glGetProgramLocalParameterdvARB_func); - - glGenProgramsARB_func = (PFNGLGENPROGRAMSARBPROC) glutGetProcAddress("glGenProgramsARB"); - assert(glGenProgramsARB_func); - - glProgramStringARB_func = (PFNGLPROGRAMSTRINGARBPROC) glutGetProcAddress("glProgramStringARB"); - assert(glProgramStringARB_func); - - glBindProgramARB_func = (PFNGLBINDPROGRAMARBPROC) glutGetProcAddress("glBindProgramARB"); - assert(glBindProgramARB_func); - - glIsProgramARB_func = (PFNGLISPROGRAMARBPROC) glutGetProcAddress("glIsProgramARB"); - assert(glIsProgramARB_func); - - glDeleteProgramsARB_func = (PFNGLDELETEPROGRAMSARBPROC) glutGetProcAddress("glDeleteProgramsARB"); - assert(glDeleteProgramsARB_func); - - /* - * Vertex program - */ - if (vertProgFile) { - FILE *f; - int len; - - glGenProgramsARB_func(1, &VertProg); - assert(VertProg > 0); - glBindProgramARB_func(GL_VERTEX_PROGRAM_ARB, VertProg); - - f = fopen(vertProgFile, "r"); - if (!f) { - printf("Unable to open %s\n", fragProgFile); - exit(1); - } - - len = fread(buf, 1, 10*1000,f); - fclose(f); - - glProgramStringARB_func(GL_VERTEX_PROGRAM_ARB, - GL_PROGRAM_FORMAT_ASCII_ARB, - len, - (const GLubyte *) buf); - - glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &errorPos); - if (glGetError() != GL_NO_ERROR || errorPos != -1) { - int l = FindLine(buf, errorPos); - printf("Vertex Program Error (pos=%d line=%d): %s\n", errorPos, l, - (char *) glGetString(GL_PROGRAM_ERROR_STRING_ARB)); - exit(0); - } - else { - glEnable(GL_VERTEX_PROGRAM_ARB); - printf("Vertex Program OK\n"); - } - } - - /* - * Fragment program - */ - if (fragProgFile) { - FILE *f; - int len; - - glGenProgramsARB_func(1, &FragProg); - assert(FragProg > 0); - glBindProgramARB_func(GL_FRAGMENT_PROGRAM_ARB, FragProg); - - f = fopen(fragProgFile, "r"); - if (!f) { - printf("Unable to open %s\n", fragProgFile); - exit(1); - } - - len = fread(buf, 1, 10*1000,f); - fclose(f); - - glProgramStringARB_func(GL_FRAGMENT_PROGRAM_ARB, - GL_PROGRAM_FORMAT_ASCII_ARB, - len, - (const GLubyte *) buf); - - glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &errorPos); - if (glGetError() != GL_NO_ERROR || errorPos != -1) { - int l = FindLine(buf, errorPos); - printf("Fragment Program Error (pos=%d line=%d): %s\n", errorPos, l, - (char *) glGetString(GL_PROGRAM_ERROR_STRING_ARB)); - exit(0); - } - else { - glEnable(GL_FRAGMENT_PROGRAM_ARB); - printf("Fragment Program OK\n"); - } - } -} - - -int main( int argc, char *argv[] ) -{ - const char *vertProgFile = NULL, *fragProgFile = NULL; - int i; - - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 200, 200 ); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH ); - Win = glutCreateWindow(argv[0]); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Redisplay ); - - if (argc == 1) { - printf("arbgpuprog:\n"); - printf(" Compile GL_ARB_vertex/fragment_programs, report any errors.\n"); - printf("Usage:\n"); - printf(" arbgpuprog [--vp vertprogfile] [--fp fragprogfile]\n"); - exit(1); - } - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "--vp") == 0) { - vertProgFile = argv[i+1]; - i++; - } - else if (strcmp(argv[i], "--fp") == 0) { - fragProgFile = argv[i+1]; - i++; - } - } - - Init(vertProgFile, fragProgFile); - - glutMainLoop(); - return 0; -} diff --git a/progs/tests/arbnpot-mipmap.c b/progs/tests/arbnpot-mipmap.c deleted file mode 100644 index 700ec0b09d..0000000000 --- a/progs/tests/arbnpot-mipmap.c +++ /dev/null @@ -1,186 +0,0 @@ - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -/* mipmap.c - * This program demonstrates using mipmaps for texture maps. - * To overtly show the effect of mipmaps, each mipmap reduction - * level has a solidly colored, contrasting texture image. - * Thus, the quadrilateral which is drawn is drawn with several - * different colors. - */ -#include <stdlib.h> -#include <stdio.h> -#include <GL/glew.h> -#include <GL/glut.h> - -GLubyte mipmapImage32[40][46][3]; -GLubyte mipmapImage16[20][23][3]; -GLubyte mipmapImage8[10][11][3]; -GLubyte mipmapImage4[5][5][3]; -GLubyte mipmapImage2[2][2][3]; -GLubyte mipmapImage1[1][1][3]; - -static void makeImages(void) -{ - int i, j; - - for (i = 0; i < 40; i++) { - for (j = 0; j < 46; j++) { - mipmapImage32[i][j][0] = 255; - mipmapImage32[i][j][1] = 255; - mipmapImage32[i][j][2] = 0; - } - } - for (i = 0; i < 20; i++) { - for (j = 0; j < 23; j++) { - mipmapImage16[i][j][0] = 255; - mipmapImage16[i][j][1] = 0; - mipmapImage16[i][j][2] = 255; - } - } - for (i = 0; i < 10; i++) { - for (j = 0; j < 11; j++) { - mipmapImage8[i][j][0] = 255; - mipmapImage8[i][j][1] = 0; - mipmapImage8[i][j][2] = 0; - } - } - for (i = 0; i < 5; i++) { - for (j = 0; j < 5; j++) { - mipmapImage4[i][j][0] = 0; - mipmapImage4[i][j][1] = 255; - mipmapImage4[i][j][2] = 0; - } - } - for (i = 0; i < 2; i++) { - for (j = 0; j < 2; j++) { - mipmapImage2[i][j][0] = 0; - mipmapImage2[i][j][1] = 0; - mipmapImage2[i][j][2] = 255; - } - } - mipmapImage1[0][0][0] = 255; - mipmapImage1[0][0][1] = 255; - mipmapImage1[0][0][2] = 255; -} - -static void myinit(void) -{ - if (!glutExtensionSupported("GL_ARB_texture_non_power_of_two")) { - printf("Sorry, this program requires GL_ARB_texture_non_power_of_two\n"); - exit(1); - } - - glEnable(GL_DEPTH_TEST); - glDepthFunc(GL_LESS); - glShadeModel(GL_FLAT); - - glTranslatef(0.0, 0.0, -3.6); - makeImages(); - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glTexImage2D(GL_TEXTURE_2D, 0, 3, 40, 46, 0, - GL_RGB, GL_UNSIGNED_BYTE, &mipmapImage32[0][0][0]); - glTexImage2D(GL_TEXTURE_2D, 1, 3, 20, 23, 0, - GL_RGB, GL_UNSIGNED_BYTE, &mipmapImage16[0][0][0]); - glTexImage2D(GL_TEXTURE_2D, 2, 3, 10, 11, 0, - GL_RGB, GL_UNSIGNED_BYTE, &mipmapImage8[0][0][0]); - glTexImage2D(GL_TEXTURE_2D, 3, 3, 5, 5, 0, - GL_RGB, GL_UNSIGNED_BYTE, &mipmapImage4[0][0][0]); - glTexImage2D(GL_TEXTURE_2D, 4, 3, 2, 2, 0, - GL_RGB, GL_UNSIGNED_BYTE, &mipmapImage2[0][0][0]); - glTexImage2D(GL_TEXTURE_2D, 5, 3, 1, 1, 0, - GL_RGB, GL_UNSIGNED_BYTE, &mipmapImage1[0][0][0]); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, - GL_NEAREST_MIPMAP_NEAREST); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); - glEnable(GL_TEXTURE_2D); -} - -static void display(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glBegin(GL_QUADS); - glTexCoord2f(0.0, 0.0); glVertex3f(-2.0, -1.0, 0.0); - glTexCoord2f(0.0, 8.0); glVertex3f(-2.0, 1.0, 0.0); - glTexCoord2f(8.0, 8.0); glVertex3f(2000.0, 1.0, -6000.0); - glTexCoord2f(8.0, 0.0); glVertex3f(2000.0, -1.0, -6000.0); - glEnd(); - glFlush(); -} - -static void myReshape(int w, int h) -{ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(60.0, 1.0*(GLfloat)w/(GLfloat)h, 1.0, 30000.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -static void -key(unsigned char k, int x, int y) -{ - switch (k) { - case 27: /* Escape */ - exit(0); - break; - default: - return; - } - glutPostRedisplay(); -} - -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); - glutInitWindowSize (500, 500); - glutCreateWindow (argv[0]); - glewInit(); - myinit(); - glutReshapeFunc (myReshape); - glutDisplayFunc(display); - glutKeyboardFunc(key); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/progs/tests/arbnpot.c b/progs/tests/arbnpot.c deleted file mode 100644 index c51a541641..0000000000 --- a/progs/tests/arbnpot.c +++ /dev/null @@ -1,199 +0,0 @@ -/* - * Test NPOT textures with the GL_ARB_texture_non_power_of_two extension. - * Brian Paul - * 2 July 2003 - */ - -#include <assert.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> -#include "../util/readtex.c" - -#define IMAGE_FILE "../images/girl.rgb" - -static GLfloat Zrot = 0; - -static void Display( void ) -{ - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - glPushMatrix(); - glRotatef(Zrot, 0, 0, 1); - glBegin(GL_POLYGON); - glTexCoord2f(0, 0); - glVertex2f(-1, -1); - glTexCoord2f(1, 0); - glVertex2f(1, -1); - glTexCoord2f(1, 1); - glVertex2f(1, 1); - glTexCoord2f(0, 1); - glVertex2f(-1, 1); - glEnd(); - glPopMatrix(); - - glutSwapBuffers(); -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -1.0, 1.0, -1.0, 1.0, 5.0, 25.0 ); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - glTranslatef( 0.0, 0.0, -7.0 ); -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 'z': - Zrot -= 1.0; - break; - case 'Z': - Zrot += 1.0; - break; - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void Init( void ) -{ - GLubyte *image; - int imgWidth, imgHeight, minDim, w; - GLenum imgFormat; - - if (!glutExtensionSupported("GL_ARB_texture_non_power_of_two")) { - printf("Sorry, this program requires GL_ARB_texture_non_power_of_two\n"); - exit(1); - } - -#if 1 - image = LoadRGBImage( IMAGE_FILE, &imgWidth, &imgHeight, &imgFormat ); - if (!image) { - printf("Couldn't read %s\n", IMAGE_FILE); - exit(0); - } -#else - int i, j; - imgFormat = GL_RGB; - imgWidth = 3; - imgHeight = 3; - image = malloc(imgWidth * imgHeight * 3); - for (i = 0; i < imgHeight; i++) { - for (j = 0; j < imgWidth; j++) { - int k = (i * imgWidth + j) * 3; - if ((i + j) & 1) { - image[k+0] = 255; - image[k+1] = 0; - image[k+2] = 0; - } - else { - image[k+0] = 0; - image[k+1] = 255; - image[k+2] = 0; - } - } - } -#endif - - printf("Read %d x %d\n", imgWidth, imgHeight); - - minDim = imgWidth < imgHeight ? imgWidth : imgHeight; - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - - /* - * 1D Texture. Test proxy first, if that works, test non-proxy target. - */ - glTexImage1D(GL_PROXY_TEXTURE_1D, 0, GL_RGB, imgWidth, 0, - imgFormat, GL_UNSIGNED_BYTE, image); - glGetTexLevelParameteriv(GL_PROXY_TEXTURE_1D, 0, GL_TEXTURE_WIDTH, &w); - assert(w == imgWidth || w == 0); - - if (w) { - glTexImage1D(GL_TEXTURE_1D, 0, GL_RGB, imgWidth, 0, - imgFormat, GL_UNSIGNED_BYTE, image); - assert(glGetError() == GL_NO_ERROR); - } - - - /* - * 2D Texture - */ - glTexImage2D(GL_PROXY_TEXTURE_2D, 0, GL_RGB, imgWidth, imgHeight, 0, - imgFormat, GL_UNSIGNED_BYTE, image); - glGetTexLevelParameteriv(GL_PROXY_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, &w); - assert(w == imgWidth || w == 0); - - if (w) { - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, imgWidth, imgHeight, 0, - imgFormat, GL_UNSIGNED_BYTE, image); - assert(glGetError() == GL_NO_ERROR); - } - - - /* - * 3D Texture - */ - glTexImage3D(GL_PROXY_TEXTURE_3D, 0, GL_RGB, imgWidth, imgHeight, 1, 0, - imgFormat, GL_UNSIGNED_BYTE, image); - glGetTexLevelParameteriv(GL_PROXY_TEXTURE_3D, 0, GL_TEXTURE_WIDTH, &w); - assert(w == imgWidth || w == 0); - - if (w) { - glTexImage3D(GL_TEXTURE_3D, 0, GL_RGB, imgWidth, imgHeight, 1, 0, - imgFormat, GL_UNSIGNED_BYTE, image); - assert(glGetError() == GL_NO_ERROR); - } - - - /* - * Cube Texture - */ - glTexImage2D(GL_PROXY_TEXTURE_CUBE_MAP, 0, GL_RGB, - minDim, minDim, 0, - imgFormat, GL_UNSIGNED_BYTE, image); - glGetTexLevelParameteriv(GL_PROXY_TEXTURE_CUBE_MAP, 0, GL_TEXTURE_WIDTH, &w); - assert(w == minDim || w == 0); - - if (w) { - glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGB, - minDim, minDim, 0, - imgFormat, GL_UNSIGNED_BYTE, image); - assert(glGetError() == GL_NO_ERROR); - } - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glEnable(GL_TEXTURE_2D); -} - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 400, 400 ); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH ); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/arbvptest1.c b/progs/tests/arbvptest1.c deleted file mode 100644 index 3a6d71a42b..0000000000 --- a/progs/tests/arbvptest1.c +++ /dev/null @@ -1,165 +0,0 @@ -/* Test glGenProgramsARB(), glIsProgramARB(), glLoadProgramARB() */ - -#include <assert.h> -#include <string.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - -static void Display( void ) -{ - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - glPushMatrix(); - - glBegin(GL_POLYGON); - glVertexAttrib2fARB(0, -1, -1); - glVertexAttrib2fARB(0, 1, -1); - glVertexAttrib2fARB(0, 0, 1); - glEnd(); - - glPopMatrix(); - - glutSwapBuffers(); -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -1.0, 1.0, -1.0, 1.0, 5.0, 25.0 ); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - glTranslatef( 0.0, 0.0, -15.0 ); -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - -static void load_program(const char *prog, GLuint prognum) -{ - int a; - GLint errorpos, errno; - - glBindProgramARB(GL_VERTEX_PROGRAM_ARB, prognum); - glProgramStringARB(GL_VERTEX_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, - strlen(prog), (const GLubyte *) prog); - - assert(glIsProgramARB(prognum)); - errno = glGetError(); - printf("glGetError = %d\n", errno); - if (errno != GL_NO_ERROR) - { - glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &errorpos); - printf("errorpos: %d\n", errorpos); - printf("%s\n", (char *)glGetString(GL_PROGRAM_ERROR_STRING_ARB)); - - for (a=-10; a<10; a++) - { - if ((errorpos+a < 0) || (errorpos+a >= strlen(prog))) continue; - printf("%c", prog[errorpos+a]); - } - printf("\n"); - exit(1); - } -} - -static void Init( void ) -{ - GLuint prognum[4]; - - static const char *prog1 = - "!!ARBvp1.0\n" - "TEMP R0;\n" - "MUL result.color.primary.xyz, R0, program.local[35]; \n" - "END\n"; - static const char *prog2 = - "!!ARBvp1.0\n" - "#\n" - "# c[0-3] = modelview projection (composite) matrix\n" - "# c[32] = normalized light direction in object-space\n" - "# c[35] = yellow diffuse material, (1.0, 1.0, 0.0, 1.0)\n" - "# c[64].x = 0.0\n" - "# c[64].z = 0.125, a scaling factor\n" - "TEMP R0, R1;\n" - "#\n" - "# outputs diffuse illumination for color and perturbed position\n" - "#\n" - "DP3 R0, program.local[32], vertex.normal; # light direction DOT normal\n" - "MUL result.color.primary.xyz, R0, program.local[35]; \n" - "MAX R0, program.local[64].x, R0; \n" - "MUL R0, R0, vertex.normal; \n" - "MUL R0, R0, program.local[64].z; \n" - "ADD R1, vertex.position, -R0; # perturb object space position\n" - "DP4 result.position.x, state.matrix.mvp.row[3], R1; \n" - "DP4 result.position.y, state.matrix.mvp.row[1], R1; \n" - "DP4 result.position.z, state.matrix.mvp.row[2], R1; \n" - "DP4 result.position.w, state.matrix.mvp.row[3], R1; \n" - "END\n"; - static const char *prog3 = - "!!ARBvp1.0\n" - "TEMP R0, R1, R2, R3;\n" - "DP4 result.position.x, state.matrix.mvp.row[0], vertex.position;\n" - "DP4 result.position.y, state.matrix.mvp.row[1], vertex.position;\n" - "DP4 result.position.z, state.matrix.mvp.row[2], vertex.position;\n" - "DP4 result.position.w, state.matrix.mvp.row[3], vertex.position;\n" - "DP3 R0.x, state.matrix.modelview.inverse.row[0], vertex.normal;\n" - "DP3 R0.y, state.matrix.modelview.inverse.row[1], vertex.normal;\n" - "DP3 R0.z, state.matrix.modelview.inverse.row[2], vertex.normal;\n" - "DP3 R1.x, program.env[32], R0; # R1.x = Lpos DOT n'\n" - "DP3 R1.y, program.env[33], R0; # R1.y = hHat DOT n'\n" - "MOV R1.w, program.local[38].x; # R1.w = specular power\n" - "LIT R2, R1; # Compute lighting values\n" - "MAD R3, program.env[35].x, R2.y, program.env[35].y; # diffuse + emissive\n" - "MAD result.color.primary.xyz, program.env[36], R2.z, R3; # + specular\n" - "END\n"; - static const char *prog4 = - "!!ARBvp1.0\n" - "TEMP R2, R3;\n" - "PARAM foo = {0., 0., 0., 1.};\n" - "PARAM blah[] = { program.local[0..8] };\n" - "ADDRESS A0;\n" - "ARL A0.x, foo.x;\n" - "DP4 R2, R3, blah[A0.x].x;\n" - "DP4 R2, R3, blah[A0.x + 5];\n" - "DP4 result.position, R3, blah[A0.x - 4];\n" - "END\n"; - - glGenProgramsARB(4, prognum); - - load_program(prog1, prognum[0]); - load_program(prog2, prognum[1]); - load_program(prog3, prognum[2]); - load_program(prog4, prognum[3]); -} - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 250, 250 ); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH ); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/arbvptest3.c b/progs/tests/arbvptest3.c deleted file mode 100644 index 56de7b4696..0000000000 --- a/progs/tests/arbvptest3.c +++ /dev/null @@ -1,128 +0,0 @@ - -#include <assert.h> -#include <string.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - -static float Zrot = 0.0; - - -static void Display( void ) -{ - glClearColor(0.3, 0.3, 0.3, 1); - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - glEnable(GL_VERTEX_PROGRAM_ARB); - - glLoadIdentity(); - glRotatef(Zrot, 0, 0, 1); - - glPushMatrix(); - - glVertexAttrib3fARB(3, 1, 0.5, 0.25); - glBegin(GL_TRIANGLES); -#if 1 - glVertexAttrib3fARB(3, 1.0, 0.0, 0.0); - glVertexAttrib2fARB(0, -0.5, -0.5); - glVertexAttrib3fARB(3, 0.0, 1.0, 0.0); - glVertexAttrib2fARB(0, 0.5, -0.5); - glVertexAttrib3fARB(3, 0.0, 0.0, 1.0); - glVertexAttrib2fARB(0, 0, 0.5); -#else - glVertex2f( -1, -1); - glVertex2f( 1, -1); - glVertex2f( 0, 1); -#endif - glEnd(); - - glPopMatrix(); - - glutSwapBuffers(); -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - /* glFrustum( -2.0, 2.0, -2.0, 2.0, 5.0, 25.0 );*/ - glOrtho(-2.0, 2.0, -2.0, 2.0, -2.0, 2.0 ); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - /*glTranslatef( 0.0, 0.0, -15.0 );*/ -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 'z': - Zrot -= 5.0; - break; - case 'Z': - Zrot += 5.0; - break; - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void Init( void ) -{ - GLint errno; - GLuint prognum; - - static const char *prog1 = - "!!ARBvp1.0\n" - "MOV result.color, vertex.attrib[3];\n" - - "DP4 result.position.x, vertex.position, state.matrix.modelview.row[0];\n" - "DP4 result.position.y, vertex.position, state.matrix.modelview.row[1];\n" - "DP4 result.position.z, vertex.position, state.matrix.modelview.row[2];\n" - "DP4 result.position.w, vertex.position, state.matrix.modelview.row[3];\n" - "END\n"; - - glGenProgramsARB(1, &prognum); - - glBindProgramARB(GL_VERTEX_PROGRAM_ARB, prognum); - glProgramStringARB(GL_VERTEX_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, - strlen(prog1), (const GLubyte *) prog1); - - assert(glIsProgramARB(prognum)); - errno = glGetError(); - printf("glGetError = %d\n", errno); - if (errno != GL_NO_ERROR) - { - GLint errorpos; - - glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &errorpos); - printf("errorpos: %d\n", errorpos); - printf("%s\n", (char *)glGetString(GL_PROGRAM_ERROR_STRING_ARB)); - } -} - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 250, 250 ); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH ); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/arbvptorus.c b/progs/tests/arbvptorus.c deleted file mode 100644 index f1f84d8774..0000000000 --- a/progs/tests/arbvptorus.c +++ /dev/null @@ -1,187 +0,0 @@ -/* - * A lit, rotating torus via vertex program - */ - -#include <assert.h> -#include <string.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - -static float Xrot = 0.0, Yrot = 0.0, Zrot = 0.0; -static GLboolean Anim = GL_TRUE; - - -static void Idle( void ) -{ - Xrot += .3; - Yrot += .4; - Zrot += .2; - glutPostRedisplay(); -} - - -static void Display( void ) -{ - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - glPushMatrix(); - glRotatef(Xrot, 1, 0, 0); - glRotatef(Yrot, 0, 1, 0); - glRotatef(Zrot, 0, 0, 1); - glutSolidTorus(0.75, 2.0, 10, 20); - glPopMatrix(); - - glutSwapBuffers(); -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -2.0, 2.0, -2.0, 2.0, 5.0, 25.0 ); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - glTranslatef( 0.0, 0.0, -12.0 ); -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case ' ': - Xrot = Yrot = Zrot = 0; - break; - case 'a': - Anim = !Anim; - if (Anim) - glutIdleFunc(Idle); - else - glutIdleFunc(NULL); - break; - case 'z': - Zrot -= 5.0; - break; - case 'Z': - Zrot += 5.0; - break; - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void SpecialKey( int key, int x, int y ) -{ - const GLfloat step = 3.0; - (void) x; - (void) y; - switch (key) { - case GLUT_KEY_UP: - Xrot -= step; - break; - case GLUT_KEY_DOWN: - Xrot += step; - break; - case GLUT_KEY_LEFT: - Yrot -= step; - break; - case GLUT_KEY_RIGHT: - Yrot += step; - break; - } - glutPostRedisplay(); -} - - -static void Init( void ) -{ - GLint errno; - GLuint prognum; - - /* borrowed from an nvidia demo: - * c[0..3] = modelview matrix - * c[4..7] = invtrans modelview matrix - * c[32] = light pos - * c[35] = diffuse color - */ - static const char prog[] = - "!!ARBvp1.0\n" - "OPTION ARB_position_invariant ;" - "TEMP R0, R1; \n" - - "# normal x MV-1T -> lighting normal\n" - "DP3 R1.x, state.matrix.modelview.invtrans.row[0], vertex.normal ;\n" - "DP3 R1.y, state.matrix.modelview.invtrans.row[1], vertex.normal;\n" - "DP3 R1.z, state.matrix.modelview.invtrans.row[2], vertex.normal;\n" - - "DP3 R0, program.local[32], R1; # L.N\n" -#if 0 - "MUL result.color.xyz, R0, program.local[35] ; # col = L.N * diffuse\n" -#else - "MUL result.color.primary.xyz, R0, program.local[35] ; # col = L.N * diffuse\n" -#endif - "MOV result.texcoord, vertex.texcoord;\n" - "END"; - - if (!glutExtensionSupported("GL_ARB_vertex_program")) { - printf("Sorry, this program requires GL_ARB_vertex_program"); - exit(1); - } - - - glGenProgramsARB(1, &prognum); - - glBindProgramARB(GL_VERTEX_PROGRAM_ARB, prognum); - glProgramStringARB(GL_VERTEX_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, - strlen(prog), (const GLubyte *) prog); - - assert(glIsProgramARB(prognum)); - errno = glGetError(); - printf("glGetError = %d\n", errno); - if (errno != GL_NO_ERROR) - { - GLint errorpos; - - glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &errorpos); - printf("errorpos: %d\n", errorpos); - printf("%s\n", (char *)glGetString(GL_PROGRAM_ERROR_STRING_ARB)); - } - - /* Light position */ - glProgramLocalParameter4fARB(GL_VERTEX_PROGRAM_ARB, 32, 2, 2, 4, 1); - /* Diffuse material color */ - glProgramLocalParameter4fARB(GL_VERTEX_PROGRAM_ARB, 35, 0.25, 0, 0.25, 1); - - glEnable(GL_VERTEX_PROGRAM_ARB); - glEnable(GL_DEPTH_TEST); - glClearColor(0.3, 0.3, 0.3, 1); -} - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 250, 250 ); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH ); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutSpecialFunc( SpecialKey ); - glutDisplayFunc( Display ); - if (Anim) - glutIdleFunc(Idle); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/arbvpwarpmesh.c b/progs/tests/arbvpwarpmesh.c deleted file mode 100644 index 973a157409..0000000000 --- a/progs/tests/arbvpwarpmesh.c +++ /dev/null @@ -1,247 +0,0 @@ -/* - * Warp a triangle mesh with a vertex program. - */ - -#include <assert.h> -#include <string.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - -static float Xrot = -60.0, Yrot = 0.0, Zrot = 0.0; -static GLboolean Anim = GL_TRUE; -static GLfloat Phi = 0.0; - - -static void Idle( void ) -{ - Phi += 0.01; - glutPostRedisplay(); -} - - -static void DrawMesh( int rows, int cols ) -{ - static const GLfloat colorA[3] = { 0, 1, 0 }; - static const GLfloat colorB[3] = { 0, 0, 1 }; - const float dx = 2.0 / (cols - 1); - const float dy = 2.0 / (rows - 1); - float x, y; - int i, j; - -#if 1 -#define COLOR3FV(c) glVertexAttrib3fvARB(3, c) -#define VERTEX2F(x, y) glVertexAttrib2fARB(0, x, y) -#else -#define COLOR3FV(c) glColor3fv(c) -#define VERTEX2F(x, y) glVertex2f(x, y) -#endif - - y = -1.0; - for (i = 0; i < rows - 1; i++) { - glBegin(GL_QUAD_STRIP); - x = -1.0; - for (j = 0; j < cols; j++) { - if ((i + j) & 1) - COLOR3FV(colorA); - else - COLOR3FV(colorB); - VERTEX2F(x, y); - VERTEX2F(x, y + dy); - x += dx; - } - glEnd(); - y += dy; - } -} - - -static void Display( void ) -{ - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - glPushMatrix(); - glRotatef(Xrot, 1, 0, 0); - glRotatef(Yrot, 0, 1, 0); - glRotatef(Zrot, 0, 0, 1); - - /* Position the gravity source */ - { - GLfloat x, y, z, r = 0.5; - x = r * cos(Phi); - y = r * sin(Phi); - z = 1.0; - glProgramLocalParameter4fARB(GL_VERTEX_PROGRAM_ARB, 30, x, y, z, 1); - glDisable(GL_VERTEX_PROGRAM_ARB); - glBegin(GL_POINTS); - glColor3f(1,1,1); - glVertex3f(x, y, z); - glEnd(); - } - - glEnable(GL_VERTEX_PROGRAM_ARB); - DrawMesh(8, 8); - glPopMatrix(); - - glutSwapBuffers(); -} - - -static void Reshape( int width, int height ) -{ - float ar = (float) width / (float) height; - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -1.0 * ar, 1.0 * ar, -1.0, 1.0, 5.0, 25.0 ); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - glTranslatef( 0.0, 0.0, -12.0 ); - glScalef(2, 2, 2); -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 'a': - Anim = !Anim; - if (Anim) - glutIdleFunc(Idle); - else - glutIdleFunc(NULL); - break; - case 'p': - Phi += 0.2; - break; - case 'z': - Zrot -= 5.0; - break; - case 'Z': - Zrot += 5.0; - break; - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void SpecialKey( int key, int x, int y ) -{ - const GLfloat step = 3.0; - (void) x; - (void) y; - switch (key) { - case GLUT_KEY_UP: - Xrot -= step; - break; - case GLUT_KEY_DOWN: - Xrot += step; - break; - case GLUT_KEY_LEFT: - Yrot -= step; - break; - case GLUT_KEY_RIGHT: - Yrot += step; - break; - } - glutPostRedisplay(); -} - - -static void Init( void ) -{ - GLuint prognum; - GLint errno; - - /* - * c[0..3] = modelview matrix - * c[4..7] = inverse modelview matrix - * c[30] = gravity source location - * c[31] = gravity source strength - * c[32] = light pos - * c[35] = diffuse color - */ - static const char prog[] = - "!!ARBvp1.0\n" - "TEMP R1, R2, R3; " - - "# Compute distance from vertex to gravity source\n" - "ADD R1, program.local[30], -vertex.position; # vector from vertex to gravity\n" - "DP3 R2, R1, R1; # dot product\n" - "RSQ R2, R2.x; # square root = distance\n" - "MUL R2, R2, program.local[31].xxxx; # scale by the gravity factor\n" - - "# Displace vertex by gravity factor along R1 vector\n" - "MAD R3, R1, R2, vertex.position;\n" - - "# Continue with typical modelview/projection\n" - "DP4 result.position.x, state.matrix.mvp.row[0], R3 ; # object x MVP -> clip\n" - "DP4 result.position.y, state.matrix.mvp.row[1], R3 ;\n" - "DP4 result.position.z, state.matrix.mvp.row[2], R3 ;\n" - "DP4 result.position.w, state.matrix.mvp.row[3], R3 ;\n" - - "MOV result.color, vertex.attrib[3];\n # copy input color to output color\n" - - "END"; - - if (!glutExtensionSupported("GL_ARB_vertex_program")) { - printf("Sorry, this program requires GL_ARB_vertex_program\n"); - exit(1); - } - - glGenProgramsARB(1, &prognum); - glBindProgramARB(GL_VERTEX_PROGRAM_ARB, prognum); - glProgramStringARB(GL_VERTEX_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, - strlen(prog), (const GLubyte *)prog); - errno = glGetError(); - printf("glGetError = %d\n", errno); - - if (errno != GL_NO_ERROR) - { - GLint errorpos; - - glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &errorpos); - printf("errorpos: %d\n", errorpos); - printf("%s\n", glGetString(GL_PROGRAM_ERROR_STRING_ARB)); - } - - /* Light position */ - glProgramLocalParameter4fARB(GL_VERTEX_PROGRAM_ARB, 32, 2, 2, 4, 1); - /* Diffuse material color */ - glProgramLocalParameter4fARB(GL_VERTEX_PROGRAM_ARB, 35, 0.25, 0, 0.25, 1); - - /* Gravity strength */ - glProgramLocalParameter4fARB(GL_VERTEX_PROGRAM_ARB, 31, .5, 0, 0, 0); - - glEnable(GL_DEPTH_TEST); - glClearColor(0.3, 0.3, 0.3, 1); - glShadeModel(GL_FLAT); - glPointSize(3); -} - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 250, 250 ); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH ); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutSpecialFunc( SpecialKey ); - glutDisplayFunc( Display ); - if (Anim) - glutIdleFunc(Idle); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/arraytexture.c b/progs/tests/arraytexture.c deleted file mode 100644 index 28252a354b..0000000000 --- a/progs/tests/arraytexture.c +++ /dev/null @@ -1,330 +0,0 @@ -/* - * (C) Copyright IBM Corporation 2007 - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * on the rights to use, copy, modify, merge, publish, distribute, sub - * license, and/or sell copies of the Software, and to permit persons to whom - * the Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL - * IBM AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -/** - * \file arraytexture.c - * - * - * \author Ian Romanick <idr@us.ibm.com> - */ - -#include <assert.h> -#include <stdlib.h> -#include <stdio.h> -#include <string.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> -#include <GL/glext.h> - -#if !defined(GL_EXT_texture_array) && !defined(GL_MESA_texture_array) -# error "This demo requires enums for either GL_EXT_texture_array or GL_MESA_texture_array to build." -#endif - -#include "readtex.h" - -#define GL_CHECK_ERROR() \ - do { \ - GLenum err = glGetError(); \ - if (err) { \ - printf("%s:%u: %s (0x%04x)\n", __FILE__, __LINE__, \ - gluErrorString(err), err); \ - } \ - } while (0) - -static const char *const textures[] = { - "../images/girl.rgb", - "../images/girl2.rgb", - "../images/arch.rgb", - "../images/s128.rgb", - - "../images/tree3.rgb", - "../images/bw.rgb", - "../images/reflect.rgb", - "../images/wrs_logo.rgb", - NULL -}; - -static const char frag_prog[] = - "!!ARBfp1.0\n" - "OPTION MESA_texture_array;\n" - "TEX result.color, fragment.texcoord[0], texture[0], ARRAY2D;\n" - "END\n"; - -static GLfloat Xrot = 0, Yrot = -30, Zrot = 0; -static GLfloat texZ = 0.0; -static GLfloat texZ_dir = 0.01; -static GLint num_layers; - - -static void -PrintString(const char *s) -{ - while (*s) { - glutBitmapCharacter(GLUT_BITMAP_8_BY_13, (int) *s); - s++; - } -} - - -static void Idle(void) -{ - static int lastTime = 0; - int t = glutGet(GLUT_ELAPSED_TIME); - - if (lastTime == 0) - lastTime = t; - else if (t - lastTime < 10) - return; - - lastTime = t; - - texZ += texZ_dir; - if ((texZ < 0.0) || ((GLint) texZ > num_layers)) { - texZ_dir = -texZ_dir; - } - - glutPostRedisplay(); -} - - -static void Display(void) -{ - char str[100]; - - glClear(GL_COLOR_BUFFER_BIT); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1, 1, -1, 1, -1, 1); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - - glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, 0); - glColor3f(1,1,1); - glRasterPos3f(-0.9, -0.9, 0.0); - sprintf(str, "Texture Z coordinate = %4.1f", texZ); - PrintString(str); - - glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, 1); - GL_CHECK_ERROR(); - glEnable(GL_TEXTURE_2D_ARRAY_EXT); - GL_CHECK_ERROR(); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-1.0, 1.0, -1.0, 1.0, 5.0, 25.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0, 0.0, -8.0); - - glPushMatrix(); - glRotatef(Xrot, 1, 0, 0); - glRotatef(Yrot, 0, 1, 0); - glRotatef(Zrot, 0, 0, 1); - - glBegin(GL_QUADS); - glTexCoord3f(0.0, 0.0, texZ); glVertex2f(-1.0, -1.0); - glTexCoord3f(2.0, 0.0, texZ); glVertex2f(1.0, -1.0); - glTexCoord3f(2.0, 2.0, texZ); glVertex2f(1.0, 1.0); - glTexCoord3f(0.0, 2.0, texZ); glVertex2f(-1.0, 1.0); - glEnd(); - - glPopMatrix(); - - glDisable(GL_TEXTURE_2D_ARRAY_EXT); - GL_CHECK_ERROR(); - glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, 0); - GL_CHECK_ERROR(); - - glutSwapBuffers(); -} - - -static void Reshape(int width, int height) -{ - glViewport(0, 0, width, height); -} - - -static void Key(unsigned char key, int x, int y) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void SpecialKey(int key, int x, int y) -{ - const GLfloat step = 3.0; - (void) x; - (void) y; - switch (key) { - case GLUT_KEY_UP: - Xrot -= step; - break; - case GLUT_KEY_DOWN: - Xrot += step; - break; - case GLUT_KEY_LEFT: - Yrot -= step; - break; - case GLUT_KEY_RIGHT: - Yrot += step; - break; - } - glutPostRedisplay(); -} - - -static int FindLine(const char *program, int position) -{ - int i, line = 1; - for (i = 0; i < position; i++) { - if (program[i] == '\n') - line++; - } - return line; -} - - -static void -compile_fragment_program(GLuint id, const char *prog) -{ - int errorPos; - int err; - - err = glGetError(); - glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, id); - glProgramStringARB(GL_FRAGMENT_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, - strlen(prog), (const GLubyte *) prog); - - glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &errorPos); - err = glGetError(); - if (err != GL_NO_ERROR || errorPos != -1) { - int l = FindLine(prog, errorPos); - - printf("Fragment Program Error (err=%d, pos=%d line=%d): %s\n", - err, errorPos, l, - (char *) glGetString(GL_PROGRAM_ERROR_STRING_ARB)); - exit(0); - } -} - - -static void require_extension(const char *ext) -{ - if (!glutExtensionSupported(ext)) { - printf("Sorry, %s not supported by this renderer.\n", ext); - exit(1); - } -} - - -static void Init(void) -{ - const char *const ver_string = (const char *const) glGetString(GL_VERSION); - unsigned i; - - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - printf("GL_VERSION = %s\n", ver_string); - - require_extension("GL_ARB_fragment_program"); - require_extension("GL_MESA_texture_array"); - require_extension("GL_SGIS_generate_mipmap"); - - for (num_layers = 0; textures[num_layers] != NULL; num_layers++) - /* empty */ ; - - glBindTexture(GL_TEXTURE_2D_ARRAY_EXT, 1); - glTexImage3D(GL_TEXTURE_2D_ARRAY_EXT, 0, GL_RGB8, - 256, 256, num_layers, 0, GL_RGB, GL_UNSIGNED_BYTE, NULL); - GL_CHECK_ERROR(); - - glTexParameteri(GL_TEXTURE_2D_ARRAY_EXT, GL_GENERATE_MIPMAP_SGIS, - GL_TRUE); - - for (i = 0; textures[i] != NULL; i++) { - GLint width, height; - GLenum format; - - GLubyte *image = LoadRGBImage(textures[i], &width, &height, &format); - if (!image) { - printf("Error: could not load texture image %s\n", textures[i]); - exit(1); - } - - /* resize to 256 x 256 */ - if (width != 256 || height != 256) { - GLubyte *newImage = malloc(256 * 256 * 4); - gluScaleImage(format, width, height, GL_UNSIGNED_BYTE, image, - 256, 256, GL_UNSIGNED_BYTE, newImage); - free(image); - image = newImage; - } - - glTexSubImage3D(GL_TEXTURE_2D_ARRAY_EXT, 0, - 0, 0, i, 256, 256, 1, - format, GL_UNSIGNED_BYTE, image); - free(image); - } - GL_CHECK_ERROR(); - - glTexParameteri(GL_TEXTURE_2D_ARRAY_EXT, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D_ARRAY_EXT, GL_TEXTURE_WRAP_T, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D_ARRAY_EXT, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE); - - glTexParameteri(GL_TEXTURE_2D_ARRAY_EXT, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); - GL_CHECK_ERROR(); - glTexParameteri(GL_TEXTURE_2D_ARRAY_EXT, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - GL_CHECK_ERROR(); - - compile_fragment_program(1, frag_prog); - GL_CHECK_ERROR(); -} - - -int main(int argc, char *argv[]) -{ - glutInit(&argc, argv); - glutInitWindowPosition(0, 0); - glutInitWindowSize(350, 350); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); - glutCreateWindow("Array texture test"); - glewInit(); - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutSpecialFunc(SpecialKey); - glutDisplayFunc(Display); - glutIdleFunc(Idle); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/auxbuffer.c b/progs/tests/auxbuffer.c deleted file mode 100644 index 70f0b73910..0000000000 --- a/progs/tests/auxbuffer.c +++ /dev/null @@ -1,499 +0,0 @@ -/* - * Test AUX buffer rendering - * Use GLX since GLUT doesn't support AUX buffers - */ - - -/* - * Copyright (C) 1999-2001 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/* - * This is a port of the infamous "gears" demo to straight GLX (i.e. no GLUT) - * Port by Brian Paul 23 March 2001 - * - * Command line options: - * -info print GL implementation information - * - */ - - -#include <math.h> -#include <stdlib.h> -#include <stdio.h> -#include <string.h> -#include <X11/Xlib.h> -#include <X11/keysym.h> -#include <GL/gl.h> -#include <GL/glx.h> - - -static int -current_time(void) -{ - return 0; -} - - - - -#ifndef M_PI -#define M_PI 3.14159265 -#endif - -static int WinWidth = 300, WinHeight = 300; -static GLfloat view_rotx = 20.0, view_roty = 30.0, view_rotz = 0.0; -static GLint gear1, gear2, gear3; -static GLfloat angle = 0.0; - - -/* - * - * Draw a gear wheel. You'll probably want to call this function when - * building a display list since we do a lot of trig here. - * - * Input: inner_radius - radius of hole at center - * outer_radius - radius at center of teeth - * width - width of gear - * teeth - number of teeth - * tooth_depth - depth of tooth - */ -static void -gear(GLfloat inner_radius, GLfloat outer_radius, GLfloat width, - GLint teeth, GLfloat tooth_depth) -{ - GLint i; - GLfloat r0, r1, r2; - GLfloat angle, da; - GLfloat u, v, len; - - r0 = inner_radius; - r1 = outer_radius - tooth_depth / 2.0; - r2 = outer_radius + tooth_depth / 2.0; - - da = 2.0 * M_PI / teeth / 4.0; - - glShadeModel(GL_FLAT); - - glNormal3f(0.0, 0.0, 1.0); - - /* draw front face */ - glBegin(GL_QUAD_STRIP); - for (i = 0; i <= teeth; i++) { - angle = i * 2.0 * M_PI / teeth; - glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); - glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); - if (i < teeth) { - glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), - width * 0.5); - } - } - glEnd(); - - /* draw front sides of teeth */ - glBegin(GL_QUADS); - da = 2.0 * M_PI / teeth / 4.0; - for (i = 0; i < teeth; i++) { - angle = i * 2.0 * M_PI / teeth; - - glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); - glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), width * 0.5); - glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), - width * 0.5); - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), - width * 0.5); - } - glEnd(); - - glNormal3f(0.0, 0.0, -1.0); - - /* draw back face */ - glBegin(GL_QUAD_STRIP); - for (i = 0; i <= teeth; i++) { - angle = i * 2.0 * M_PI / teeth; - glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5); - glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5); - if (i < teeth) { - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), - -width * 0.5); - glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5); - } - } - glEnd(); - - /* draw back sides of teeth */ - glBegin(GL_QUADS); - da = 2.0 * M_PI / teeth / 4.0; - for (i = 0; i < teeth; i++) { - angle = i * 2.0 * M_PI / teeth; - - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), - -width * 0.5); - glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), - -width * 0.5); - glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), -width * 0.5); - glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5); - } - glEnd(); - - /* draw outward faces of teeth */ - glBegin(GL_QUAD_STRIP); - for (i = 0; i < teeth; i++) { - angle = i * 2.0 * M_PI / teeth; - - glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); - glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5); - u = r2 * cos(angle + da) - r1 * cos(angle); - v = r2 * sin(angle + da) - r1 * sin(angle); - len = sqrt(u * u + v * v); - u /= len; - v /= len; - glNormal3f(v, -u, 0.0); - glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), width * 0.5); - glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), -width * 0.5); - glNormal3f(cos(angle), sin(angle), 0.0); - glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), - width * 0.5); - glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), - -width * 0.5); - u = r1 * cos(angle + 3 * da) - r2 * cos(angle + 2 * da); - v = r1 * sin(angle + 3 * da) - r2 * sin(angle + 2 * da); - glNormal3f(v, -u, 0.0); - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), - width * 0.5); - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), - -width * 0.5); - glNormal3f(cos(angle), sin(angle), 0.0); - } - - glVertex3f(r1 * cos(0), r1 * sin(0), width * 0.5); - glVertex3f(r1 * cos(0), r1 * sin(0), -width * 0.5); - - glEnd(); - - glShadeModel(GL_SMOOTH); - - /* draw inside radius cylinder */ - glBegin(GL_QUAD_STRIP); - for (i = 0; i <= teeth; i++) { - angle = i * 2.0 * M_PI / teeth; - glNormal3f(-cos(angle), -sin(angle), 0.0); - glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5); - glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); - } - glEnd(); -} - - -static void -draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glPushMatrix(); - glRotatef(view_rotx, 1.0, 0.0, 0.0); - glRotatef(view_roty, 0.0, 1.0, 0.0); - glRotatef(view_rotz, 0.0, 0.0, 1.0); - - glPushMatrix(); - glTranslatef(-3.0, -2.0, 0.0); - glRotatef(angle, 0.0, 0.0, 1.0); - glCallList(gear1); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(3.1, -2.0, 0.0); - glRotatef(-2.0 * angle - 9.0, 0.0, 0.0, 1.0); - glCallList(gear2); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(-3.1, 4.2, 0.0); - glRotatef(-2.0 * angle - 25.0, 0.0, 0.0, 1.0); - glCallList(gear3); - glPopMatrix(); - - glPopMatrix(); -} - - -/* new window size or exposure */ -static void -reshape(int width, int height) -{ - GLfloat h = (GLfloat) height / (GLfloat) width; - - WinWidth = width; - WinHeight = height; - glViewport(0, 0, (GLint) width, (GLint) height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-1.0, 1.0, -h, h, 5.0, 60.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0, 0.0, -40.0); -} - - -static void -init(void) -{ - static GLfloat pos[4] = { 5.0, 5.0, 10.0, 0.0 }; - static GLfloat red[4] = { 0.8, 0.1, 0.0, 1.0 }; - static GLfloat green[4] = { 0.0, 0.8, 0.2, 1.0 }; - static GLfloat blue[4] = { 0.2, 0.2, 1.0, 1.0 }; - int i; - - glGetIntegerv(GL_AUX_BUFFERS, &i); - printf("AUX BUFFERS: %d\n", i); - - glLightfv(GL_LIGHT0, GL_POSITION, pos); - glEnable(GL_CULL_FACE); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_DEPTH_TEST); - - /* make the gears */ - gear1 = glGenLists(1); - glNewList(gear1, GL_COMPILE); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, red); - gear(1.0, 4.0, 1.0, 20, 0.7); - glEndList(); - - gear2 = glGenLists(1); - glNewList(gear2, GL_COMPILE); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, green); - gear(0.5, 2.0, 2.0, 10, 0.7); - glEndList(); - - gear3 = glGenLists(1); - glNewList(gear3, GL_COMPILE); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, blue); - gear(1.3, 2.0, 0.5, 10, 0.7); - glEndList(); - - glEnable(GL_NORMALIZE); -} - - -/* - * Create an RGB, double-buffered window. - * Return the window and context handles. - */ -static void -make_window( Display *dpy, const char *name, - int x, int y, int width, int height, - Window *winRet, GLXContext *ctxRet) -{ - int attrib[] = { GLX_RGBA, - GLX_RED_SIZE, 1, - GLX_GREEN_SIZE, 1, - GLX_BLUE_SIZE, 1, - GLX_DOUBLEBUFFER, - GLX_DEPTH_SIZE, 1, - GLX_AUX_BUFFERS, 1, - None }; - int scrnum; - XSetWindowAttributes attr; - unsigned long mask; - Window root; - Window win; - GLXContext ctx; - XVisualInfo *visinfo; - - scrnum = DefaultScreen( dpy ); - root = RootWindow( dpy, scrnum ); - - visinfo = glXChooseVisual( dpy, scrnum, attrib ); - if (!visinfo) { - printf("Error: couldn't get an RGB, Double-buffered visual\n"); - exit(1); - } - - /* window attributes */ - attr.background_pixel = 0; - attr.border_pixel = 0; - attr.colormap = XCreateColormap( dpy, root, visinfo->visual, AllocNone); - attr.event_mask = StructureNotifyMask | ExposureMask | KeyPressMask; - mask = CWBackPixel | CWBorderPixel | CWColormap | CWEventMask; - - win = XCreateWindow( dpy, root, 0, 0, width, height, - 0, visinfo->depth, InputOutput, - visinfo->visual, mask, &attr ); - - /* set hints and properties */ - { - XSizeHints sizehints; - sizehints.x = x; - sizehints.y = y; - sizehints.width = width; - sizehints.height = height; - sizehints.flags = USSize | USPosition; - XSetNormalHints(dpy, win, &sizehints); - XSetStandardProperties(dpy, win, name, name, - None, (char **)NULL, 0, &sizehints); - } - - ctx = glXCreateContext( dpy, visinfo, NULL, True ); - if (!ctx) { - printf("Error: glXCreateContext failed\n"); - exit(1); - } - - XFree(visinfo); - - *winRet = win; - *ctxRet = ctx; -} - - -static void -event_loop(Display *dpy, Window win) -{ - while (1) { - while (XPending(dpy) > 0) { - XEvent event; - XNextEvent(dpy, &event); - switch (event.type) { - case Expose: - /* we'll redraw below */ - break; - case ConfigureNotify: - reshape(event.xconfigure.width, event.xconfigure.height); - break; - case KeyPress: - { - char buffer[10]; - int r, code; - code = XLookupKeysym(&event.xkey, 0); - if (code == XK_Left) { - view_roty += 5.0; - } - else if (code == XK_Right) { - view_roty -= 5.0; - } - else if (code == XK_Up) { - view_rotx += 5.0; - } - else if (code == XK_Down) { - view_rotx -= 5.0; - } - else { - r = XLookupString(&event.xkey, buffer, sizeof(buffer), - NULL, NULL); - if (buffer[0] == 27) { - /* escape */ - return; - } - } - } - } - } - - /* next frame */ - angle += 2.0; - - /* draw to aux buffer */ - glDrawBuffer(GL_AUX0); - - draw(); - - /* Copy aux buffer image to back color buffer */ - glReadBuffer(GL_AUX0); - glDrawBuffer(GL_BACK); - glWindowPos2iARB(0, 0); - glDisable(GL_DEPTH_TEST); - glCopyPixels(0, 0, WinWidth, WinHeight, GL_COLOR); - glEnable(GL_DEPTH_TEST); - - glXSwapBuffers(dpy, win); - - /* calc framerate */ - { - static int t0 = -1; - static int frames = 0; - int t = current_time(); - - if (t0 < 0) - t0 = t; - - frames++; - - if (t - t0 >= 5.0) { - GLfloat seconds = t - t0; - GLfloat fps = frames / seconds; - printf("%d frames in %3.1f seconds = %6.3f FPS\n", frames, seconds, - fps); - t0 = t; - frames = 0; - } - } - } -} - - -int -main(int argc, char *argv[]) -{ - Display *dpy; - Window win; - GLXContext ctx; - char *dpyName = ":0"; - GLboolean printInfo = GL_FALSE; - int i; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-display") == 0) { - dpyName = argv[i+1]; - i++; - } - else if (strcmp(argv[i], "-info") == 0) { - printInfo = GL_TRUE; - } - } - - dpy = XOpenDisplay(dpyName); - if (!dpy) { - printf("Error: couldn't open display %s\n", dpyName); - return -1; - } - - make_window(dpy, "glxgears", 0, 0, WinWidth, WinHeight, &win, &ctx); - XMapWindow(dpy, win); - glXMakeCurrent(dpy, win, ctx); - - if (printInfo) { - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - printf("GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - printf("GL_EXTENSIONS = %s\n", (char *) glGetString(GL_EXTENSIONS)); - } - - init(); - - event_loop(dpy, win); - - glXDestroyContext(dpy, ctx); - XDestroyWindow(dpy, win); - XCloseDisplay(dpy); - - return 0; -} diff --git a/progs/tests/blendminmax.c b/progs/tests/blendminmax.c deleted file mode 100644 index 7297f41b78..0000000000 --- a/progs/tests/blendminmax.c +++ /dev/null @@ -1,211 +0,0 @@ -/* - * (C) Copyright IBM Corporation 2004 - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * on the rights to use, copy, modify, merge, publish, distribute, sub - * license, and/or sell copies of the Software, and to permit persons to whom - * the Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL - * VA LINUX SYSTEM, IBM AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - * USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/** - * \file blendminmax.c - * - * Simple test of GL_EXT_blend_minmax functionality. Four squares are drawn - * with different blending modes, but all should be rendered with the same - * final color. - * - * \author Ian Romanick <idr@us.ibm.com> - */ - -#include <stdio.h> -#include <stdlib.h> -#include <GL/glew.h> -#include <GL/glut.h> - -static int Width = 400; -static int Height = 200; -static const GLfloat Near = 5.0, Far = 25.0; - - -static void Display( void ) -{ - glClearColor(0.2, 0.2, 0.8, 0); - glClear( GL_COLOR_BUFFER_BIT ); - - glPushMatrix(); - - /* This is the "reference" square. - */ - - glTranslatef(-4.5, 0, 0); - glBlendEquation( GL_FUNC_ADD ); - glBlendFunc( GL_ONE, GL_ZERO ); - glBegin(GL_QUADS); - glColor3f( 0.5, 0.5, 0.5 ); - glVertex2f(-1, -1); - glVertex2f( 1, -1); - glVertex2f( 1, 1); - glVertex2f(-1, 1); - glEnd(); - - - /* GL_MIN and GL_MAX are supposed to ignore the blend function setting. - * To test that, we set the blend function to GL_ZERO for both color and - * alpha each time GL_MIN or GL_MAX is used. - * - * Apple ships an extension called GL_ATI_blend_weighted_minmax (supported - * on Mac OS X 10.2 and later). I believe the difference with that - * extension is that it uses the blend function. However, I have no idea - * what the enums are for it. The extension is listed at Apple's developer - * site, but there is no documentation. - * - * http://developer.apple.com/opengl/extensions.html - */ - - glTranslatef(3.0, 0, 0); - glBlendEquation( GL_FUNC_ADD ); - glBlendFunc( GL_ONE, GL_ZERO ); - glBegin(GL_QUADS); - glColor3f( 0.5, 0.5, 0.5 ); - glVertex2f(-1, -1); - glVertex2f( 1, -1); - glVertex2f( 1, 1); - glVertex2f(-1, 1); - glEnd(); - - glBlendEquation( GL_MAX ); - glBlendFunc( GL_ZERO, GL_ZERO ); - glBegin(GL_QUADS); - glColor3f( 0.2, 0.2, 0.2 ); - glVertex2f(-1, -1); - glVertex2f( 1, -1); - glVertex2f( 1, 1); - glVertex2f(-1, 1); - glEnd(); - - - glTranslatef(3.0, 0, 0); - glBlendEquation( GL_FUNC_ADD ); - glBlendFunc( GL_ONE, GL_ZERO ); - glBegin(GL_QUADS); - glColor3f( 0.5, 0.5, 0.5 ); - glVertex2f(-1, -1); - glVertex2f( 1, -1); - glVertex2f( 1, 1); - glVertex2f(-1, 1); - glEnd(); - - glBlendEquation( GL_MIN ); - glBlendFunc( GL_ZERO, GL_ZERO ); - glBegin(GL_QUADS); - glColor3f( 0.8, 0.8, 0.8 ); - glVertex2f(-1, -1); - glVertex2f( 1, -1); - glVertex2f( 1, 1); - glVertex2f(-1, 1); - glEnd(); - - - glTranslatef(3.0, 0, 0); - glBlendEquation( GL_FUNC_ADD ); - glBlendFunc( GL_ONE, GL_ZERO ); - glBegin(GL_QUADS); - glColor3f( 0.8, 0.8, 0.8 ); - glVertex2f(-1, -1); - glVertex2f( 1, -1); - glVertex2f( 1, 1); - glVertex2f(-1, 1); - glEnd(); - - glBlendEquation( GL_MIN ); - glBlendFunc( GL_ZERO, GL_ZERO ); - glBegin(GL_QUADS); - glColor3f( 0.5, 0.5, 0.5 ); - glVertex2f(-1, -1); - glVertex2f( 1, -1); - glVertex2f( 1, 1); - glVertex2f(-1, 1); - glEnd(); - - glPopMatrix(); - - glutSwapBuffers(); -} - - -static void Reshape( int width, int height ) -{ - GLfloat ar = (float) width / (float) height; - Width = width; - Height = height; - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -ar, ar, -1.0, 1.0, Near, Far ); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - glTranslatef( 0.0, 0.0, -15.0 ); -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void Init( void ) -{ - const char * const ver_string = (const char * const) - glGetString( GL_VERSION ); - - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - printf("GL_VERSION = %s\n", ver_string); - - if ( !glutExtensionSupported("GL_ARB_imaging") && !glutExtensionSupported("GL_EXT_blend_minmax")) { - printf("Sorry, this program requires either GL_ARB_imaging or GL_EXT_blend_minmax.\n"); - exit(1); - } - - printf("\nAll 4 squares should be the same color.\n"); - glEnable( GL_BLEND ); -} - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( Width, Height ); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE ); - glutCreateWindow( "GL_EXT_blend_minmax test" ); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/blendsquare.c b/progs/tests/blendsquare.c deleted file mode 100644 index 3ee3ae2230..0000000000 --- a/progs/tests/blendsquare.c +++ /dev/null @@ -1,180 +0,0 @@ -/* - * (C) Copyright IBM Corporation 2004 - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * on the rights to use, copy, modify, merge, publish, distribute, sub - * license, and/or sell copies of the Software, and to permit persons to whom - * the Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL - * VA LINUX SYSTEM, IBM AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - * USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/** - * \file blendsquare.c - * - * Simple test of GL_NV_blend_square functionality. Four squares are drawn - * with different blending modes, but all should be rendered with the same - * final color. - * - * \author Ian Romanick <idr@us.ibm.com> - */ - -#include <stdio.h> -#include <stdlib.h> -#include <GL/glew.h> -#include <GL/glut.h> - -static int Width = 400; -static int Height = 200; -static const GLfloat Near = 5.0, Far = 25.0; - - -static void Display( void ) -{ - glClearColor(0.2, 0.2, 0.8, 0); - glClear( GL_COLOR_BUFFER_BIT ); - - glPushMatrix(); - - glTranslatef(-4.5, 0, 0); - glBlendFunc( GL_ONE, GL_ZERO ); - glBegin(GL_QUADS); - glColor3f( 0.5 * 0.5, 0.5 * 0.5, 0.5 * 0.5 ); - glVertex2f(-1, -1); - glVertex2f( 1, -1); - glVertex2f( 1, 1); - glVertex2f(-1, 1); - glEnd(); - - - glTranslatef(3.0, 0, 0); - glBlendFunc( GL_ONE, GL_ZERO ); - glBegin(GL_QUADS); - glColor3f( 0.5, 0.5, 0.5 ); - glVertex2f(-1, -1); - glVertex2f( 1, -1); - glVertex2f( 1, 1); - glVertex2f(-1, 1); - glEnd(); - - glBlendFunc( GL_DST_COLOR, GL_ZERO ); - glBegin(GL_QUADS); - glVertex2f(-1, -1); - glVertex2f( 1, -1); - glVertex2f( 1, 1); - glVertex2f(-1, 1); - glEnd(); - - - glTranslatef(3.0, 0, 0); - glBlendFunc( GL_SRC_COLOR, GL_ZERO ); - glBegin(GL_QUADS); - glVertex2f(-1, -1); - glVertex2f( 1, -1); - glVertex2f( 1, 1); - glVertex2f(-1, 1); - glEnd(); - - - glTranslatef(3.0, 0, 0); - glBlendFunc( GL_ONE, GL_ZERO ); - glBegin(GL_QUADS); - glVertex2f(-1, -1); - glVertex2f( 1, -1); - glVertex2f( 1, 1); - glVertex2f(-1, 1); - glEnd(); - - glBlendFunc( GL_ZERO, GL_DST_COLOR ); - glBegin(GL_QUADS); - glVertex2f(-1, -1); - glVertex2f( 1, -1); - glVertex2f( 1, 1); - glVertex2f(-1, 1); - glEnd(); - - glPopMatrix(); - - glutSwapBuffers(); -} - - -static void Reshape( int width, int height ) -{ - GLfloat ar = (float) width / (float) height; - Width = width; - Height = height; - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -ar, ar, -1.0, 1.0, Near, Far ); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - glTranslatef( 0.0, 0.0, -15.0 ); -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void Init( void ) -{ - const char * const ver_string = (const char * const) - glGetString( GL_VERSION ); - const double version = strtod( ver_string, NULL ); - - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - printf("GL_VERSION = %s\n", ver_string); - - if ( (version < 1.4) && !glutExtensionSupported("GL_NV_blend_square")) { - printf("Sorry, this program requires either OpenGL 1.4 or GL_NV_blend_square\n"); - exit(1); - } - - printf("\nAll 4 squares should be the same color. The two on the left are drawn\n" - "without NV_blend_square functionality, and the two on the right are drawn\n" - "with NV_blend_square functionality. If the two on the left are dark, but\n" - "the two on the right are not, then NV_blend_square is broken.\n"); - glEnable( GL_BLEND ); - glBlendEquation( GL_FUNC_ADD ); -} - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( Width, Height ); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE ); - glutCreateWindow( "GL_NV_blend_square test" ); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/blendxor.c b/progs/tests/blendxor.c deleted file mode 100644 index d6dcb8b848..0000000000 --- a/progs/tests/blendxor.c +++ /dev/null @@ -1,197 +0,0 @@ -/** - * Test XOR emulation with blending. - * - */ - -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> -#include "readtex.c" - -#define IMAGE_FILE "../images/arch.rgb" - -static int ImgWidth, ImgHeight; -static GLenum ImgFormat; -static GLubyte *Image = NULL; - -static int Win; -static int Width = 600, Height = 600; - -struct rect -{ - int x0, y0, x1, y1; -}; - -static struct rect OldRect, NewRect; - -static GLboolean ButtonDown = GL_FALSE; -static GLboolean LogicOp = 0*GL_TRUE; - - -static const GLfloat red[4] = {1.0, 0.2, 0.2, 1.0}; -static const GLfloat green[4] = {0.2, 1.0, 0.2, 1.0}; -static const GLfloat blue[4] = {0.2, 0.2, 1.0, 1.0}; - - -static void -PrintString(const char *s) -{ - while (*s) { - glutBitmapCharacter(GLUT_BITMAP_8_BY_13, (int) *s); - s++; - } -} - - -static void -Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glWindowPos2i((Width - ImgWidth) / 2, (Height - ImgHeight) / 2); - glDrawPixels(ImgWidth, ImgHeight, ImgFormat, GL_UNSIGNED_BYTE, Image); - - /* - * Draw 2D XOR rects - */ - glColor3f(1, 1, 1); - - glWindowPos2i(100, Height - 20); - PrintString("XOR LogicOp:"); - glLogicOp(GL_XOR); - glEnable(GL_COLOR_LOGIC_OP); - glRecti(100, 30, 250, Height - 30); - glDisable(GL_COLOR_LOGIC_OP); - - glWindowPos2i(Width/2 + 10, Height - 20); - PrintString("Invert Blending:"); - glBlendFunc(GL_ONE, GL_ONE); - glBlendEquation(GL_FUNC_SUBTRACT); - glEnable(GL_BLEND); - glRecti(Width / 2, 30, Width / 2 + 150, Height - 30); - glDisable(GL_BLEND); - - glutSwapBuffers(); -} - - -static void -Reshape(int width, int height) -{ - Width = width; - Height = height; - glViewport(0, 0, width, height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(0, Width, 0, Height, -1, 1); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - - -static void -Key(unsigned char key, int x, int y) -{ - (void) x; - (void) y; - switch (key) { - case 'b': - case 'B': - LogicOp = GL_FALSE; - break; - case 'l': - case 'L': - LogicOp = GL_TRUE; - break; - case 27: - glutDestroyWindow(Win); - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void -SpecialKey(int key, int x, int y) -{ - (void) x; - (void) y; - switch (key) { - case GLUT_KEY_UP: - break; - case GLUT_KEY_DOWN: - break; - case GLUT_KEY_LEFT: - break; - case GLUT_KEY_RIGHT: - break; - } - glutPostRedisplay(); -} - - -static void -MouseMotion(int x, int y) -{ - if (ButtonDown) { - NewRect.x1 = x; - NewRect.y1 = y; - glutPostRedisplay(); - } -} - - -static void -MouseButton(int button, int state, int x, int y) -{ - if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN) { - ButtonDown = GL_TRUE; - NewRect.x0 = NewRect.x1 = x; - NewRect.y0 = NewRect.y1 = y; - OldRect = NewRect; - } - else if (button == GLUT_LEFT_BUTTON && state == GLUT_UP) { - ButtonDown = GL_FALSE; - } -} - - -static void -Init(void) -{ - /* - * Load image and scale if needed. - */ - Image = LoadRGBImage(IMAGE_FILE, &ImgWidth, &ImgHeight, &ImgFormat); - if (!Image) { - printf("Couldn't read %s\n", IMAGE_FILE); - exit(0); - } - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glPixelStorei(GL_PACK_ALIGNMENT, 1); -} - - -int -main(int argc, char *argv[]) -{ - glutInit(&argc, argv); - glutInitWindowSize(Width, Height); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); - Win = glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutSpecialFunc(SpecialKey); - glutMotionFunc(MouseMotion); - glutMouseFunc(MouseButton); - glutDisplayFunc(Draw); - Init(); - glutPostRedisplay(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/blitfb.c b/progs/tests/blitfb.c deleted file mode 100644 index 18c8380a5e..0000000000 --- a/progs/tests/blitfb.c +++ /dev/null @@ -1,259 +0,0 @@ -/** - * Test glFramebufferBlit() - * Brian Paul - * 27 Oct 2009 - */ - -#include <assert.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - - -static int Win; -static int WinWidth = 1100, WinHeight = 600; - -static int SrcWidth = 512, SrcHeight = 512; -static int DstWidth = 512, DstHeight = 512; - -static GLuint SrcFB, DstFB; -static GLuint SrcTex, DstTex; - -#if 0 -static GLenum SrcTexTarget = GL_TEXTURE_2D, SrcTexFace = GL_TEXTURE_2D; -#else -static GLenum SrcTexTarget = GL_TEXTURE_CUBE_MAP, SrcTexFace = GL_TEXTURE_CUBE_MAP_POSITIVE_X; -#endif - -static GLenum DstTexTarget = GL_TEXTURE_2D, DstTexFace = GL_TEXTURE_2D; - -static GLuint SrcTexLevel = 01, DstTexLevel = 0; - - -static void -Draw(void) -{ - GLboolean rp = GL_FALSE; - GLubyte *buf; - GLint srcWidth = SrcWidth >> SrcTexLevel; - GLint srcHeight = SrcHeight >> SrcTexLevel; - GLint dstWidth = DstWidth >> DstTexLevel; - GLint dstHeight = DstHeight >> DstTexLevel; - GLenum status; - - /* clear window */ - glBindFramebufferEXT(GL_FRAMEBUFFER, 0); - glClearColor(0.5, 0.5, 0.5, 1.0); - glClear(GL_COLOR_BUFFER_BIT); - - - /* clear src buf */ - glBindFramebufferEXT(GL_FRAMEBUFFER, SrcFB); - status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT); - assert(status == GL_FRAMEBUFFER_COMPLETE_EXT); - glClearColor(0, 1, 0, 0); - glClear(GL_COLOR_BUFFER_BIT); - - /* clear dst buf */ - glBindFramebufferEXT(GL_FRAMEBUFFER, DstFB); - status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT); - assert(status == GL_FRAMEBUFFER_COMPLETE_EXT); - glClearColor(1, 0, 0, 0); - glClear(GL_COLOR_BUFFER_BIT); - - /* blit src -> dst */ - glBindFramebufferEXT(GL_READ_FRAMEBUFFER, SrcFB); - glBindFramebufferEXT(GL_DRAW_FRAMEBUFFER, DstFB); - glBlitFramebufferEXT(0, 0, srcWidth, srcHeight, - 0, 0, dstWidth, dstHeight, - GL_COLOR_BUFFER_BIT, GL_NEAREST); - -#if 01 - /* read src results */ - buf = malloc(4 * srcWidth * srcHeight); - memset(buf, 0x88, 4 * srcWidth * srcHeight); - glBindFramebufferEXT(GL_FRAMEBUFFER, SrcFB); - if (rp) - glReadPixels(0, 0, srcWidth, srcHeight, GL_RGBA, GL_UNSIGNED_BYTE, buf); - else { - glBindTexture(SrcTexTarget, SrcTex); - glGetTexImage(SrcTexFace, SrcTexLevel, GL_RGBA, GL_UNSIGNED_BYTE, buf); - } - - /* draw dst in window */ - glBindFramebufferEXT(GL_FRAMEBUFFER, 0); - glWindowPos2i(0, 0); - glDrawPixels(srcWidth, srcHeight, GL_RGBA, GL_UNSIGNED_BYTE, buf); - - printf("Src Pix[0] = %d %d %d %d\n", buf[0], buf[1], buf[2], buf[3]); - free(buf); -#endif - - glFinish(); - - /* read dst results */ - buf = malloc(4 * dstWidth * dstHeight); - memset(buf, 0x88, 4 * dstWidth * dstHeight); - glBindFramebufferEXT(GL_FRAMEBUFFER, DstFB); - if (rp) - glReadPixels(0, 0, dstWidth, dstHeight, GL_RGBA, GL_UNSIGNED_BYTE, buf); - else { - glBindTexture(DstTexTarget, DstTex); - glGetTexImage(DstTexFace, DstTexLevel, GL_RGBA, GL_UNSIGNED_BYTE, buf); - } - - /* draw dst in window */ - glBindFramebufferEXT(GL_FRAMEBUFFER, 0); - glWindowPos2i(srcWidth + 2, 0); - glDrawPixels(dstWidth, dstHeight, GL_RGBA, GL_UNSIGNED_BYTE, buf); - - printf("Dst Pix[0] = %d %d %d %d\n", buf[0], buf[1], buf[2], buf[3]); - free(buf); - - glFinish(); - - glutSwapBuffers(); -} - - -static void -Reshape(int width, int height) -{ - WinWidth = width; - WinHeight = height; - glViewport(0, 0, width, height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-1.0, 1.0, -1.0, 1.0, 5.0, 25.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0, 0.0, -15.0); -} - - -static void -Key(unsigned char key, int x, int y) -{ - (void) x; - (void) y; - switch (key) { - case 27: - glutDestroyWindow(Win); - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void -SpecialKey(int key, int x, int y) -{ - (void) x; - (void) y; - switch (key) { - } - glutPostRedisplay(); -} - - -static void -InitFBOs(void) -{ - GLuint w, h, lvl; - - /* Src */ - glGenTextures(1, &SrcTex); - glBindTexture(SrcTexTarget, SrcTex); - w = SrcWidth; - h = SrcHeight; - lvl = 0; - for (lvl = 0; ; lvl++) { - if (SrcTexTarget == GL_TEXTURE_CUBE_MAP) { - GLuint f; - for (f = 0; f < 6; f++) { - glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + f, lvl, GL_RGBA8, - w, h, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); - } - } - else { - /* single face */ - glTexImage2D(SrcTexFace, lvl, GL_RGBA8, w, h, 0, - GL_RGBA, GL_UNSIGNED_BYTE, NULL); - } - if (w == 1 && h == 1) - break; - if (w > 1) - w /= 2; - if (h > 1) - h /= 2; - } - - glGenFramebuffersEXT(1, &SrcFB); - glBindFramebufferEXT(GL_FRAMEBUFFER, SrcFB); - glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, - SrcTexFace, SrcTex, SrcTexLevel); - - /* Dst */ - glGenTextures(1, &DstTex); - glBindTexture(DstTexTarget, DstTex); - w = DstWidth; - h = DstHeight; - lvl = 0; - for (lvl = 0; ; lvl++) { - glTexImage2D(DstTexFace, lvl, GL_RGBA8, w, h, 0, - GL_RGBA, GL_UNSIGNED_BYTE, NULL); - if (w == 1 && h == 1) - break; - if (w > 1) - w /= 2; - if (h > 1) - h /= 2; - } - - glGenFramebuffersEXT(1, &DstFB); - glBindFramebufferEXT(GL_FRAMEBUFFER, DstFB); - glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, - DstTexFace, DstTex, DstTexLevel); -} - - -static void -Init(void) -{ - if (!glutExtensionSupported("GL_EXT_framebuffer_object")) { - fprintf(stderr, "This test requires GL_EXT_framebuffer_object\n"); - exit(1); - } - - if (!glutExtensionSupported("GL_EXT_framebuffer_blit")) { - fprintf(stderr, "This test requires GL_EXT_framebuffer_blit,\n"); - exit(1); - } - - InitFBOs(); - - printf("Left rect = src FBO, Right rect = dst FBO.\n"); - printf("Both should be green.\n"); -} - - -int -main(int argc, char *argv[]) -{ - glutInit(&argc, argv); - glutInitWindowSize(WinWidth, WinHeight); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); - Win = glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutSpecialFunc(SpecialKey); - glutDisplayFunc(Draw); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/bufferobj.c b/progs/tests/bufferobj.c deleted file mode 100644 index d4ca270016..0000000000 --- a/progs/tests/bufferobj.c +++ /dev/null @@ -1,511 +0,0 @@ -/* - * Test GL_ARB_vertex_buffer_object - * Also test GL_ARB_vertex_array_object if supported - * - * Brian Paul - * 16 Sep 2003 - */ - - -#include <assert.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - -#define NUM_OBJECTS 10 - -struct object -{ - GLuint ArrayObjectID; /** GL_ARB_vertex_array_object */ - GLuint VertexBufferID; - GLuint ColorBufferID; - GLuint ElementsBufferID; - GLuint NumVerts; - GLuint VertexOffset; - GLuint ColorOffset; - GLuint VertexStride; - GLuint ColorStride; - GLuint NumElements; -}; - -static struct object Objects[NUM_OBJECTS]; -static GLuint NumObjects; - -static GLuint Win; - -static GLfloat Xrot = 0, Yrot = 0, Zrot = 0; -static GLboolean Anim = GL_TRUE; -static GLboolean Have_ARB_vertex_array_object = GL_FALSE; - - -static void CheckError(int line) -{ - GLenum err = glGetError(); - if (err) { - printf("GL Error 0x%x at line %d\n", (int) err, line); - } -} - - -static void DrawObject( const struct object *obj ) -{ - if (Have_ARB_vertex_array_object && obj->ArrayObjectID) { - glBindVertexArray(obj->ArrayObjectID); - - if (obj->NumElements > 0) { - /* indexed arrays */ - glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, obj->ElementsBufferID); - glDrawElements(GL_LINE_LOOP, obj->NumElements, GL_UNSIGNED_INT, NULL); - } - else { - /* non-indexed arrays */ - glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, 0); - glDrawArrays(GL_LINE_LOOP, 0, obj->NumVerts); - } - - glBindVertexArray(0); - } - else { - /* no vertex array objects, must set vertex/color pointers per draw */ - - glBindBufferARB(GL_ARRAY_BUFFER_ARB, obj->VertexBufferID); - glVertexPointer(3, GL_FLOAT, obj->VertexStride, (void *) obj->VertexOffset); - glEnableClientState(GL_VERTEX_ARRAY); - - /* test push/pop attrib */ - /* XXX this leads to a segfault with NVIDIA's 53.36 driver */ -#if 0 - if (1) - { - glPushClientAttrib(GL_CLIENT_VERTEX_ARRAY_BIT); - /*glVertexPointer(3, GL_FLOAT, 0, (void *) (obj->VertexOffset + 10000));*/ - glBindBufferARB(GL_ARRAY_BUFFER_ARB, 999999); - glPopClientAttrib(); - } -#endif - glBindBufferARB(GL_ARRAY_BUFFER_ARB, obj->ColorBufferID); - glColorPointer(3, GL_FLOAT, obj->ColorStride, (void *) obj->ColorOffset); - glEnableClientState(GL_COLOR_ARRAY); - - if (obj->NumElements > 0) { - /* indexed arrays */ - glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, obj->ElementsBufferID); - glDrawElements(GL_LINE_LOOP, obj->NumElements, GL_UNSIGNED_INT, NULL); - } - else { - /* non-indexed arrays */ - glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, 0); - glDrawArrays(GL_LINE_LOOP, 0, obj->NumVerts); - } - } -} - - -static void Idle( void ) -{ - Zrot = 0.05 * glutGet(GLUT_ELAPSED_TIME); - glutPostRedisplay(); -} - - -static void Display( void ) -{ - int i; - - glClear( GL_COLOR_BUFFER_BIT ); - - for (i = 0; i < NumObjects; i++) { - float x = 7.0 * ((float) i / (NumObjects-1) - 0.5); - glPushMatrix(); - glTranslatef(x, 0, 0); - glRotatef(Xrot, 1, 0, 0); - glRotatef(Yrot, 0, 1, 0); - glRotatef(Zrot, 0, 0, 1); - - DrawObject(Objects + i); - - glPopMatrix(); - } - - CheckError(__LINE__); - glutSwapBuffers(); -} - - -static void Reshape( int width, int height ) -{ - float ar = (float) width / (float) height; - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -ar, ar, -1.0, 1.0, 5.0, 25.0 ); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - glTranslatef( 0.0, 0.0, -15.0 ); -} - - -static void FreeBuffers(void) -{ - int i; - for (i = 0; i < NUM_OBJECTS; i++) { - glDeleteBuffersARB(1, &Objects[i].VertexBufferID); - glDeleteBuffersARB(1, &Objects[i].ColorBufferID); - glDeleteBuffersARB(1, &Objects[i].ElementsBufferID); - } -} - - -static void Key( unsigned char key, int x, int y ) -{ - const GLfloat step = 3.0; - (void) x; - (void) y; - switch (key) { - case 'a': - Anim = !Anim; - if (Anim) - glutIdleFunc(Idle); - else - glutIdleFunc(NULL); - break; - case 'z': - Zrot -= step; - break; - case 'Z': - Zrot += step; - break; - case 27: - FreeBuffers(); - glutDestroyWindow(Win); - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void SpecialKey( int key, int x, int y ) -{ - const GLfloat step = 3.0; - (void) x; - (void) y; - switch (key) { - case GLUT_KEY_UP: - Xrot -= step; - break; - case GLUT_KEY_DOWN: - Xrot += step; - break; - case GLUT_KEY_LEFT: - Yrot -= step; - break; - case GLUT_KEY_RIGHT: - Yrot += step; - break; - } - glutPostRedisplay(); -} - - -/** - * If GL_ARB_vertex_array_object is supported, create an array object - * and set all the per-array state. - */ -static void -CreateVertexArrayObject(struct object *obj) -{ - glGenVertexArrays(1, &obj->ArrayObjectID); - glBindVertexArray(obj->ArrayObjectID); - - glBindBufferARB(GL_ARRAY_BUFFER_ARB, obj->VertexBufferID); - glVertexPointer(3, GL_FLOAT, obj->VertexStride, (void *) obj->VertexOffset); - glEnableClientState(GL_VERTEX_ARRAY); - - glBindBufferARB(GL_ARRAY_BUFFER_ARB, obj->ColorBufferID); - glColorPointer(3, GL_FLOAT, obj->ColorStride, (void *) obj->ColorOffset); - glEnableClientState(GL_COLOR_ARRAY); - - glBindVertexArray(0); -} - - -/* - * Non-interleaved position/color data. - */ -static void MakeObject1(struct object *obj) -{ - GLfloat *v, *c; - void *p; - int i; - GLubyte buffer[500]; - - for (i = 0; i < 500; i++) - buffer[i] = i & 0xff; - - obj->VertexBufferID = 0; - glGenBuffersARB(1, &obj->VertexBufferID); - obj->ColorBufferID = obj->VertexBufferID; - assert(obj->VertexBufferID != 0); - glBindBufferARB(GL_ARRAY_BUFFER_ARB, obj->VertexBufferID); - glBufferDataARB(GL_ARRAY_BUFFER_ARB, 500, buffer, GL_STATIC_DRAW_ARB); - - for (i = 0; i < 500; i++) - buffer[i] = 0; - - glGetBufferSubDataARB(GL_ARRAY_BUFFER_ARB, 0, 500, buffer); - - for (i = 0; i < 500; i++) - assert(buffer[i] == (i & 0xff)); - - glGetBufferParameterivARB(GL_ARRAY_BUFFER_ARB, GL_BUFFER_MAPPED_ARB, &i); - assert(!i); - - glGetBufferParameterivARB(GL_ARRAY_BUFFER_ARB, GL_BUFFER_USAGE_ARB, &i); - - v = (GLfloat *) glMapBufferARB(GL_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB); - - /* do some sanity tests */ - glGetBufferPointervARB(GL_ARRAY_BUFFER_ARB, GL_BUFFER_MAP_POINTER_ARB, &p); - assert(p == v); - - glGetBufferParameterivARB(GL_ARRAY_BUFFER_ARB, GL_BUFFER_SIZE_ARB, &i); - assert(i == 500); - - glGetBufferParameterivARB(GL_ARRAY_BUFFER_ARB, GL_BUFFER_USAGE_ARB, &i); - assert(i == GL_STATIC_DRAW_ARB); - - glGetBufferParameterivARB(GL_ARRAY_BUFFER_ARB, GL_BUFFER_ACCESS_ARB, &i); - assert(i == GL_WRITE_ONLY_ARB); - - glGetBufferParameterivARB(GL_ARRAY_BUFFER_ARB, GL_BUFFER_MAPPED_ARB, &i); - assert(i); - - /* Make rectangle */ - v[0] = -1; v[1] = -1; v[2] = 0; - v[3] = 1; v[4] = -1; v[5] = 0; - v[6] = 1; v[7] = 1; v[8] = 0; - v[9] = -1; v[10] = 1; v[11] = 0; - c = v + 12; - c[0] = 1; c[1] = 0; c[2] = 0; - c[3] = 1; c[4] = 0; c[5] = 0; - c[6] = 1; c[7] = 0; c[8] = 1; - c[9] = 1; c[10] = 0; c[11] = 1; - obj->NumVerts = 4; - obj->VertexOffset = 0; - obj->ColorOffset = 3 * sizeof(GLfloat) * obj->NumVerts; - obj->VertexStride = 0; - obj->ColorStride = 0; - obj->NumElements = 0; - - glUnmapBufferARB(GL_ARRAY_BUFFER_ARB); - - glGetBufferPointervARB(GL_ARRAY_BUFFER_ARB, GL_BUFFER_MAP_POINTER_ARB, &p); - assert(!p); - - glGetBufferParameterivARB(GL_ARRAY_BUFFER_ARB, GL_BUFFER_MAPPED_ARB, &i); - assert(!i); - - if (Have_ARB_vertex_array_object) { - CreateVertexArrayObject(obj); - } -} - - -/* - * Interleaved position/color data. - */ -static void MakeObject2(struct object *obj) -{ - GLfloat *v; - int start = 40; /* bytes, to test non-zero array offsets */ - - glGenBuffersARB(1, &obj->VertexBufferID); - obj->ColorBufferID = obj->VertexBufferID; - - glBindBufferARB(GL_ARRAY_BUFFER_ARB, obj->VertexBufferID); - glBufferDataARB(GL_ARRAY_BUFFER_ARB, 1000, NULL, GL_STATIC_DRAW_ARB); - v = (GLfloat *) glMapBufferARB(GL_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB); - - v += start / sizeof(GLfloat); - - /* Make triangle: interleaved colors, then positions */ - /* R G B X Y Z */ - v[0] = 0; v[1] = 1; v[2] = 0; v[3] = -1; v[4] = -1; v[5] = 0; - v[6] = 0; v[7] = 1; v[8] = 0; v[9] = 1; v[10] = -1; v[11] = 0; - v[12] = 1; v[13] = 1; v[14] = 0; v[15] = 0; v[16] = 1; v[17] = 0; - - obj->NumVerts = 3; - obj->VertexOffset = start + 3 * sizeof(GLfloat); - obj->ColorOffset = start; - obj->VertexStride = 6 * sizeof(GLfloat); - obj->ColorStride = 6 * sizeof(GLfloat); - - obj->NumElements = 0; - - glUnmapBufferARB(GL_ARRAY_BUFFER_ARB); - - if (Have_ARB_vertex_array_object) { - CreateVertexArrayObject(obj); - } -} - - -/* - * Use an index buffer and glDrawElements(). - */ -static void MakeObject3(struct object *obj) -{ - GLfloat vertexData[1000]; - GLfloat *v, *c; - GLuint *i; - int bytes; - - /* Make rectangle */ - v = vertexData; - v[0] = -1; v[1] = -0.5; v[2] = 0; - v[3] = 1; v[4] = -0.5; v[5] = 0; - v[6] = 1; v[7] = 0.5; v[8] = 0; - v[9] = -1; v[10] = 0.5; v[11] = 0; - c = vertexData + 12; - c[0] = 0; c[1] = 0; c[2] = 1; - c[3] = 0; c[4] = 0; c[5] = 1; - c[6] = 0; c[7] = 1; c[8] = 1; - c[9] = 0; c[10] = 1; c[11] = 1; - obj->NumVerts = 4; - obj->VertexOffset = 0; - obj->ColorOffset = 3 * sizeof(GLfloat) * obj->NumVerts; - obj->VertexStride = 0; - obj->ColorStride = 0; - - bytes = obj->NumVerts * (3 + 3) * sizeof(GLfloat); - - /* Don't use glMap/UnmapBuffer for this object */ - glGenBuffersARB(1, &obj->VertexBufferID); - obj->ColorBufferID = obj->VertexBufferID; - - glBindBufferARB(GL_ARRAY_BUFFER_ARB, obj->VertexBufferID); - glBufferDataARB(GL_ARRAY_BUFFER_ARB, bytes, vertexData, GL_STATIC_DRAW_ARB); - - /* Setup a buffer of indices to test the ELEMENTS path */ - glGenBuffersARB(1, &obj->ElementsBufferID); - glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, obj->ElementsBufferID); - glBufferDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, 100, NULL, GL_STATIC_DRAW_ARB); - i = (GLuint *) glMapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, GL_READ_WRITE_ARB); - i[0] = 0; - i[1] = 1; - i[2] = 2; - i[3] = 3; - glUnmapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB); - obj->NumElements = 4; - - if (Have_ARB_vertex_array_object) { - CreateVertexArrayObject(obj); - } -} - - -/* - * Vertex and color data in different buffers. - */ -static void MakeObject4(struct object *obj) -{ - static const GLfloat vertexData[] = { - 0, -1, 0, - 0.5, 0, 0, - 0, 1, 0, - -0.5, 0, 0 - }; - static const GLfloat colorData[] = { - 1, 1, 1, - 1, 1, 0, - .5, .5, 0, - 1, 1, 0 - }; - - obj->VertexOffset = 0; - obj->VertexStride = 0; - obj->ColorOffset = 0; - obj->ColorStride = 0; - obj->NumVerts = 4; - - glGenBuffersARB(1, &obj->VertexBufferID); - glBindBufferARB(GL_ARRAY_BUFFER_ARB, obj->VertexBufferID); - glBufferDataARB(GL_ARRAY_BUFFER_ARB, sizeof(vertexData), vertexData, - GL_STATIC_DRAW_ARB); - - glGenBuffersARB(1, &obj->ColorBufferID); - glBindBufferARB(GL_ARRAY_BUFFER_ARB, obj->ColorBufferID); - glBufferDataARB(GL_ARRAY_BUFFER_ARB, sizeof(colorData), colorData, - GL_STATIC_DRAW_ARB); - - /* Setup a buffer of indices to test the ELEMENTS path */ - obj->ElementsBufferID = 0; - obj->NumElements = 0; - - if (Have_ARB_vertex_array_object) { - CreateVertexArrayObject(obj); - } -} - - - -static void Init( void ) -{ - if (!glutExtensionSupported("GL_ARB_vertex_buffer_object")) { - printf("GL_ARB_vertex_buffer_object not found!\n"); - exit(0); - } - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - - Have_ARB_vertex_array_object = - glutExtensionSupported("GL_ARB_vertex_array_object"); - - printf("Using GL_ARB_vertex_array_object: %s\n", - (Have_ARB_vertex_array_object ? "yes" : "no")); - - - /* Test buffer object deletion */ - if (1) { - static GLubyte data[1000]; - GLuint id = 999; - glBindBufferARB(GL_ARRAY_BUFFER_ARB, id); - glBufferDataARB(GL_ARRAY_BUFFER_ARB, 1000, data, GL_STATIC_DRAW_ARB); - glVertexPointer(3, GL_FLOAT, 0, (void *) 0); - glDeleteBuffersARB(1, &id); - assert(!glIsBufferARB(id)); - glBindBufferARB(GL_ARRAY_BUFFER_ARB, 0); - glVertexPointer(3, GL_FLOAT, 0, (void *) 0); - assert(!glIsBufferARB(id)); - } - - memset(Objects, 0, sizeof(Objects)); - MakeObject1(Objects + 0); - MakeObject2(Objects + 1); - MakeObject3(Objects + 2); - MakeObject4(Objects + 3); - NumObjects = 4; -} - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 600, 300 ); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE ); - Win = glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutSpecialFunc( SpecialKey ); - glutDisplayFunc( Display ); - if (Anim) - glutIdleFunc(Idle); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/bug_3050.c b/progs/tests/bug_3050.c deleted file mode 100644 index a04e40eaf6..0000000000 --- a/progs/tests/bug_3050.c +++ /dev/null @@ -1,164 +0,0 @@ -/* - * (C) Copyright IBM Corporation 2006 - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * on the rights to use, copy, modify, merge, publish, distribute, sub - * license, and/or sell copies of the Software, and to permit persons to whom - * the Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL - * VA LINUX SYSTEM, IBM AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - * USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/** - * \file bug_3050.c - * - * Simple regression test for bug #3050. Create a texture and make a few - * calls to \c glGetTexLevelParameteriv. If the bug still exists, trying - * to get \c GL_TEXTURE_WITDH will cause a protocol error. - * - * This test \b only applies to indirect-rendering. This may mean that the - * test needs to be run with the environment variable \c LIBGL_ALWAYS_INDIRECT - * set to a non-zero value. - * - * \author Ian Romanick <idr@us.ibm.com> - */ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <GL/glew.h> -#include <GL/glut.h> - -static int Width = 400; -static int Height = 200; -static const GLfloat Near = 5.0, Far = 25.0; - - -static void Display( void ) -{ -} - - -static void Reshape( int width, int height ) -{ -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void Init( void ) -{ - unsigned i; - static const GLenum pnames[] = { - GL_TEXTURE_RED_SIZE, - GL_TEXTURE_GREEN_SIZE, - GL_TEXTURE_BLUE_SIZE, - GL_TEXTURE_ALPHA_SIZE, - GL_TEXTURE_LUMINANCE_SIZE, - GL_TEXTURE_INTENSITY_SIZE, - GL_TEXTURE_BORDER, - GL_TEXTURE_INTERNAL_FORMAT, - GL_TEXTURE_WIDTH, - GL_TEXTURE_HEIGHT, - GL_TEXTURE_DEPTH, - ~0 - }; - - - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - - printf("\nThis program should log some data about a texture and exit.\n"); - printf("This is a regression test for bug #3050. If the bug still\n"); - printf("exists, a GLX protocol error will be generated.\n"); - printf("https://bugs.freedesktop.org/show_bug.cgi?id=3050\n\n"); - - - if ( ! glutExtensionSupported( "GL_NV_texture_rectangle" ) - && ! glutExtensionSupported( "GL_EXT_texture_rectangle" ) - && ! glutExtensionSupported( "GL_ARB_texture_rectangle" ) ) { - printf( "This test requires one of GL_ARB_texture_rectangle, GL_EXT_texture_rectangle,\n" - "or GL_NV_texture_rectangle be supported\n." ); - exit( 1 ); - } - - - glBindTexture( GL_TEXTURE_RECTANGLE_NV, 1 ); - glTexImage2D( GL_PROXY_TEXTURE_RECTANGLE_NV, 0, GL_RGBA, 8, 8, 0, - GL_RGBA, GL_UNSIGNED_BYTE, NULL ); - - for ( i = 0 ; pnames[i] != ~0 ; i++ ) { - GLint param_i; - GLfloat param_f; - GLenum err; - - glGetTexLevelParameteriv( GL_PROXY_TEXTURE_RECTANGLE_NV, 0, pnames[i], & param_i ); - err = glGetError(); - - if ( err ) { - printf("glGetTexLevelParameteriv(GL_PROXY_TEXTURE_RECTANGLE_NV, 0, 0x%04x, & param) generated a GL\n" - "error of 0x%04x!", - pnames[i], err ); - exit( 1 ); - } - else { - printf("glGetTexLevelParameteriv(GL_PROXY_TEXTURE_RECTANGLE_NV, 0, 0x%04x, & param) = 0x%04x\n", - pnames[i], param_i ); - } - - - glGetTexLevelParameterfv( GL_PROXY_TEXTURE_RECTANGLE_NV, 0, pnames[i], & param_f ); - err = glGetError(); - - if ( err ) { - printf("glGetTexLevelParameterfv(GL_PROXY_TEXTURE_RECTANGLE_NV, 0, 0x%04x, & param) generated a GL\n" - "error of 0x%04x!\n", - pnames[i], err ); - exit( 1 ); - } - else { - printf("glGetTexLevelParameterfv(GL_PROXY_TEXTURE_RECTANGLE_NV, 0, 0x%04x, & param) = %.1f (0x%04x)\n", - pnames[i], param_f, (GLint) param_f ); - } - } -} - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( Width, Height ); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE ); - glutCreateWindow( "Bug #3050 Test" ); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - Init(); - return 0; -} diff --git a/progs/tests/bug_3101.c b/progs/tests/bug_3101.c deleted file mode 100644 index 06a9776155..0000000000 --- a/progs/tests/bug_3101.c +++ /dev/null @@ -1,130 +0,0 @@ -/* - * (C) Copyright IBM Corporation 2005 - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * on the rights to use, copy, modify, merge, publish, distribute, sub - * license, and/or sell copies of the Software, and to permit persons to whom - * the Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL - * VA LINUX SYSTEM, IBM AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - * USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/** - * \file bug_3101.c - * - * Simple regression test for bug #3101. Attempt to draw a single square. - * After emiting the first vertex, call \c glEdgeFlag to change the vertex - * format. If the bug still exists, this will cause a segfault. - * - * \author Ian Romanick <idr@us.ibm.com> - */ - -#include <stdio.h> -#include <stdlib.h> -#include <GL/glew.h> -#include <GL/glut.h> - -static int Width = 400; -static int Height = 200; -static const GLfloat Near = 5.0, Far = 25.0; - - -static void Display( void ) -{ - glClearColor(0.2, 0.2, 0.8, 0); - glClear( GL_COLOR_BUFFER_BIT ); - - glPushMatrix(); - - /* This is the "reference" square. - */ - - glTranslatef(-4.5, 0, 0); - glBlendEquation( GL_FUNC_ADD ); - glBlendFunc( GL_ONE, GL_ZERO ); - glBegin(GL_QUADS); - glColor3f( 0.5, 0.5, 0.5 ); - glVertex2f(-1, -1); - glVertex2f( 1, -1); - glEdgeFlag(GL_TRUE); - glVertex2f( 1, 1); - glVertex2f(-1, 1); - glEnd(); - - glPopMatrix(); - - glutSwapBuffers(); -} - - -static void Reshape( int width, int height ) -{ - GLfloat ar = (float) width / (float) height; - Width = width; - Height = height; - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -ar, ar, -1.0, 1.0, Near, Far ); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - glTranslatef( 0.0, 0.0, -15.0 ); -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void Init( void ) -{ - const char * const ver_string = (const char * const) - glGetString( GL_VERSION ); - - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - printf("GL_VERSION = %s\n", ver_string); - - printf("\nThis program should draw a single square, but not crash.\n"); - printf("This is a regression test for bug #3101.\n"); - printf("https://bugs.freedesktop.org/show_bug.cgi?id=3101\n"); - glEnable( GL_BLEND ); -} - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( Width, Height ); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE ); - glutCreateWindow( "Bug #3101 Test" ); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/bug_3195.c b/progs/tests/bug_3195.c deleted file mode 100644 index a075b94e37..0000000000 --- a/progs/tests/bug_3195.c +++ /dev/null @@ -1,277 +0,0 @@ -/* - * Copyright (C) 2000 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/** - * \file bug_3195.c - * - * Simple regression test for bug #3195. A bug in the i180 driver caused - * a segfault (inside the driver) when the LOD bias is adjusted and no texture - * is enabled. This test, which is based on progs/demos/lodbias.c, sets up - * all the texturing, disables all textures, adjusts the LOD bias, then - * re-enables \c GL_TEXTURE_2D. - * - * \author Brian Paul - * \author Ian Romanick <idr@us.ibm.com> - */ - -#include <assert.h> -#include <stdlib.h> -#include <stdio.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> -#include <GL/glext.h> - -#include "readtex.h" - -#define TEXTURE_FILE "../images/girl.rgb" - -static GLfloat Xrot = 0, Yrot = -30, Zrot = 0; -static GLint Bias = 0, BiasStepSign = +1; /* ints avoid fp precision problem */ -static GLint BiasMin = -400, BiasMax = 400; - - - -static void -PrintString(const char *s) -{ - while (*s) { - glutBitmapCharacter(GLUT_BITMAP_8_BY_13, (int) *s); - s++; - } -} - -static void Idle( void ) -{ - static int lastTime = 0; - int time = glutGet(GLUT_ELAPSED_TIME); - int step; - - if (lastTime == 0) - lastTime = time; - else if (time - lastTime < 10) - return; - - step = (time - lastTime) / 10 * BiasStepSign; - lastTime = time; - - Bias += step; - if (Bias < BiasMin) { - exit(0); - } - else if (Bias > BiasMax) { - Bias = BiasMax; - BiasStepSign = -1; - } - - glutPostRedisplay(); -} - - -static void Display( void ) -{ - char str[100]; - - glClear( GL_COLOR_BUFFER_BIT ); - - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glOrtho(-1, 1, -1, 1, -1, 1); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - - glDisable(GL_TEXTURE_2D); - glColor3f(1,1,1); - glRasterPos3f(-0.9, -0.9, 0.0); - sprintf(str, "Texture LOD Bias = %4.1f", Bias * 0.01); - PrintString(str); - - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -1.0, 1.0, -1.0, 1.0, 5.0, 25.0 ); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - glTranslatef( 0.0, 0.0, -8.0 ); - - glPushMatrix(); - glRotatef(Xrot, 1, 0, 0); - glRotatef(Yrot, 0, 1, 0); - glRotatef(Zrot, 0, 0, 1); - - glTexEnvf(GL_TEXTURE_FILTER_CONTROL_EXT, GL_TEXTURE_LOD_BIAS_EXT, 0.01 * Bias); - glEnable(GL_TEXTURE_2D); - - glBegin(GL_POLYGON); - glTexCoord2f(0, 0); glVertex2f(-1, -1); - glTexCoord2f(2, 0); glVertex2f( 1, -1); - glTexCoord2f(2, 2); glVertex2f( 1, 1); - glTexCoord2f(0, 2); glVertex2f(-1, 1); - glEnd(); - - glPopMatrix(); - - glutSwapBuffers(); -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void SpecialKey( int key, int x, int y ) -{ - const GLfloat step = 3.0; - (void) x; - (void) y; - switch (key) { - case GLUT_KEY_UP: - Xrot -= step; - break; - case GLUT_KEY_DOWN: - Xrot += step; - break; - case GLUT_KEY_LEFT: - Yrot -= step; - break; - case GLUT_KEY_RIGHT: - Yrot += step; - break; - } - glutPostRedisplay(); -} - - -static void Init( void ) -{ - GLfloat maxBias; - const char * const ver_string = (const char * const) - glGetString( GL_VERSION ); - - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - printf("GL_VERSION = %s\n", ver_string); - - printf("\nThis program should function nearly identically to Mesa's lodbias demo.\n" - "It should cycle through the complet LOD bias range once and exit. If bug\n" - "#3195 still exists, the demo should crash almost immediatly.\n"); - printf("This is a regression test for bug #3195.\n"); - printf("https://bugs.freedesktop.org/show_bug.cgi?id=3195\n"); - - if (!glutExtensionSupported("GL_EXT_texture_lod_bias")) { - printf("Sorry, GL_EXT_texture_lod_bias not supported by this renderer.\n"); - exit(1); - } - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - - if (glutExtensionSupported("GL_SGIS_generate_mipmap")) { - /* test auto mipmap generation */ - GLint width, height, i; - GLenum format; - GLubyte *image = LoadRGBImage(TEXTURE_FILE, &width, &height, &format); - if (!image) { - printf("Error: could not load texture image %s\n", TEXTURE_FILE); - exit(1); - } - /* resize to 256 x 256 */ - if (width != 256 || height != 256) { - GLubyte *newImage = malloc(256 * 256 * 4); - gluScaleImage(format, width, height, GL_UNSIGNED_BYTE, image, - 256, 256, GL_UNSIGNED_BYTE, newImage); - free(image); - image = newImage; - } - printf("Using GL_SGIS_generate_mipmap\n"); - glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP_SGIS, GL_TRUE); - glTexImage2D(GL_TEXTURE_2D, 0, format, 256, 256, 0, - format, GL_UNSIGNED_BYTE, image); - free(image); - - /* make sure mipmap was really generated correctly */ - width = height = 256; - for (i = 0; i < 9; i++) { - GLint w, h; - glGetTexLevelParameteriv(GL_TEXTURE_2D, i, GL_TEXTURE_WIDTH, &w); - glGetTexLevelParameteriv(GL_TEXTURE_2D, i, GL_TEXTURE_HEIGHT, &h); - printf("Level %d size: %d x %d\n", i, w, h); - assert(w == width); - assert(h == height); - width /= 2; - height /= 2; - } - - } - else if (!LoadRGBMipmaps(TEXTURE_FILE, GL_RGB)) { - printf("Error: could not load texture image %s\n", TEXTURE_FILE); - exit(1); - } - - /* mipmapping required for this extension */ - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - - glGetFloatv(GL_MAX_TEXTURE_LOD_BIAS_EXT, &maxBias); - printf("LOD bias range: [%g, %g]\n", -maxBias, maxBias); - BiasMin = -100 * maxBias; - BiasMax = 100 * maxBias; - - /* Since we have (about) 8 mipmap levels, no need to bias beyond - * the range [-1, +8]. - */ - if (BiasMin < -100) - BiasMin = -100; - if (BiasMax > 800) - BiasMax = 800; -} - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 350, 350 ); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE ); - glutCreateWindow( "Bug #3195 Test" ); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutSpecialFunc( SpecialKey ); - glutDisplayFunc( Display ); - glutIdleFunc(Idle); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/bug_texstore_i8.c b/progs/tests/bug_texstore_i8.c deleted file mode 100644 index b070011bd2..0000000000 --- a/progs/tests/bug_texstore_i8.c +++ /dev/null @@ -1,196 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ -/* - * Based on the trivial/quad-tex-2d program. - * Modified by Jakob Bornecrantz <jakob@tungstengraphics.com> - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glew.h> -#include <GL/glut.h> - -static GLenum Target = GL_TEXTURE_2D; -static GLenum Filter = GL_NEAREST; -GLenum doubleBuffer; -static float Rot = 0; -static int win = 0; - -static void Init(void) -{ - int internalFormat; - int sourceFormat; - - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - - glClearColor(0.0, 0.0, 1.0, 0.0); - -#define SIZE 16 - { - GLubyte tex2d[SIZE][SIZE][4]; - GLint s, t; - - for (s = 0; s < SIZE; s++) { - for (t = 0; t < SIZE; t++) { - tex2d[t][s][0] = 0xff; - tex2d[t][s][1] = 0xff; - tex2d[t][s][2] = 0xff; - tex2d[t][s][3] = 0xff; - } - } - - internalFormat = GL_LUMINANCE8; - sourceFormat = GL_RGBA; - - glTexImage2D(Target, - 0, - internalFormat, - SIZE, SIZE, - 0, - sourceFormat, - GL_UNSIGNED_BYTE, - /* GL_UNSIGNED_INT, */ - tex2d); - - glEnable(Target); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - glTexParameterf(Target, GL_TEXTURE_WRAP_R, GL_REPEAT); - glTexParameterf(Target, GL_TEXTURE_MIN_FILTER, Filter); - glTexParameterf(Target, GL_TEXTURE_MAG_FILTER, Filter); - } -} - -static void Reshape(int width, int height) -{ - glViewport(0, 0, (GLint)width, (GLint)height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); -#if 0 - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); -#else - glFrustum(-1, 1, -1, 1, 10, 20); -#endif - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0, 0, -15); -} - -static void Key(unsigned char key, int x, int y) -{ - switch (key) { - case 'r': - Rot += 10.0; - break; - case 'R': - Rot -= 10.0; - break; - case 27: - glutDestroyWindow(win); - exit(0); - default: - return; - } - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glPushMatrix(); - glRotatef(Rot, 0, 1, 0); - - glBegin(GL_QUADS); - glTexCoord2f(1,0); - glVertex3f( 0.9, -0.9, 0.0); - glTexCoord2f(1,1); - glVertex3f( 0.9, 0.9, 0.0); - glTexCoord2f(0,1); - glVertex3f(-0.9, 0.9, 0.0); - glTexCoord2f(0,0); - glVertex3f(-0.9, -0.9, 0.0); - glEnd(); - - glPopMatrix(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); - glutInitWindowSize(250, 250); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - win = glutCreateWindow("Tex test"); - glewInit(); - if (!win) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/bumpmap.c b/progs/tests/bumpmap.c deleted file mode 100644 index 1b7ec2c135..0000000000 --- a/progs/tests/bumpmap.c +++ /dev/null @@ -1,208 +0,0 @@ -/* - * Copyright (c) 2009 VMware, Inc. - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * on the rights to use, copy, modify, merge, publish, distribute, sub - * license, and/or sell copies of the Software, and to permit persons to whom - * the Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL - * VA LINUX SYSTEM, IBM AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - * USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/** - * Simple test for testing ATI_envmap_bumpmap support. - */ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <math.h> -#include <GL/glut.h> - -#include "readtex.h" - -static PFNGLGETTEXBUMPPARAMETERFVATIPROC glGetTexBumpParameterfvATI_func = NULL; -static PFNGLGETTEXBUMPPARAMETERIVATIPROC glGetTexBumpParameterivATI_func = NULL; -static PFNGLTEXBUMPPARAMETERFVATIPROC glTexBumpParameterfvATI_func = NULL; - -static const char *TexFile = "../images/arch.rgb"; - -static const GLfloat Near = 5.0, Far = 25.0; - -static void Display( void ) -{ - /* together with the construction of dudv map, do fixed translation - in y direction (up), some cosine deformation in x and more - deformation in y dir */ - GLfloat bumpMatrix[4] = {0.1, 0.0, 0.2, 0.1}; - - - glClearColor(0.2, 0.2, 0.8, 0); - glClear( GL_COLOR_BUFFER_BIT ); - - glPushMatrix(); - - /* this is the base map */ - glActiveTexture( GL_TEXTURE0 ); - glEnable( GL_TEXTURE_2D ); - glBindTexture( GL_TEXTURE_2D, 1 ); - glTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE ); - glTexEnvf( GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_REPLACE ); - glTexEnvf( GL_TEXTURE_ENV, GL_SOURCE0_RGB, GL_TEXTURE ); - - /* bump map */ - glActiveTexture( GL_TEXTURE1 ); - glEnable( GL_TEXTURE_2D ); - glBindTexture( GL_TEXTURE_2D, 2 ); - glTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE ); - glTexEnvf( GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_BUMP_ENVMAP_ATI ); - glTexEnvf( GL_TEXTURE_ENV, GL_BUMP_TARGET_ATI, GL_TEXTURE0); - - glTexBumpParameterfvATI_func(GL_BUMP_ROT_MATRIX_ATI, bumpMatrix); - - glCallList(1); - - glPopMatrix(); - - glutSwapBuffers(); -} - - -static void Reshape( int width, int height ) -{ - GLfloat ar = (float) width / (float) height; - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -ar, ar, -1.0, 1.0, Near, Far ); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - glTranslatef( 0.0, 0.0, -6.0 ); -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void Init( void ) -{ - const char * const ver_string = (const char * const) - glGetString( GL_VERSION ); - GLfloat temp[16][16][2]; - GLubyte *image = NULL; - GLint imgWidth, imgHeight; - GLenum imgFormat; - GLint i,j; - GLint param, paramArray[16]; - GLfloat paramMat[4]; - - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - printf("GL_VERSION = %s\n", ver_string); - - if ( !glutExtensionSupported("GL_ATI_envmap_bumpmap")) { - printf("\nSorry, this program requires GL_ATI_envmap_bumpmap\n"); - exit(1); - } - - glGetTexBumpParameterfvATI_func = glutGetProcAddress("glGetTexBumpParameterfvATI"); - glGetTexBumpParameterivATI_func = glutGetProcAddress("glGetTexBumpParameterivATI"); - glTexBumpParameterfvATI_func = glutGetProcAddress("glTexBumpParameterfvATI"); - - glGetTexBumpParameterivATI_func(GL_BUMP_ROT_MATRIX_SIZE_ATI, ¶m); - printf("BUMP_ROT_MATRIX_SIZE_ATI = %d\n", param); - glGetTexBumpParameterivATI_func(GL_BUMP_NUM_TEX_UNITS_ATI, ¶m); - printf("BUMP_NUM_TEX_UNITS_ATI = %d\n", param); - glGetTexBumpParameterfvATI_func(GL_BUMP_ROT_MATRIX_ATI, paramMat); - printf("initial rot matrix %f %f %f %f\n", paramMat[0], paramMat[1], paramMat[2], paramMat[3]); - glGetTexBumpParameterivATI_func(GL_BUMP_TEX_UNITS_ATI, paramArray); - printf("units supporting bump mapping: "); - for (i = 0; i < param; i++) - printf("%d ", paramArray[i] - GL_TEXTURE0); - printf("\n"); - - image = LoadRGBImage(TexFile, &imgWidth, &imgHeight, &imgFormat); - if (!image) { - printf("Couldn't read %s\n", TexFile); - exit(0); - } - - glBindTexture( GL_TEXTURE_2D, 1 ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE ); - glTexImage2D( GL_TEXTURE_2D, 0, imgFormat, imgWidth, imgHeight, 0, - imgFormat, GL_UNSIGNED_BYTE, image ); - - for (j = 0; j < 16; j++) { - for (i = 0; i < 16; i++) { - temp[j][i][0] = cos((float)(i) * 3.1415 / 16.0); - temp[j][i][1] = -0.5; - } - } - glBindTexture( GL_TEXTURE_2D, 2 ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE ); - glTexImage2D( GL_TEXTURE_2D, 0, GL_DU8DV8_ATI, 16, 16, 0, - GL_DUDV_ATI, GL_FLOAT, temp ); - - - glNewList( 1, GL_COMPILE ); - glBegin(GL_QUADS); - glColor3f( 0.9, 0.0, 0.0 ); - glMultiTexCoord2f( GL_TEXTURE0, 0.0, 0.0 ); - glMultiTexCoord2f( GL_TEXTURE1, 0.0, 0.0 ); - glVertex2f(-1, -1); - glMultiTexCoord2f( GL_TEXTURE0, 1.0, 0.0 ); - glMultiTexCoord2f( GL_TEXTURE1, 1.0, 0.0 ); - glVertex2f( 1, -1); - glMultiTexCoord2f( GL_TEXTURE0, 1.0, 1.0 ); - glMultiTexCoord2f( GL_TEXTURE1, 1.0, 1.0 ); - glVertex2f( 1, 1); - glMultiTexCoord2f( GL_TEXTURE0, 0.0, 1.0 ); - glMultiTexCoord2f( GL_TEXTURE1, 0.0, 1.0 ); - glVertex2f(-1, 1); - glEnd(); - glEndList(); -} - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 400, 400 ); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE ); - glutCreateWindow( "GL_ATI_envmap_bumpmap test" ); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/calibrate_rast.c b/progs/tests/calibrate_rast.c deleted file mode 100644 index 5d89ff79c5..0000000000 --- a/progs/tests/calibrate_rast.c +++ /dev/null @@ -1,397 +0,0 @@ -/* - * Automatic primitive rasterization precision test. - * - * Draw prims at various sub-pixel offsets and examine where the quad is - * actually drawn. - * Check if the range of offsets which paint the right pixels falls within - * OpenGL's specification. - * In case of failures, report the coordinate bias needed to fix the problem. - * - * Note that even Mesa/swrast fails some line tests. This is because some - * window coordinates wind up as 53.9999 instead of 54, for example. Enabling - * the small translation factor below fixes that. Revisit someday... - * - * Brian Paul - * 28 Feb 2008 - */ - - -#include <assert.h> -#include <stdio.h> -#include <stdlib.h> -#include <GL/glew.h> -#include <GL/glut.h> - - -static int Width = 100, Height = 100; -static int Win; -static float Step = 0.125; -#if 0 -/* This tiny offset fixes errors in Mesa/Xlib */ -static float Xtrans = 0.5 * 0.125; -static float Ytrans = 0.5 * 0.125; -#else -static float Xtrans = 0.0; -static float Ytrans = 0.0; -#endif - - -static void -PointCalibrate(int xpos, int ypos) -{ - GLfloat rgba[4]; - float x, y; - float xmin, ymin, xmax, ymax; - - xmin = ymin = 1000.0; - xmax = ymax = -1000.0; - - for (y = -1.0; y <= 1.0; y += Step) { - for (x = -1.0; x <= 1.0; x += Step) { - glClear(GL_COLOR_BUFFER_BIT); - glBegin(GL_POINTS); - glVertex2f(xpos + x, ypos + y); - glEnd(); - glReadPixels(xpos, ypos, 1, 1, GL_RGBA, GL_FLOAT, rgba); - if (rgba[0] == 1.0 && rgba[1] == 1.0 && rgba[2] == 1.0) { - /* hit */ - if (x < xmin) - xmin = x; - if (y < ymin) - ymin = y; - if (x > xmax) - xmax = x; - if (y > ymax) - ymax = y; - } - } - } - - printf("Point at (%2d, %2d) drawn for x in [%6.3f, %6.3f] and y in [%6.3f, %6.3f]\n", - xpos, ypos, - xpos + xmin, xpos + xmax, - ypos + ymin, ypos + ymax); - - if (xmax - xmin != 1.0 - Step) { - printf(" => Inconsistant X-axis rasterization!\n"); - } - if (ymax - ymin != 1.0 - Step) { - printf(" => Inconsistant Y-axis rasterization!\n"); - } - if (xmin < 0.0) { - printf(" => Points should be X biased by about %f\n", xmin); - } - if (ymin < 0.0) { - printf(" => Points should be Y biased by about %f\n", ymin); - } - if (xmax > 1.0) { - printf(" => Points should be X biased by about %f\n", 1.0 - xmax); - } - if (ymax > 1.0) { - printf(" => Points should be Y biased by about %f\n", 1.0 - ymax); - } - -} - - -/** - * XXX Implement VLineCalibrate() someday - */ -static void -HLineCalibrate(int xpos, int ypos, int len) -{ - GLfloat rgba[2][4]; - float x, y; - float ymin, ymax; - float xmin_left, xmax_left, xmin_right, xmax_right; - - xmin_left = xmin_right = 1000.0; - xmax_left = xmax_right = -1000.0; - ymin = 1000; - ymax = -1000.0; - - /* - * First, check vertical positioning of the horizontal line - */ - for (y = -1.0; y <= 1.0; y += Step) { - glClear(GL_COLOR_BUFFER_BIT); - glBegin(GL_LINES); - glVertex2f(xpos, ypos + y); - glVertex2f(xpos + len, ypos + y); - glEnd(); - - glReadPixels(xpos + len / 2, ypos, 1, 1, GL_RGBA, GL_FLOAT, rgba); - if (rgba[0][0] == 1.0) { - /* hit */ - if (y < ymin) - ymin = y; - if (y > ymax) - ymax = y; - } - } - - printf("H-line at Y=%2d drawn for y in [%6.3f, %6.3f]\n", - ypos, - ypos + ymin, ypos + ymax); - - if (ymax - ymin != 1.0 - Step) { - printf(" => Inconsistant Y-axis rasterization!\n"); - } - - if (ymin > 0.5 ) { - printf(" => Lines should be Y biased by about %f\n", ymin - 0.5); - } - - if (ymax < 0.5 ) { - printf(" => Lines should be Y biased by about %f\n", 0.5 - ymax); - } - - /* - * Second, check endpoints (for Y at 1/2 pixel) - */ - for (x = -1.0; x <= 1.0; x += Step) { - glClear(GL_COLOR_BUFFER_BIT); - glBegin(GL_LINES); - glVertex2f(xpos + x, ypos + 0.5f); - glVertex2f(xpos + x + len, ypos + 0.5f); - glEnd(); - - /* left end */ - glReadPixels(xpos - 1, ypos, 2, 1, GL_RGBA, GL_FLOAT, rgba); - if (rgba[0][0] == 0.0 && rgba[1][0] == 1.0) { - /* hit */ - if (x < xmin_left) - xmin_left = x; - if (x > xmax_left) - xmax_left = x; - } - - /* right end */ - glReadPixels(xpos + len - 1, ypos, 2, 1, GL_RGBA, GL_FLOAT, rgba); - if (rgba[0][0] == 1.0 && rgba[1][0] == 0.0) { - /* hit */ - if (x < xmin_right) - xmin_right = x; - if (x > xmax_right) - xmax_right = x; - } - } - - printf("H-line [%d..%d) hit left end for x in [%6.3f, %6.3f] " - "hit right end for x in [%6.3f, %6.3f]\n", - xpos, xpos + len, - xpos + xmin_left, xpos + xmax_left, - xpos + len + xmin_right, xpos + len + xmax_right); - - if (xmax_left - xmin_left > 1.0 - Step) { - printf(" => Inconsistant left-end rasterization!\n"); - } - if (xmax_right - xmin_right > 1.0 - Step) { - printf(" => Inconsistant right-end rasterization!\n"); - } - - if (xmin_left != xmin_right || - xmax_left != xmax_right) { - printf(" => Inconsistant length!\n"); - } - - if (xmin_left < 0.0) { - printf(" => Coords should be X biased by about %f\n", xmin_left ); - } - if (xmin_right < 0.0) { - printf(" => Coords should be X biased by about %f\n", xmin_right ); - } - if (xmax_left >= 1.0) { - printf(" => Coords should be X biased by about %f\n", -xmax_right + 1.0); - } - if (xmax_right >= 1.0) { - printf(" => Coords should be X biased by about %f\n", -xmax_right + 1.0); - } - -} - - -static void -QuadCalibrate(int xpos, int ypos, int width, int height) -{ - GLfloat rgba1[2][4]; - GLfloat rgba2[2][4]; - float x, y; - float xmin, ymin, xmax, ymax; - - xmin = ymin = 1000.0; - xmax = ymax = -1000.0; - - for (y = -1.0; y <= 1.0; y += Step) { - for (x = -1.0; x <= 1.0; x += Step) { - glClear(GL_COLOR_BUFFER_BIT); - glBegin(GL_QUADS); - glVertex2f(xpos + x, ypos + y); - glVertex2f(xpos + x + width, ypos + y); - glVertex2f(xpos + x + width, ypos + y + height); - glVertex2f(xpos + x, ypos + y + height); - glEnd(); - - /* horizontal measurement */ - glReadPixels(xpos - 1, ypos + 2, 2, 1, GL_RGBA, GL_FLOAT, rgba1); - glReadPixels(xpos + width - 1, ypos + 2, 2, 1, GL_RGBA, GL_FLOAT, rgba2); - if (rgba1[0][0] == 0.0 && rgba1[1][0] == 1.0 && - rgba2[0][0] == 1.0 && rgba2[1][0] == 0.0) { - if (x < xmin) - xmin = x; - if (x > xmax) - xmax = x; - } - - /* vertical measurement */ - glReadPixels(xpos + 2, ypos - 1, 1, 2, GL_RGBA, GL_FLOAT, rgba1); - glReadPixels(xpos + 2, ypos + height - 1, 1, 2, GL_RGBA, GL_FLOAT, rgba2); - if (rgba1[0][0] == 0.0 && rgba1[1][0] == 1.0 && - rgba2[0][0] == 1.0 && rgba2[1][0] == 0.0) { - if (y < ymin) - ymin = y; - if (y > ymax) - ymax = y; - } - } - } - - printf("Quad at (%2d, %2d)..(%2d, %2d) drawn" - " for x in [%6.3f, %6.3f] and y in [%6.3f, %6.3f]\n", - xpos, ypos, - xpos + width, ypos + height, - xpos + xmin, xpos + xmax, - ypos + ymin, ypos + ymax); - - if (xmax - xmin != 1.0 - Step) { - printf(" => Inconsistant X-axis rasterization/size!\n"); - } - if (ymax - ymin != 1.0 - Step) { - printf(" => Inconsistant Y-axis rasterization/size!\n"); - } - - if (xmin < -0.5) { - printf(" => Coords should be X biased by about %f\n", 0.5 + xmin ); - } - if (ymin < -0.5) { - printf(" => Coords should be Y biased by about %f\n", 0.5 + ymin); - } - if (xmax > 0.5) { - printf(" => Coords should be X biased by about %f\n", -xmax + 0.5); - } - if (ymax > 0.5) { - printf(" => Coords should be Y biased by about %f\n", -ymax + 0.5); - } -} - - -/** - * Misc/disabled code for debugging. - */ -static void -DebugTest(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glEnable(GL_BLEND); - glBlendFunc(GL_ONE, GL_ONE); - - glColor3f(.5, .5, .5); - - glBegin(GL_LINES); - glVertex2f(30, 35.5); - glVertex2f(54, 35.5); - glVertex2f(54, 35.5); - glVertex2f(66, 35.5); - glEnd(); - - glDisable(GL_BLEND); - glColor3f(1,1,1); -} - - -static void -Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glPushMatrix(); - glTranslatef(Xtrans, Ytrans, 0); - - PointCalibrate(1, 1); - PointCalibrate(50, 50); - PointCalibrate(28, 17); - PointCalibrate(17, 18); - printf("\n"); - - HLineCalibrate(5, 10, 10); - HLineCalibrate(25, 22, 12); - HLineCalibrate(54, 33, 12); - HLineCalibrate(54+12, 33, 12); - printf("\n"); - - QuadCalibrate(2, 2, 10, 10); - QuadCalibrate(50, 50, 10, 10); - QuadCalibrate(28, 17, 12, 12); - QuadCalibrate(17, 28, 12, 12); - - (void) DebugTest; - - glPopMatrix(); - - glutSwapBuffers(); -} - - -static void -Reshape(int width, int height) -{ - Width = width; - Height = height; - glViewport(0, 0, width, height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(0, width, 0, height, -1, 1); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - - -static void -Key(unsigned char key, int x, int y) -{ - (void) x; - (void) y; - switch (key) { - case 27: - glutDestroyWindow(Win); - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void -Init(void) -{ - printf("Measurement/callibration for basic prim rasterization...\n"); - printf("GL_RENDERER: %s\n", (char*) glGetString(GL_RENDERER)); -} - - -int -main(int argc, char *argv[]) -{ - glutInit(&argc, argv); - glutInitWindowPosition(0, 0); - glutInitWindowSize(Width, Height); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); - Win = glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/copypixrate.c b/progs/tests/copypixrate.c deleted file mode 100644 index f63d59f3ce..0000000000 --- a/progs/tests/copypixrate.c +++ /dev/null @@ -1,275 +0,0 @@ -/* - * Measure glCopyPixels speed - * - * Brian Paul - * 26 Jan 2006 - */ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - -static GLint WinWidth = 1000, WinHeight = 800; -static GLint ImgWidth, ImgHeight; - -static GLenum Buffer = GL_FRONT; -static GLenum AlphaTest = GL_FALSE; -static GLboolean UseBlit = GL_FALSE; - -static PFNGLBLITFRAMEBUFFEREXTPROC glBlitFramebufferEXT_func = NULL; - - -/** - * draw teapot in lower-left corner of window - */ -static void -DrawTestImage(void) -{ - GLfloat ar; - - ImgWidth = WinWidth / 3; - ImgHeight = WinHeight / 3; - - glViewport(0, 0, ImgWidth, ImgHeight); - glScissor(0, 0, ImgWidth, ImgHeight); - glEnable(GL_SCISSOR_TEST); - - glClearColor(0.5, 0.5, 0.5, 0.0); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - ar = (float) WinWidth / WinHeight; - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-ar, ar, -1.0, 1.0, 5.0, 25.0); - glMatrixMode(GL_MODELVIEW); - - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_DEPTH_TEST); - glFrontFace(GL_CW); - glPushMatrix(); - glRotatef(45, 1, 0, 0); - glutSolidTeapot(2.0); - glPopMatrix(); - glFrontFace(GL_CCW); - glDisable(GL_DEPTH_TEST); - glDisable(GL_LIGHTING); - - glDisable(GL_SCISSOR_TEST); - - glViewport(0, 0, WinWidth, WinHeight); - glFinish(); -} - - -static int -Rand(int max) -{ - return ((int) rand()) % max; -} - - -static void -BlitOne(void) -{ - int x, y; - - do { - x = Rand(WinWidth); - y = Rand(WinHeight); - } while (x <= ImgWidth && y <= ImgHeight); - -#ifdef GL_EXT_framebuffer_blit - if (UseBlit) - { - glBlitFramebufferEXT_func(0, 0, ImgWidth, ImgHeight, - x, y, x + ImgWidth, y + ImgHeight, - GL_COLOR_BUFFER_BIT, GL_LINEAR); - } - else -#endif - { - glWindowPos2iARB(x, y); - glCopyPixels(0, 0, ImgWidth, ImgHeight, GL_COLOR); - } -} - - -/** - * Measure glCopyPixels rate - */ -static void -RunTest(void) -{ - double t1, t0 = glutGet(GLUT_ELAPSED_TIME) / 1000.0; - int iters = 0; - float copyRate, mbRate; - int r, g, b, a, bpp; - - if (AlphaTest) { - glEnable(GL_ALPHA_TEST); - glAlphaFunc(GL_GREATER, 0.0); - } - - glGetIntegerv(GL_RED_BITS, &r); - glGetIntegerv(GL_GREEN_BITS, &g); - glGetIntegerv(GL_BLUE_BITS, &b); - glGetIntegerv(GL_ALPHA_BITS, &a); - bpp = (r + g + b + a) / 8; - - do { - BlitOne(); - - if (Buffer == GL_FRONT) - glFinish(); /* XXX to view progress */ - - iters++; - - t1 = glutGet(GLUT_ELAPSED_TIME) / 1000.0; - } while (t1 - t0 < 5.0); - - glDisable(GL_ALPHA_TEST); - - copyRate = iters / (t1 - t0); - mbRate = ImgWidth * ImgHeight * bpp * copyRate / (1024 * 1024); - - printf("Image size: %d x %d, %d Bpp\n", ImgWidth, ImgHeight, bpp); - printf("%d copies in %.2f = %.2f copies/sec, %.2f MB/s\n", - iters, t1-t0, copyRate, mbRate); -} - - -static void -Draw(void) -{ - glClearColor(0.0, 0.0, 0.0, 0.0); - glClearColor(0.2, 0.2, 0.8, 0); - glReadBuffer(Buffer); - glDrawBuffer(Buffer); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - DrawTestImage(); - - RunTest(); - - if (Buffer == GL_FRONT) - glFinish(); - else - glutSwapBuffers(); - -#if 1 - printf("exiting\n"); - exit(0); -#endif -} - - -static void -Reshape(int width, int height) -{ - glViewport(0, 0, width, height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-1.0, 1.0, -1.0, 1.0, 5.0, 25.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0, 0.0, -15.0); -} - - -static void -Key(unsigned char key, int x, int y) -{ - (void) x; - (void) y; - switch (key) { - case 'b': - BlitOne(); - break; - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void -SpecialKey(int key, int x, int y) -{ - (void) x; - (void) y; - switch (key) { - case GLUT_KEY_UP: - break; - case GLUT_KEY_DOWN: - break; - case GLUT_KEY_LEFT: - break; - case GLUT_KEY_RIGHT: - break; - } - glutPostRedisplay(); -} - - -static void -ParseArgs(int argc, char *argv[]) -{ - int i; - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-back") == 0) - Buffer = GL_BACK; - else if (strcmp(argv[i], "-alpha") == 0) - AlphaTest = GL_TRUE; - else if (strcmp(argv[i], "-blit") == 0) - UseBlit = GL_TRUE; - } -} - - -static void -Init(void) -{ - if (glutExtensionSupported("GL_EXT_framebuffer_blit")) { - glBlitFramebufferEXT_func = (PFNGLBLITFRAMEBUFFEREXTPROC) - glutGetProcAddress("glBlitFramebufferEXT"); - } - else if (UseBlit) { - printf("Warning: GL_EXT_framebuffer_blit not supported.\n"); - UseBlit = GL_FALSE; - } -} - - -int -main(int argc, char *argv[]) -{ - GLint mode = GLUT_RGB | GLUT_ALPHA | GLUT_DOUBLE | GLUT_DEPTH; - glutInit(&argc, argv); - - ParseArgs(argc, argv); - if (AlphaTest) - mode |= GLUT_ALPHA; - - glutInitWindowPosition(0, 0); - glutInitWindowSize(WinWidth, WinHeight); - glutInitDisplayMode(mode); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutSpecialFunc(SpecialKey); - glutDisplayFunc(Draw); - - printf("GL_RENDERER: %s\n", (char *) glGetString(GL_RENDERER)); - printf("Draw Buffer: %s\n", (Buffer == GL_BACK) ? "Back" : "Front"); - Init(); - - glutMainLoop(); - return 0; -} diff --git a/progs/tests/crossbar.c b/progs/tests/crossbar.c deleted file mode 100644 index 2988e20920..0000000000 --- a/progs/tests/crossbar.c +++ /dev/null @@ -1,237 +0,0 @@ -/* - * (C) Copyright IBM Corporation 2005 - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * on the rights to use, copy, modify, merge, publish, distribute, sub - * license, and/or sell copies of the Software, and to permit persons to whom - * the Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL - * VA LINUX SYSTEM, IBM AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - * USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/** - * \file crossbar.c - * - * Simple test of GL_ARB_texture_env_crossbar functionality. Several squares - * are drawn with different texture combine modes, but all should be rendered - * with the same final color. - * - * \author Ian Romanick <idr@us.ibm.com> - */ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <GL/glew.h> -#include <GL/glut.h> - -static const GLint tests[][8] = { - { 1, GL_REPLACE, GL_PRIMARY_COLOR, GL_PRIMARY_COLOR, - 2, GL_REPLACE, GL_TEXTURE, GL_PRIMARY_COLOR }, - { 3, GL_REPLACE, GL_PRIMARY_COLOR, GL_PRIMARY_COLOR, - 2, GL_SUBTRACT, GL_TEXTURE0, GL_TEXTURE1 }, - { 2, GL_REPLACE, GL_PRIMARY_COLOR, GL_PRIMARY_COLOR, - 2, GL_REPLACE, GL_TEXTURE0, GL_TEXTURE0 }, - { 2, GL_REPLACE, GL_PRIMARY_COLOR, GL_PRIMARY_COLOR, - 1, GL_SUBTRACT, GL_TEXTURE0, GL_TEXTURE1 }, - { 3, GL_ADD, GL_TEXTURE1, GL_TEXTURE1, - 2, GL_MODULATE, GL_TEXTURE1, GL_PREVIOUS }, - { 3, GL_ADD, GL_TEXTURE1, GL_TEXTURE1, - 4, GL_MODULATE, GL_TEXTURE0, GL_PREVIOUS }, -}; - -#define NUM_TESTS (sizeof(tests) / sizeof(tests[0])) - -static int Width = 100 * (NUM_TESTS + 1); -static int Height = 200; -static const GLfloat Near = 5.0, Far = 25.0; - - -static void Display( void ) -{ - unsigned i; - - - glClearColor(0.2, 0.2, 0.8, 0); - glClear( GL_COLOR_BUFFER_BIT ); - - glPushMatrix(); - - /* This is the "reference" square. - */ - - glActiveTexture( GL_TEXTURE0 ); - glDisable( GL_TEXTURE_2D ); - glActiveTexture( GL_TEXTURE1 ); - glDisable( GL_TEXTURE_2D ); - - glTranslatef(-(NUM_TESTS * 1.5), 0, 0); - glBegin(GL_QUADS); - glColor3f( 0.5, 0.5, 0.5 ); - glVertex2f(-1, -1); - glVertex2f( 1, -1); - glVertex2f( 1, 1); - glVertex2f(-1, 1); - glEnd(); - - for ( i = 0 ; i < NUM_TESTS ; i++ ) { - glActiveTexture( GL_TEXTURE0 ); - glEnable( GL_TEXTURE_2D ); - glBindTexture( GL_TEXTURE_2D, tests[i][0] ); - glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE ); - glTexEnvi( GL_TEXTURE_ENV, GL_COMBINE_RGB, tests[i][1] ); - glTexEnvi( GL_TEXTURE_ENV, GL_SOURCE0_RGB, tests[i][2] ); - glTexEnvi( GL_TEXTURE_ENV, GL_SOURCE1_RGB, tests[i][3] ); - - glActiveTexture( GL_TEXTURE1 ); - glEnable( GL_TEXTURE_2D ); - glBindTexture( GL_TEXTURE_2D, tests[i][4] ); - glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE ); - glTexEnvi( GL_TEXTURE_ENV, GL_COMBINE_RGB, tests[i][5] ); - glTexEnvi( GL_TEXTURE_ENV, GL_SOURCE0_RGB, tests[i][6] ); - glTexEnvi( GL_TEXTURE_ENV, GL_SOURCE1_RGB, tests[i][7] ); - - glCallList(1); - } - - glPopMatrix(); - - glutSwapBuffers(); -} - - -static void Reshape( int width, int height ) -{ - GLfloat ar = (float) width / (float) height; - Width = width; - Height = height; - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -ar, ar, -1.0, 1.0, Near, Far ); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - glTranslatef( 0.0, 0.0, -15.0 ); -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void Init( void ) -{ - const char * const ver_string = (const char * const) - glGetString( GL_VERSION ); - float ver = strtod( ver_string, NULL ); - GLint tex_units; - GLint temp[ 256 ]; - - - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - printf("GL_VERSION = %s\n", ver_string); - - if ( (!glutExtensionSupported("GL_ARB_multitexture") - && (ver < 1.3)) - || (!glutExtensionSupported("GL_ARB_texture_env_combine") - && !glutExtensionSupported("GL_EXT_texture_env_combine") - && (ver < 1.3)) - || (!glutExtensionSupported("GL_ARB_texture_env_crossbar") - && !glutExtensionSupported("GL_NV_texture_env_combine4") - && (ver < 1.4)) ) { - printf("\nSorry, this program requires GL_ARB_multitexture and either\n" - "GL_ARB_texture_env_combine or GL_EXT_texture_env_combine (or OpenGL 1.3).\n" - "Either GL_ARB_texture_env_crossbar or GL_NV_texture_env_combine4 (or\n" - "OpenGL 1.4) are also required.\n"); - exit(1); - } - - glGetIntegerv( GL_MAX_TEXTURE_UNITS, & tex_units ); - if ( tex_units < 2 ) { - printf("\nSorry, this program requires at least 2 texture units.\n"); - exit(1); - } - - printf("\nAll %lu squares should be the same color.\n", (unsigned long) NUM_TESTS + 1); - - (void) memset( temp, 0x00, sizeof( temp ) ); - glBindTexture( GL_TEXTURE_2D, 1 ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST ); - glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, 8, 8, 0, - GL_RGBA, GL_UNSIGNED_BYTE, temp ); - - (void) memset( temp, 0x7f, sizeof( temp ) ); - glBindTexture( GL_TEXTURE_2D, 2 ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST ); - glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, 8, 8, 0, - GL_RGBA, GL_UNSIGNED_BYTE, temp ); - - (void) memset( temp, 0xff, sizeof( temp ) ); - glBindTexture( GL_TEXTURE_2D, 3 ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST ); - glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, 8, 8, 0, - GL_RGBA, GL_UNSIGNED_BYTE, temp ); - - (void) memset( temp, 0x3f, sizeof( temp ) ); - glBindTexture( GL_TEXTURE_2D, 4 ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST ); - glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, 8, 8, 0, - GL_RGBA, GL_UNSIGNED_BYTE, temp ); - - - glNewList( 1, GL_COMPILE ); - glTranslatef(3.0, 0, 0); - glBegin(GL_QUADS); - glColor3f( 0.9, 0.0, 0.0 ); - glMultiTexCoord2f( GL_TEXTURE0, 0.5, 0.5 ); - glMultiTexCoord2f( GL_TEXTURE1, 0.5, 0.5 ); - glVertex2f(-1, -1); - glVertex2f( 1, -1); - glVertex2f( 1, 1); - glVertex2f(-1, 1); - glEnd(); - glEndList(); -} - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( Width, Height ); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE ); - glutCreateWindow( "GL_ARB_texture_env_crossbar test" ); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/cva.c b/progs/tests/cva.c deleted file mode 100644 index 02d1dcba2e..0000000000 --- a/progs/tests/cva.c +++ /dev/null @@ -1,161 +0,0 @@ - -/* - * Trivial CVA test, good for testing driver fastpaths (especially - * indexed vertex buffers if they are supported). - * - * Gareth Hughes - * November 2000 - */ - -#include <stdlib.h> -#include <stdio.h> -#include <string.h> -#include <stddef.h> /* for ptrdiff_t, referenced by GL.h when GL_GLEXT_LEGACY defined */ -#ifdef _WIN32 -#include <windows.h> -#endif -#define GL_GLEXT_LEGACY -#include <GL/glew.h> -#include <GL/glut.h> -#include <GL/glext.h> - -GLfloat verts[][4] = { - { -0.5, -0.5, -2.0, 0.0 }, - { 0.5, -0.5, -2.0, 0.0 }, - { -0.5, 0.5, -2.0, 0.0 }, - { 0.5, 0.5, -2.0, 0.0 }, -}; - -GLubyte color[][4] = { - { 0xff, 0x00, 0x00, 0x00 }, - { 0x00, 0xff, 0x00, 0x00 }, - { 0x00, 0x00, 0xff, 0x00 }, - { 0xff, 0xff, 0xff, 0x00 }, -}; - -GLuint indices[] = { 0, 1, 2, 3 }; - -GLboolean compiled = GL_TRUE; -GLboolean doubleBuffer = GL_TRUE; - - -static void init( void ) -{ - glClearColor( 0.0, 0.0, 0.0, 0.0 ); - glShadeModel( GL_SMOOTH ); - - glFrontFace( GL_CCW ); - glCullFace( GL_BACK ); - glEnable( GL_CULL_FACE ); - - glEnable( GL_DEPTH_TEST ); - - glEnableClientState( GL_VERTEX_ARRAY ); - glEnableClientState( GL_COLOR_ARRAY ); - - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -1.0, 1.0, -1.0, 1.0, 2.0, 10.0 ); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - - glVertexPointer( 3, GL_FLOAT, sizeof(verts[0]), verts ); - glColorPointer( 4, GL_UNSIGNED_BYTE, 0, color ); - -#ifdef GL_EXT_compiled_vertex_array - if ( compiled ) { - glLockArraysEXT( 0, 4 ); - } -#endif -} - -static void display( void ) -{ - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - glDrawElements( GL_TRIANGLES, 3, GL_UNSIGNED_INT, indices ); - - glFlush(); - if ( doubleBuffer ) { - glutSwapBuffers(); - } -} - -static void keyboard( unsigned char key, int x, int y ) -{ - switch ( key ) { - case 27: - exit( 0 ); - break; - } - - glutPostRedisplay(); -} - -static GLboolean args( int argc, char **argv ) -{ - GLint i; - - doubleBuffer = GL_TRUE; - - for ( i = 1 ; i < argc ; i++ ) { - if ( strcmp( argv[i], "-sb" ) == 0 ) { - doubleBuffer = GL_FALSE; - } else if ( strcmp( argv[i], "-db" ) == 0 ) { - doubleBuffer = GL_TRUE; - } else { - fprintf( stderr, "%s (Bad option).\n", argv[i] ); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main( int argc, char **argv ) -{ - GLenum type; - char *string; - double version; - - glutInit( &argc, argv ); - - if ( args( argc, argv ) == GL_FALSE ) { - exit( 1 ); - } - - type = GLUT_RGB | GLUT_DEPTH; - type |= ( doubleBuffer ) ? GLUT_DOUBLE : GLUT_SINGLE; - - glutInitDisplayMode( type ); - glutInitWindowSize( 250, 250 ); - glutInitWindowPosition( 100, 100 ); - glutCreateWindow( "CVA Test" ); - glewInit(); - - /* Make sure the server supports GL 1.2 vertex arrays. - */ - string = (char *) glGetString( GL_VERSION ); - - version = atof(string); - if ( version < 1.2 ) { - fprintf( stderr, "This program requires OpenGL 1.2 vertex arrays.\n" ); - exit( -1 ); - } - - /* See if the server supports compiled vertex arrays. - */ - string = (char *) glGetString( GL_EXTENSIONS ); - - if ( !strstr( string, "GL_EXT_compiled_vertex_array" ) ) { - fprintf( stderr, "Compiled vertex arrays not supported by this renderer.\n" ); - compiled = GL_FALSE; - } - - init(); - - glutDisplayFunc( display ); - glutKeyboardFunc( keyboard ); - glutMainLoop(); - - return 0; -} diff --git a/progs/tests/debugger.c b/progs/tests/debugger.c deleted file mode 100644 index 1c2f9bebca..0000000000 --- a/progs/tests/debugger.c +++ /dev/null @@ -1,735 +0,0 @@ -/* - * Test the GL_MESA_program_debug extension - */ - - -#include <assert.h> -#include <ctype.h> -#include <string.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - - -/* - * Print the string with line numbers - */ -static void list_program(const GLubyte *string, GLsizei len) -{ - const char *c = (const char *) string; - int i, line = 1, printNumber = 1; - - for (i = 0; i < len; i++) { - if (printNumber) { - printf("%3d ", line); - printNumber = 0; - } - if (*c == '\n') { - line++; - printNumber = 1; - } - putchar(*c); - c++; - } - putchar('\n'); -} - - -/* - * Return the line number and column number that corresponds to the - * given program position. Also return a null-terminated copy of that - * line of the program string. - */ -static const GLubyte * -find_line_column(const GLubyte *string, const GLubyte *pos, - GLint *line, GLint *col) -{ - const GLubyte *lineStart = string; - const GLubyte *p = string; - GLubyte *s; - int len; - - *line = 1; - - while (p != pos) { - if (*p == (GLubyte) '\n') { - (*line)++; - lineStart = p + 1; - } - p++; - } - - *col = (pos - lineStart) + 1; - - /* return copy of this line */ - while (*p != 0 && *p != '\n') - p++; - len = p - lineStart; - s = (GLubyte *) malloc(len + 1); - memcpy(s, lineStart, len); - s[len] = 0; - - return s; -} - - -#define ARB_VERTEX_PROGRAM 1 -#define ARB_FRAGMENT_PROGRAM 2 -#define NV_VERTEX_PROGRAM 3 -#define NV_FRAGMENT_PROGRAM 4 - - - -struct breakpoint { - enum {PIXEL, LINE} type; - int x, y; - int line; - GLboolean enabled; -}; - -#define MAX_BREAKPOINTS 100 -static struct breakpoint Breakpoints[MAX_BREAKPOINTS]; -static int NumBreakpoints = 0; - - - -/* - * Interactive debugger - */ -static void Debugger2(GLenum target, GLvoid *data) -{ - static GLuint skipCount = 0; - const GLubyte *ln; - GLint pos = 0, line, column; - GLint id; - int progType; - GLint len; - GLubyte *program; - GLboolean stop; - int i; - - /* Sigh, GL_VERTEX_PROGRAM_ARB == GL_VERTEX_PROGRAM_NV so it's a bit - * hard to distinguish between them. - */ - if (target == GL_FRAGMENT_PROGRAM_ARB) - progType = ARB_FRAGMENT_PROGRAM; - else if (target == GL_FRAGMENT_PROGRAM_NV) - progType = NV_FRAGMENT_PROGRAM; - else - progType = NV_VERTEX_PROGRAM; - - /* Until we hit zero, continue rendering */ - if (skipCount > 0) { - skipCount--; - return; - } - - /* Get id of the program and current position */ - switch (progType) { - case ARB_FRAGMENT_PROGRAM: - glGetProgramivARB(GL_FRAGMENT_PROGRAM_ARB, GL_PROGRAM_BINDING_ARB, &id); - glGetIntegerv(GL_FRAGMENT_PROGRAM_POSITION_MESA, &pos); - break; - case NV_FRAGMENT_PROGRAM: - glGetIntegerv(GL_FRAGMENT_PROGRAM_BINDING_NV, &id); - glGetIntegerv(GL_FRAGMENT_PROGRAM_POSITION_MESA, &pos); - break; - case ARB_VERTEX_PROGRAM: - glGetProgramivARB(GL_VERTEX_PROGRAM_ARB, GL_PROGRAM_BINDING_ARB, &id); - glGetIntegerv(GL_VERTEX_PROGRAM_POSITION_MESA, &pos); - break; - case NV_VERTEX_PROGRAM: - glGetIntegerv(GL_VERTEX_PROGRAM_BINDING_NV, &id); - glGetIntegerv(GL_VERTEX_PROGRAM_POSITION_MESA, &pos); - break; - default: - abort(); - } - - /* get program string */ - if (progType == ARB_VERTEX_PROGRAM || - progType == ARB_FRAGMENT_PROGRAM) - glGetProgramivARB(target, GL_PROGRAM_LENGTH_ARB, &len); - else - glGetProgramivNV(id, GL_PROGRAM_LENGTH_NV, &len); - program = malloc(len + 1); - if (progType == ARB_VERTEX_PROGRAM || - progType == ARB_FRAGMENT_PROGRAM) - glGetProgramStringARB(target, GL_PROGRAM_STRING_ARB, program); - else - glGetProgramStringNV(id, GL_PROGRAM_STRING_NV, program); - - - /* Get current line number, column, line string */ - ln = find_line_column(program, program + pos, &line, &column); - - /* test breakpoints */ - if (NumBreakpoints > 0) - stop = GL_FALSE; - else - stop = GL_TRUE; - for (i = 0; i < NumBreakpoints; i++) { - if (Breakpoints[i].enabled) { - switch (Breakpoints[i].type) { - case PIXEL: - if (progType == ARB_FRAGMENT_PROGRAM) { - - } - else if (progType == NV_FRAGMENT_PROGRAM) { - GLfloat pos[4]; - int px, py; - glGetProgramRegisterfvMESA(GL_FRAGMENT_PROGRAM_NV, - 6, (GLubyte *) "f[WPOS]", pos); - px = (int) pos[0]; - py = (int) pos[1]; - printf("%d, %d\n", px, py); - if (px == Breakpoints[i].x && - py == Breakpoints[i].y) { - printf("Break at pixel (%d, %d)\n", px, py); - stop = GL_TRUE; - } - } - break; - case LINE: - if (line == Breakpoints[i].line) { - /* hit a breakpoint! */ - printf("Break at line %d\n", line); - stop = GL_TRUE; - } - break; - } - } - } - if (!stop) { - free(program); - return; - } - - printf("%d: %s\n", line, ln); - - /* get commands from stdin */ - while (1) { - char command[1000], *cmd; - - /* print prompt and get command */ - printf("(%s %d) ", (target == GL_VERTEX_PROGRAM_ARB ? "vert" : "frag"), - line); - fgets(command, 999, stdin); - - /* skip leading whitespace */ - for (cmd = command; cmd[0] == ' '; cmd++) - ; - - if (!cmd[0]) - /* nothing (repeat the previous cmd?) */ - continue; - - switch (cmd[0]) { - case 's': - /* skip N instructions */ - i = atoi(cmd + 2); - skipCount = i; - printf("Skipping %d instructions\n", i); - return; - case 'n': - /* next */ - return; - case 'c': - return; - case 'd': - /* dump machine state */ - if (progType == NV_FRAGMENT_PROGRAM) { - static const char *inRegs[] = { - "f[WPOS]", "f[COL0]", "f[COL1]", "f[FOGC]", - "f[TEX0]", "f[TEX1]", "f[TEX2]", "f[TEX3]", - NULL - }; - static const char *outRegs[] = { - "o[COLR]", "o[COLH]", "o[DEPR]", NULL - }; - GLfloat v[4]; - int i; - printf("Fragment input attributes:\n"); - for (i = 0; inRegs[i]; i++) { - glGetProgramRegisterfvMESA(GL_FRAGMENT_PROGRAM_NV, - strlen(inRegs[i]), - (const GLubyte *) inRegs[i], v); - printf(" %s: %g, %g, %g, %g\n", inRegs[i], - v[0], v[1], v[2], v[3]); - } - printf("Fragment output attributes:\n"); - for (i = 0; outRegs[i]; i++) { - glGetProgramRegisterfvMESA(GL_FRAGMENT_PROGRAM_NV, - strlen(outRegs[i]), - (const GLubyte *) outRegs[i], v); - printf(" %s: %g, %g, %g, %g\n", outRegs[i], - v[0], v[1], v[2], v[3]); - } - printf("Temporaries:\n"); - for (i = 0; i < 4; i++) { - char temp[100]; - GLfloat v[4]; - sprintf(temp, "R%d", i); - glGetProgramRegisterfvMESA(GL_FRAGMENT_PROGRAM_NV, - strlen(temp), - (const GLubyte *) temp, v); - printf(" %s: %g, %g, %g, %g\n", temp, v[0],v[1],v[2],v[3]); - } - } - else if (progType == NV_VERTEX_PROGRAM) { - GLfloat v[4]; - int i; - static const char *inRegs[] = { - "v[OPOS]", "v[WGHT]", "v[NRML]", "v[COL0]", - "v[COL1]", "v[FOGC]", "v[6]", "v[7]", - "v[TEX0]", "v[TEX1]", "v[TEX2]", "v[TEX3]", - "v[TEX4]", "v[TEX5]", "v[TEX6]", "v[TEX7]", - NULL - }; - static const char *outRegs[] = { - "o[HPOS]", "o[COL0]", "o[COL1]", "o[BFC0]", - "o[BFC1]", "o[FOGC]", "o[PSIZ]", - "o[TEX0]", "o[TEX1]", "o[TEX2]", "o[TEX3]", - "o[TEX4]", "o[TEX5]", "o[TEX6]", "o[TEX7]", - NULL - }; - printf("Vertex input attributes:\n"); - for (i = 0; inRegs[i]; i++) { - glGetProgramRegisterfvMESA(GL_VERTEX_PROGRAM_NV, - strlen(inRegs[i]), - (const GLubyte *) inRegs[i], v); - printf(" %s: %g, %g, %g, %g\n", inRegs[i], - v[0], v[1], v[2], v[3]); - } - printf("Vertex output attributes:\n"); - for (i = 0; outRegs[i]; i++) { - glGetProgramRegisterfvMESA(GL_VERTEX_PROGRAM_NV, - strlen(outRegs[i]), - (const GLubyte *) outRegs[i], v); - printf(" %s: %g, %g, %g, %g\n", outRegs[i], - v[0], v[1], v[2], v[3]); - } - printf("Temporaries:\n"); - for (i = 0; i < 4; i++) { - char temp[100]; - GLfloat v[4]; - sprintf(temp, "R%d", i); - glGetProgramRegisterfvMESA(GL_VERTEX_PROGRAM_NV, - strlen(temp), - (const GLubyte *) temp, v); - printf(" %s: %g, %g, %g, %g\n", temp, v[0],v[1],v[2],v[3]); - } - } - break; - case 'l': - /* list */ - list_program(program, len); - break; - case 'p': - /* print */ - { - GLfloat v[4]; - char *c; - cmd++; - while (*cmd == ' ') - cmd++; - c = cmd; - while (*c) { - if (*c == '\n' || *c == '\r') - *c = 0; - else - c++; - } - glGetProgramRegisterfvMESA(target, strlen(cmd), - (const GLubyte *) cmd, v); - if (glGetError() == GL_NO_ERROR) - printf("%s = %g, %g, %g, %g\n", cmd, v[0], v[1], v[2], v[3]); - else - printf("Invalid expression\n"); - } - break; - case 'b': - if (cmd[1] == ' ' && isdigit(cmd[2])) { - char *comma = strchr(cmd, ','); - if (comma) { - /* break at pixel */ - int x = atoi(cmd + 2); - int y = atoi(comma + 1); - if (NumBreakpoints < MAX_BREAKPOINTS) { - Breakpoints[NumBreakpoints].type = PIXEL; - Breakpoints[NumBreakpoints].x = x; - Breakpoints[NumBreakpoints].y = y; - Breakpoints[NumBreakpoints].enabled = GL_TRUE; - NumBreakpoints++; - printf("Breakpoint %d: break at pixel (%d, %d)\n", - NumBreakpoints, x, y); - } - } - else { - /* break at line */ - int l = atoi(cmd + 2); - if (l && NumBreakpoints < MAX_BREAKPOINTS) { - Breakpoints[NumBreakpoints].type = LINE; - Breakpoints[NumBreakpoints].line = l; - Breakpoints[NumBreakpoints].enabled = GL_TRUE; - NumBreakpoints++; - printf("Breakpoint %d: break at line %d\n", - NumBreakpoints, l); - } - } - } - else { - /* list breakpoints */ - printf("Breakpoints:\n"); - for (i = 0; i < NumBreakpoints; i++) { - switch (Breakpoints[i].type) { - case LINE: - printf(" %d: break at line %d\n", - i + 1, Breakpoints[i].line); - break; - case PIXEL: - printf(" %d: break at pixel (%d, %d)\n", - i + 1, Breakpoints[i].x, Breakpoints[i].y); - break; - } - } - } - break; - case 'h': - /* help */ - printf("Debugger commands:\n"); - printf(" b list breakpoints\n"); - printf(" b N break at line N\n"); - printf(" b x,y break at pixel x,y\n"); - printf(" c continue execution\n"); - printf(" d display register values\n"); - printf(" h help\n"); - printf(" l list program\n"); - printf(" n next instruction\n"); - printf(" p V print value V\n"); - printf(" s N skip N instructions\n"); - break; - default: - printf("Unknown command: %c\n", cmd[0]); - } - } -} - - -/* - * Print current line, some registers, and continue. - */ -static void Debugger(GLenum target, GLvoid *data) -{ - GLint pos; - const GLubyte *ln; - GLint line, column; - GLfloat v[4]; - - assert(target == GL_FRAGMENT_PROGRAM_NV); - - glGetIntegerv(GL_FRAGMENT_PROGRAM_POSITION_MESA, &pos); - - ln = find_line_column((const GLubyte *) data, (const GLubyte *) data + pos, - &line, &column); - printf("%d:%d: %s\n", line, column, (char *) ln); - - glGetProgramRegisterfvMESA(GL_FRAGMENT_PROGRAM_NV, - 2, (const GLubyte *) "R0", v); - printf(" R0 = %g, %g, %g, %g\n", v[0], v[1], v[2], v[3]); - glGetProgramRegisterfvMESA(GL_FRAGMENT_PROGRAM_NV, - 7, (const GLubyte *) "f[WPOS]", v); - printf(" o[WPOS] = %g, %g, %g, %g\n", v[0], v[1], v[2], v[3]); - glGetProgramRegisterfvMESA(GL_FRAGMENT_PROGRAM_NV, - 7, (const GLubyte *) "o[COLR]", v); - printf(" o[COLR] = %g, %g, %g, %g\n", v[0], v[1], v[2], v[3]); - - free((void *) ln); -} - - - - -/**********************************************************************/ - -static GLfloat Diffuse[4] = { 0.5, 0.5, 1.0, 1.0 }; -static GLfloat Specular[4] = { 0.8, 0.8, 0.8, 1.0 }; -static GLfloat LightPos[4] = { 0.0, 10.0, 20.0, 1.0 }; -static GLfloat Delta = 1.0; - -static GLuint FragProg; -static GLuint VertProg; -static GLboolean Anim = GL_TRUE; -static GLboolean Wire = GL_FALSE; -static GLboolean PixelLight = GL_TRUE; - -static GLfloat Xrot = 0, Yrot = 0; - - -#define NAMED_PARAMETER4FV(prog, name, v) \ - glProgramNamedParameter4fvNV(prog, strlen(name), (const GLubyte *) name, v) - - -static void Display( void ) -{ - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - if (PixelLight) { - NAMED_PARAMETER4FV(FragProg, "LightPos", LightPos); - glEnable(GL_FRAGMENT_PROGRAM_NV); - glEnable(GL_VERTEX_PROGRAM_NV); - glDisable(GL_LIGHTING); - } - else { - glLightfv(GL_LIGHT0, GL_POSITION, LightPos); - glDisable(GL_FRAGMENT_PROGRAM_NV); - glDisable(GL_VERTEX_PROGRAM_NV); - glEnable(GL_LIGHTING); - } - - glPushMatrix(); - glRotatef(Xrot, 1, 0, 0); - glRotatef(Yrot, 0, 1, 0); - -#if 1 - glutSolidSphere(2.0, 10, 5); -#else - { - GLUquadricObj *q = gluNewQuadric(); - gluQuadricNormals(q, GL_SMOOTH); - gluQuadricTexture(q, GL_TRUE); - glRotatef(90, 1, 0, 0); - glTranslatef(0, 0, -1); - gluCylinder(q, 1.0, 1.0, 2.0, 24, 1); - gluDeleteQuadric(q); - } -#endif - - glPopMatrix(); - - glutSwapBuffers(); -} - - -static void Idle(void) -{ - LightPos[0] += Delta; - if (LightPos[0] > 25.0) - Delta = -1.0; - else if (LightPos[0] <- 25.0) - Delta = 1.0; - glutPostRedisplay(); -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -1.0, 1.0, -1.0, 1.0, 5.0, 25.0 ); - /*glOrtho( -2.0, 2.0, -2.0, 2.0, 5.0, 25.0 );*/ - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - glTranslatef( 0.0, 0.0, -15.0 ); -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case ' ': - Anim = !Anim; - if (Anim) - glutIdleFunc(Idle); - else - glutIdleFunc(NULL); - break; - case 'x': - LightPos[0] -= 1.0; - break; - case 'X': - LightPos[0] += 1.0; - break; - case 'w': - Wire = !Wire; - if (Wire) - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - else - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); - break; - case 'p': - PixelLight = !PixelLight; - if (PixelLight) { - printf("Per-pixel lighting\n"); - } - else { - printf("Conventional lighting\n"); - } - break; - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - -static void SpecialKey( int key, int x, int y ) -{ - const GLfloat step = 3.0; - (void) x; - (void) y; - switch (key) { - case GLUT_KEY_UP: - Xrot -= step; - break; - case GLUT_KEY_DOWN: - Xrot += step; - break; - case GLUT_KEY_LEFT: - Yrot -= step; - break; - case GLUT_KEY_RIGHT: - Yrot += step; - break; - } - glutPostRedisplay(); -} - - -static void Init( int argc, char *argv[] ) -{ - static const char *fragProgramText = - "!!FP1.0\n" - "DECLARE Diffuse; \n" - "DECLARE Specular; \n" - "DECLARE LightPos; \n" - - "# Compute normalized LightPos, put it in R0\n" - "DP3 R0.x, LightPos, LightPos;\n" - "RSQ R0.y, R0.x;\n" - "MUL R0, LightPos, R0.y;\n" - - "# Compute normalized normal, put it in R1\n" - "DP3 R1, f[TEX0], f[TEX0]; \n" - "RSQ R1.y, R1.x;\n" - "MUL R1, f[TEX0], R1.y;\n" - - "# Compute dot product of light direction and normal vector\n" - "DP3 R2, R0, R1;\n" - - "MUL R3, Diffuse, R2; # diffuse attenuation\n" - - "POW R4, R2.x, {20.0}.x; # specular exponent\n" - - "MUL R5, Specular, R4; # specular attenuation\n" - - "ADD o[COLR], R3, R5; # add diffuse and specular colors\n" - "END \n" - ; - - static const char *vertProgramText = - "!!VP1.0\n" - "# typical modelview/projection transform\n" - "DP4 o[HPOS].x, c[0], v[OPOS] ;\n" - "DP4 o[HPOS].y, c[1], v[OPOS] ;\n" - "DP4 o[HPOS].z, c[2], v[OPOS] ;\n" - "DP4 o[HPOS].w, c[3], v[OPOS] ;\n" - "# transform normal by inv transpose of modelview, put in tex0\n" - "DP4 o[TEX0].x, c[4], v[NRML] ;\n" - "DP4 o[TEX0].y, c[5], v[NRML] ;\n" - "DP4 o[TEX0].z, c[6], v[NRML] ;\n" - "DP4 o[TEX0].w, c[7], v[NRML] ;\n" - "END\n"; - ; - - if (!glutExtensionSupported("GL_NV_vertex_program")) { - printf("Sorry, this demo requires GL_NV_vertex_program\n"); - exit(1); - } - if (!glutExtensionSupported("GL_NV_fragment_program")) { - printf("Sorry, this demo requires GL_NV_fragment_program\n"); - exit(1); - } - - glGenProgramsNV(1, &FragProg); - assert(FragProg > 0); - glGenProgramsNV(1, &VertProg); - assert(VertProg > 0); - - /* - * Fragment program - */ - glLoadProgramNV(GL_FRAGMENT_PROGRAM_NV, FragProg, - strlen(fragProgramText), - (const GLubyte *) fragProgramText); - assert(glIsProgramNV(FragProg)); - glBindProgramNV(GL_FRAGMENT_PROGRAM_NV, FragProg); - - NAMED_PARAMETER4FV(FragProg, "Diffuse", Diffuse); - NAMED_PARAMETER4FV(FragProg, "Specular", Specular); - - /* - * Vertex program - */ - glLoadProgramNV(GL_VERTEX_PROGRAM_NV, VertProg, - strlen(vertProgramText), - (const GLubyte *) vertProgramText); - assert(glIsProgramNV(VertProg)); - glBindProgramNV(GL_VERTEX_PROGRAM_NV, VertProg); - glTrackMatrixNV(GL_VERTEX_PROGRAM_NV, 0, GL_MODELVIEW_PROJECTION_NV, GL_IDENTITY_NV); - glTrackMatrixNV(GL_VERTEX_PROGRAM_NV, 4, GL_MODELVIEW, GL_INVERSE_TRANSPOSE_NV); - - /* - * Misc init - */ - glClearColor(0.3, 0.3, 0.3, 0.0); - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHT0); - glEnable(GL_LIGHTING); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, Diffuse); - glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, Specular); - glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 20.0); - - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - printf("Press p to toggle between per-pixel and per-vertex lighting\n"); - -#ifdef GL_MESA_program_debug - if (argc > 1 && strcmp(argv[1], "fragment") == 0) { - printf(">> Debugging fragment program\n"); - glProgramCallbackMESA(GL_FRAGMENT_PROGRAM_ARB, Debugger2, - (GLvoid *) fragProgramText); - glEnable(GL_FRAGMENT_PROGRAM_CALLBACK_MESA); - } - else { - printf(">> Debugging vertex program\n"); - glProgramCallbackMESA(GL_VERTEX_PROGRAM_ARB, Debugger2, - (GLvoid *) fragProgramText); - glEnable(GL_VERTEX_PROGRAM_CALLBACK_MESA); - } -#endif -} - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 200, 200 ); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH ); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutSpecialFunc( SpecialKey ); - glutDisplayFunc( Display ); - if (Anim) - glutIdleFunc(Idle); - Init(argc, argv); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/drawbuffers.c b/progs/tests/drawbuffers.c deleted file mode 100644 index 7a19933e62..0000000000 --- a/progs/tests/drawbuffers.c +++ /dev/null @@ -1,311 +0,0 @@ -/* - * Test GL_ARB_draw_buffers, GL_EXT_framebuffer_object - * and GLSL's gl_FragData[]. - * - * Brian Paul - * 11 March 2007 - */ - - -#include <assert.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> -#include "extfuncs.h" - -static int Win; -static int Width = 400, Height = 400; -static GLuint FBobject, RBobjects[3]; -static GLfloat Xrot = 0.0, Yrot = 0.0; -static GLuint Program; - - -static void -CheckError(int line) -{ - GLenum err = glGetError(); - if (err) { - printf("GL Error 0x%x at line %d\n", (int) err, line); - } -} - - -static void -Display(void) -{ - GLubyte *buffer = malloc(Width * Height * 4); - static const GLenum buffers[2] = { - GL_COLOR_ATTACHMENT0_EXT, - GL_COLOR_ATTACHMENT1_EXT - }; - - glUseProgram_func(Program); - - glEnable(GL_DEPTH_TEST); - - /* draw to user framebuffer */ - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, FBobject); - - /* Clear color buffer 0 (blue) */ - glDrawBuffer(GL_COLOR_ATTACHMENT0_EXT); - glClearColor(0.5, 0.5, 1.0, 0.0); - glClear(GL_COLOR_BUFFER_BIT); - - /* Clear color buffer 1 (1 - blue) */ - glDrawBuffer(GL_COLOR_ATTACHMENT1_EXT); - glClearColor(0.5, 0.5, 0.0, 0.0); - glClear(GL_COLOR_BUFFER_BIT); - - glClear(GL_DEPTH_BUFFER_BIT); - - /* draw to two buffers w/ fragment shader */ - glDrawBuffersARB(2, buffers); - - glPushMatrix(); - glRotatef(Xrot, 1, 0, 0); - glRotatef(Yrot, 0, 1, 0); - glutSolidTorus(0.75, 2.0, 10, 20); - glPopMatrix(); - - /* read from user framebuffer */ - /* left half = colorbuffer 0 */ - glReadBuffer(GL_COLOR_ATTACHMENT0_EXT); - glPixelStorei(GL_PACK_ROW_LENGTH, Width); - glPixelStorei(GL_PACK_SKIP_PIXELS, 0); - glReadPixels(0, 0, Width / 2, Height, GL_RGBA, GL_UNSIGNED_BYTE, - buffer); - - /* right half = colorbuffer 1 */ - glReadBuffer(GL_COLOR_ATTACHMENT1_EXT); - glPixelStorei(GL_PACK_SKIP_PIXELS, Width / 2); - glReadPixels(Width / 2, 0, Width - Width / 2, Height, - GL_RGBA, GL_UNSIGNED_BYTE, - buffer); - - /* draw to window */ - glUseProgram_func(0); - glDisable(GL_DEPTH_TEST); - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); - glWindowPos2iARB(0, 0); - glDrawPixels(Width, Height, GL_RGBA, GL_UNSIGNED_BYTE, buffer); - - free(buffer); - glutSwapBuffers(); - CheckError(__LINE__); -} - - -static void -Reshape(int width, int height) -{ - float ar = (float) width / (float) height; - - glViewport(0, 0, width, height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-ar, ar, -1.0, 1.0, 5.0, 35.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0, 0.0, -20.0); - - Width = width; - Height = height; - - glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, RBobjects[0]); - glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_RGB, Width, Height); - glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, RBobjects[1]); - glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_RGB, Width, Height); - glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, RBobjects[2]); - glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT, - Width, Height); -} - - -static void -CleanUp(void) -{ - glDeleteFramebuffersEXT(1, &FBobject); - glDeleteRenderbuffersEXT(3, RBobjects); - glutDestroyWindow(Win); - exit(0); -} - - -static void -Key(unsigned char key, int x, int y) -{ - (void) x; - (void) y; - switch (key) { - case 'x': - Xrot += 5.0; - break; - case 'y': - Yrot += 5.0; - break; - case 27: - CleanUp(); - break; - } - glutPostRedisplay(); -} - - -static void -CheckExtensions(void) -{ - const char *version = (const char *) glGetString(GL_VERSION); - GLint numBuf; - - if (!glutExtensionSupported("GL_EXT_framebuffer_object")) { - printf("Sorry, GL_EXT_framebuffer_object is required!\n"); - exit(1); - } - if (!glutExtensionSupported("GL_ARB_draw_buffers")) { - printf("Sorry, GL_ARB_draw_buffers is required!\n"); - exit(1); - } - if (version[0] != '2') { - printf("Sorry, OpenGL 2.0 is required!\n"); - exit(1); - } - - glGetIntegerv(GL_MAX_DRAW_BUFFERS_ARB, &numBuf); - printf("GL_MAX_DRAW_BUFFERS_ARB = %d\n", numBuf); - if (numBuf < 2) { - printf("Sorry, GL_MAX_DRAW_BUFFERS_ARB needs to be >= 2\n"); - exit(1); - } - - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); -} - - -static void -SetupRenderbuffers(void) -{ - glGenFramebuffersEXT(1, &FBobject); - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, FBobject); - - glGenRenderbuffersEXT(3, RBobjects); - - glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, RBobjects[0]); - glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_RGB, Width, Height); - - glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, RBobjects[1]); - glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_RGB, Width, Height); - - glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, RBobjects[2]); - glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT, - Width, Height); - - glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, - GL_RENDERBUFFER_EXT, RBobjects[0]); - glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT1_EXT, - GL_RENDERBUFFER_EXT, RBobjects[1]); - glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, - GL_RENDERBUFFER_EXT, RBobjects[2]); - - CheckError(__LINE__); -} - - -static GLuint -LoadAndCompileShader(GLenum target, const char *text) -{ - GLint stat; - GLuint shader = glCreateShader_func(target); - glShaderSource_func(shader, 1, (const GLchar **) &text, NULL); - glCompileShader_func(shader); - glGetShaderiv_func(shader, GL_COMPILE_STATUS, &stat); - if (!stat) { - GLchar log[1000]; - GLsizei len; - glGetShaderInfoLog_func(shader, 1000, &len, log); - fprintf(stderr, "drawbuffers: problem compiling shader:\n%s\n", log); - exit(1); - } - return shader; -} - - -static void -CheckLink(GLuint prog) -{ - GLint stat; - glGetProgramiv_func(prog, GL_LINK_STATUS, &stat); - if (!stat) { - GLchar log[1000]; - GLsizei len; - glGetProgramInfoLog_func(prog, 1000, &len, log); - fprintf(stderr, "drawbuffers: shader link error:\n%s\n", log); - } -} - - -static void -SetupShaders(void) -{ - /* second color output = 1 - first color */ - static const char *fragShaderText = - "void main() {\n" - " gl_FragData[0] = gl_Color; \n" - " gl_FragData[1] = vec4(1.0) - gl_Color; \n" - "}\n"; - - GLuint fragShader; - - fragShader = LoadAndCompileShader(GL_FRAGMENT_SHADER, fragShaderText); - Program = glCreateProgram_func(); - - glAttachShader_func(Program, fragShader); - glLinkProgram_func(Program); - CheckLink(Program); - glUseProgram_func(Program); -} - - -static void -SetupLighting(void) -{ - static const GLfloat frontMat[4] = { 1.0, 0.5, 0.5, 1.0 }; - static const GLfloat backMat[4] = { 1.0, 0.5, 0.5, 1.0 }; - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, frontMat); - glMaterialfv(GL_BACK, GL_AMBIENT_AND_DIFFUSE, backMat); - glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, 1); - glEnable(GL_LIGHT0); - glEnable(GL_LIGHTING); -} - - -static void -Init(void) -{ - CheckExtensions(); - GetExtensionFuncs(); - SetupRenderbuffers(); - SetupShaders(); - SetupLighting(); - glEnable(GL_DEPTH_TEST); -} - - -int -main(int argc, char *argv[]) -{ - glutInit(&argc, argv); - glutInitWindowPosition(0, 0); - glutInitWindowSize(Width, Height); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); - Win = glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Display); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/exactrast.c b/progs/tests/exactrast.c deleted file mode 100644 index 63b8336d97..0000000000 --- a/progs/tests/exactrast.c +++ /dev/null @@ -1,202 +0,0 @@ -/** - * Test for exact point/line/polygon rasterization, or at least rasterization - * that fits the tolerance of the OpenGL spec. - * - * Brian Paul - * 9 Nov 2007 - */ - -/* - * Notes: - * - 'm' to cycle through point, hline, vline and quad drawing - * - Use cursor keys to translate coordinates (z to reset) - * - Resize window to check for proper rasterization - * - Make sure your LCD is running in its native resolution - * - * If translation is (0,0): - * a point will be drawn where x%2==0 and y%2==0, - * a horizontal line will be drawn where x%2==0, - * a vertical line will be drawn where y%2==0, - * for quads, pixels will be set where (x%4)!=3 and (y%4)!=3 - * - * XXX todo: do glReadPixels and test that the results are what's expected. - * Upon failure, iterate over sub-pixel translations to find the ideal offset. - */ - - -#include <stdio.h> -#include <stdlib.h> -#include <GL/glew.h> -#include <GL/glut.h> - -static int Width = 400, Height = 400; -static int Win; -static float Xtrans = 0, Ytrans = 0; -static float Step = 0.125; - -enum { - MODE_POINTS, - MODE_HLINES, - MODE_VLINES, - MODE_QUADS, - NUM_MODES -}; - -static int Mode = MODE_POINTS; - - -static void -Draw(void) -{ - /* See the OpenGL Programming Guide, Appendix H, "OpenGL Correctness Tips" - * for information about the 0.375 translation factor. - */ - float tx = 0.375, ty = 0.375; - int i, j; - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glPushMatrix(); - glTranslatef(tx + Xtrans, ty + Ytrans, 0); - - if (Mode == MODE_POINTS) { - glBegin(GL_POINTS); - for (j = 0; j < Height; j += 2) { - for (i = 0; i < Width; i += 2) { - glVertex2f(i, j); - } - } - glEnd(); - } - else if (Mode == MODE_HLINES) { - glBegin(GL_LINES); - for (i = 0; i < Height; i += 2) { - glVertex2f(0, i); - glVertex2f(Width, i); - } - glEnd(); - } - else if (Mode == MODE_VLINES) { - glBegin(GL_LINES); - for (i = 0; i < Width; i += 2) { - glVertex2f(i, 0 ); - glVertex2f(i, Height); - } - glEnd(); - } - else if (Mode == MODE_QUADS) { - glBegin(GL_QUADS); - for (j = 0; j < Height; j += 4) { - for (i = 0; i < Width; i += 4) { - glVertex2f(i, j ); - glVertex2f(i + 3, j ); - glVertex2f(i + 3, j + 3); - glVertex2f(i, j + 3); - } - } - glEnd(); - } - - glPopMatrix(); - - glutSwapBuffers(); -} - - -static void -Reshape(int width, int height) -{ - Width = width; - Height = height; - glViewport(0, 0, width, height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(0, width, 0, height, -1, 1); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - - -static void -Key(unsigned char key, int x, int y) -{ - (void) x; - (void) y; - switch (key) { - case 'm': - case 'M': - Mode = (Mode + 1) % NUM_MODES; - break; - case 'z': - case 'Z': - Xtrans = Ytrans = 0; - printf("Translation: %f, %f\n", Xtrans, Ytrans); - break; - case 27: - glutDestroyWindow(Win); - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void -SpecialKey(int key, int x, int y) -{ - (void) x; - (void) y; - switch (key) { - case GLUT_KEY_UP: - Ytrans += Step; - break; - case GLUT_KEY_DOWN: - Ytrans -= Step; - break; - case GLUT_KEY_LEFT: - Xtrans -= Step; - break; - case GLUT_KEY_RIGHT: - Xtrans += Step; - break; - } - glutPostRedisplay(); - printf("Translation: %f, %f\n", Xtrans, Ytrans); -} - - -static void -Init(void) -{ -} - - -static void -Usage(void) -{ - printf("Keys:\n"); - printf(" up/down/left/right - translate by %f\n", Step); - printf(" z - reset translation to zero\n"); - printf(" m - change rendering mode (points, hlines, vlines, quads)\n"); - printf(" Esc - exit\n"); -} - - -int -main(int argc, char *argv[]) -{ - glutInit(&argc, argv); - glutInitWindowPosition(0, 0); - glutInitWindowSize(Width, Height); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); - Win = glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutSpecialFunc(SpecialKey); - glutDisplayFunc(Draw); - Init(); - Usage(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/ext422square.c b/progs/tests/ext422square.c deleted file mode 100644 index 89e99f0292..0000000000 --- a/progs/tests/ext422square.c +++ /dev/null @@ -1,259 +0,0 @@ -/* - * Exercise the EXT_422_pixels extension, a less convenient - * alternative to MESA_ycbcr_texture. Requires ARB_fragment_program - * to perform the final YUV->RGB conversion. - * - * Brian Paul 13 September 2002 - * Keith Whitwell 30 November 2004 - */ - - -#include <math.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <GL/glew.h> -#include <GL/glut.h> -#include <assert.h> - -#include "../util/readtex.c" /* I know, this is a hack. */ - -#define TEXTURE_FILE "../images/tile.rgb" - -static GLfloat Xrot = 0, Yrot = 0, Zrot = 0; -static GLint ImgWidth, ImgHeight; -static GLushort *ImageYUV = NULL; -static const GLuint yuvObj = 100; -static const GLuint rgbObj = 101; - -static void Init( int argc, char *argv[] ); - -static void DrawObject(void) -{ - glBegin(GL_QUADS); - - glTexCoord2f(0, 0); - glVertex2f(-1.0, -1.0); - - glTexCoord2f(1, 0); - glVertex2f(1.0, -1.0); - - glTexCoord2f(1, 1); - glVertex2f(1.0, 1.0); - - glTexCoord2f(0, 1); - glVertex2f(-1.0, 1.0); - - glEnd(); -} - -static void Display( void ) -{ - static int firsttime = 1; - - if (firsttime) { - firsttime = 0; - Init( 0, 0 ); /* don't ask */ - } - - glClear( GL_COLOR_BUFFER_BIT ); - glBindTexture(GL_TEXTURE_2D, yuvObj); - - glPushMatrix(); - glEnable(GL_FRAGMENT_PROGRAM_ARB); - glTranslatef( -1.1, 0.0, -15.0 ); - glRotatef(Xrot, 1.0, 0.0, 0.0); - glRotatef(Yrot, 0.0, 1.0, 0.0); - glRotatef(Zrot, 0.0, 0.0, 1.0); - glBindTexture(GL_TEXTURE_2D, yuvObj); - DrawObject(); - glPopMatrix(); - - glPushMatrix(); - glDisable(GL_FRAGMENT_PROGRAM_ARB); - glTranslatef( 1.1, 0.0, -15.0 ); - glRotatef(Xrot, 1.0, 0.0, 0.0); - glRotatef(Yrot, 0.0, 1.0, 0.0); - glRotatef(Zrot, 0.0, 0.0, 1.0); - glBindTexture(GL_TEXTURE_2D, rgbObj); - DrawObject(); - glPopMatrix(); - - glutSwapBuffers(); -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -1.1, 1.1, -1.1, 1.1, 10.0, 100.0 ); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - glTranslatef( 0.0, 0.0, -15.0 ); -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void SpecialKey( int key, int x, int y ) -{ - float step = 3.0; - (void) x; - (void) y; - - switch (key) { - case GLUT_KEY_UP: - Xrot += step; - break; - case GLUT_KEY_DOWN: - Xrot -= step; - break; - case GLUT_KEY_LEFT: - Yrot += step; - break; - case GLUT_KEY_RIGHT: - Yrot -= step; - break; - } - glutPostRedisplay(); -} - - - - -/* #define LINEAR_FILTER */ - -static void Init( int argc, char *argv[] ) -{ - const char *file; - const GLfloat yuvtorgb[16] = { - 1.164, 1.164, 1.164, 0, - 0, -.391, 2.018, 0, - 1.596, -.813, 0.0, 0, - (-.0625*1.164 + -.5*1.596), (-.0625*1.164 + -.5*-.813 + -.5*-.391), (-.0625*1.164 + -.5*2.018), 1 - }; - - if (!glutExtensionSupported("GL_ARB_fragment_program")) { - printf("Error: GL_ARB_fragment_program not supported!\n"); - exit(1); - } - - if (!glutExtensionSupported("GL_EXT_422_pixels")) { - printf("Error: GL_EXT_422_pixels not supported!\n"); - exit(1); - } - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - - file = TEXTURE_FILE; - - /* Load the texture as YCbCr. - */ - glBindTexture(GL_TEXTURE_2D, yuvObj); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - - ImageYUV = LoadYUVImage(file, &ImgWidth, &ImgHeight ); - if (!ImageYUV) { - printf("Couldn't read %s\n", TEXTURE_FILE); - exit(0); - } - - glTexImage2D(GL_TEXTURE_2D, 0, - GL_RGB, - ImgWidth, ImgHeight, 0, - GL_422_EXT, - GL_UNSIGNED_BYTE, ImageYUV); - - glEnable(GL_TEXTURE_2D); - - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - - { - static const char *modulateYUV = - "!!ARBfp1.0\n" - "TEMP R0;\n" - "TEX R0, fragment.texcoord[0], texture[0], 2D; \n" - - "ADD R0, R0, {-0.0625, -0.5, -0.5, 0.0}; \n" - "DP3 result.color.x, R0, {1.164, 1.596, 0.0}; \n" - "DP3 result.color.y, R0, {1.164, -0.813, -0.391}; \n" - "DP3 result.color.z, R0, {1.164, 0.0, 2.018}; \n" - "MOV result.color.w, R0.w; \n" - - "END" - ; - - GLuint modulateProg; - - - /* Setup the fragment program */ - glGenProgramsARB(1, &modulateProg); - glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, modulateProg); - glProgramStringARB(GL_FRAGMENT_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, - strlen(modulateYUV), (const GLubyte *)modulateYUV); - - printf("glGetError = 0x%x\n", (int) glGetError()); - printf("glError(GL_PROGRAM_ERROR_STRING_ARB) = %s\n", - (char *) glGetString(GL_PROGRAM_ERROR_STRING_ARB)); - assert(glIsProgramARB(modulateProg)); - - } - - /* Now the same, but use a color matrix to do the conversion at - * upload time: - */ - glBindTexture(GL_TEXTURE_2D, rgbObj); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - - glMatrixMode( GL_COLOR_MATRIX ); - glLoadMatrixf( yuvtorgb ); - - glTexImage2D(GL_TEXTURE_2D, 0, - GL_RGB, - ImgWidth, ImgHeight, 0, - GL_422_EXT, - GL_UNSIGNED_BYTE, ImageYUV); - - glLoadIdentity(); - glMatrixMode( GL_MODELVIEW ); - - glEnable(GL_TEXTURE_2D); - - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - - - glShadeModel(GL_FLAT); - glClearColor(0.3, 0.3, 0.4, 1.0); -} - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowSize( 300, 300 ); - glutInitWindowPosition( 0, 0 ); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE ); - glutCreateWindow(argv[0] ); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutSpecialFunc( SpecialKey ); - glutDisplayFunc( Display ); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/fbotest1.c b/progs/tests/fbotest1.c deleted file mode 100644 index 0cd7f95c35..0000000000 --- a/progs/tests/fbotest1.c +++ /dev/null @@ -1,212 +0,0 @@ -/* - * Test GL_EXT_framebuffer_object - * - * Brian Paul - * 7 Feb 2005 - */ - - -#include <assert.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - -static int Win; -static int Width = 400, Height = 400; -static GLuint MyFB, MyRB; - - -static void -CheckError(int line) -{ - GLenum err = glGetError(); - if (err) { - printf("GL Error 0x%x at line %d\n", (int) err, line); - } -} - - -static void -Display( void ) -{ - GLubyte *buffer = malloc(Width * Height * 4); - GLenum status; - - /* draw to user framebuffer */ - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, MyFB); - glDrawBuffer(GL_COLOR_ATTACHMENT1_EXT); - glReadBuffer(GL_COLOR_ATTACHMENT1_EXT); - - status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT); - if (status != GL_FRAMEBUFFER_COMPLETE_EXT) { - printf("Framebuffer incomplete!!!\n"); - } - - glClearColor(0.5, 0.5, 1.0, 0.0); - glClear( GL_COLOR_BUFFER_BIT ); - - glBegin(GL_POLYGON); - glColor3f(1, 0, 0); - glVertex2f(-1, -1); - glColor3f(0, 1, 0); - glVertex2f(1, -1); - glColor3f(0, 0, 1); - glVertex2f(0, 1); - glEnd(); - - /* read from user framebuffer */ - glReadPixels(0, 0, Width, Height, GL_RGBA, GL_UNSIGNED_BYTE, buffer); - - /* draw to window */ - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); - glWindowPos2iARB(0, 0); - glDrawPixels(Width, Height, GL_RGBA, GL_UNSIGNED_BYTE, buffer); - - free(buffer); - glutSwapBuffers(); - CheckError(__LINE__); -} - - -static void -Reshape( int width, int height ) -{ -#if 0 - float ar = (float) width / (float) height; -#endif - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); -#if 0 - glFrustum( -ar, ar, -1.0, 1.0, 5.0, 25.0 ); -#else - glOrtho(-1.0, 1.0, -1.0, 1.0, 5.0, 25.0 ); -#endif - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - glTranslatef( 0.0, 0.0, -15.0 ); - Width = width; - Height = height; - glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_RGB, Width, Height); -} - - -static void -CleanUp(void) -{ - glDeleteFramebuffersEXT(1, &MyFB); - glDeleteRenderbuffersEXT(1, &MyRB); - assert(!glIsFramebufferEXT(MyFB)); - assert(!glIsRenderbufferEXT(MyRB)); - glutDestroyWindow(Win); - exit(0); -} - - -static void -Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - CleanUp(); - break; - } - glutPostRedisplay(); -} - - -static void -Init( void ) -{ - GLboolean ARB_fbo = glutExtensionSupported("GL_ARB_framebuffer_object"); - GLint i; - - if (!glutExtensionSupported("GL_EXT_framebuffer_object")) { - printf("GL_EXT_framebuffer_object not found!\n"); - exit(0); - } - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - - glGenFramebuffersEXT(1, &MyFB); - assert(MyFB); - assert(!glIsFramebufferEXT(MyFB)); - if (!ARB_fbo) { - glDeleteFramebuffersEXT(1, &MyFB); - assert(!glIsFramebufferEXT(MyFB)); - } - /* Note, continue to use MyFB below */ - - glGenRenderbuffersEXT(1, &MyRB); - assert(MyRB); - assert(!glIsRenderbufferEXT(MyRB)); - if (!ARB_fbo) { - glDeleteRenderbuffersEXT(1, &MyRB); - assert(!glIsRenderbufferEXT(MyRB)); - MyRB = 42; /* an arbitrary ID */ - } - - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, MyFB); - assert(glIsFramebufferEXT(MyFB)); - glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, MyRB); - assert(glIsRenderbufferEXT(MyRB)); - - glGetIntegerv(GL_RENDERBUFFER_BINDING_EXT, &i); - assert(i == MyRB); - - glGetIntegerv(GL_FRAMEBUFFER_BINDING_EXT, &i); - assert(i == MyFB); - - CheckError(__LINE__); - glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT1_EXT, - GL_RENDERBUFFER_EXT, MyRB); - - glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_RGB, Width, Height); - - CheckError(__LINE__); - - { - GLint r, g, b, a; - glGetRenderbufferParameterivEXT(GL_RENDERBUFFER_EXT, - GL_RENDERBUFFER_RED_SIZE_EXT, &r); - glGetRenderbufferParameterivEXT(GL_RENDERBUFFER_EXT, - GL_RENDERBUFFER_GREEN_SIZE_EXT, &g); - glGetRenderbufferParameterivEXT(GL_RENDERBUFFER_EXT, - GL_RENDERBUFFER_BLUE_SIZE_EXT, &b); - glGetRenderbufferParameterivEXT(GL_RENDERBUFFER_EXT, - GL_RENDERBUFFER_ALPHA_SIZE_EXT, &a); - CheckError(__LINE__); - printf("renderbuffer RGBA sizes = %d %d %d %d\n", r, g, b, a); - - glGetIntegerv(GL_RED_BITS, &r); - glGetIntegerv(GL_GREEN_BITS, &g); - glGetIntegerv(GL_BLUE_BITS, &b); - glGetIntegerv(GL_ALPHA_BITS, &a); - printf("Visual RGBA sizes = %d %d %d %d\n", r, g, b, a); - } - - /* restore to default */ - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); - CheckError(__LINE__); -} - - -int -main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize(Width, Height); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE ); - Win = glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/fbotest2.c b/progs/tests/fbotest2.c deleted file mode 100644 index f9c506193f..0000000000 --- a/progs/tests/fbotest2.c +++ /dev/null @@ -1,203 +0,0 @@ -/* - * Test GL_EXT_framebuffer_object - * - * Brian Paul - * 19 Mar 2006 - */ - - -#include <assert.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - -static int Win = 0; -static int Width = 400, Height = 400; -static GLuint MyFB, ColorRb, DepthRb; -static GLboolean Animate = GL_TRUE; -static GLfloat Rotation = 0.0; - - -static void -CheckError(int line) -{ - GLenum err = glGetError(); - if (err) { - printf("fbotest2: GL Error 0x%x at line %d\n", (int) err, line); - } -} - - -static void -Display( void ) -{ - GLubyte *buffer = malloc(Width * Height * 4); - GLenum status; - - CheckError(__LINE__); - - /* draw to user framebuffer */ - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, MyFB); - glDrawBuffer(GL_COLOR_ATTACHMENT1_EXT); - glReadBuffer(GL_COLOR_ATTACHMENT1_EXT); - - status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT); - if (status != GL_FRAMEBUFFER_COMPLETE_EXT) { - printf("fbotest2: Error: Framebuffer is incomplete!!!\n"); - } - - CheckError(__LINE__); - - glClearColor(0.5, 0.5, 1.0, 0.0); - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - - glPushMatrix(); - glRotatef(30.0, 1, 0, 0); - glRotatef(Rotation, 0, 1, 0); - glutSolidTeapot(2.0); - glPopMatrix(); - - /* read from user framebuffer */ - glReadPixels(0, 0, Width, Height, GL_RGBA, GL_UNSIGNED_BYTE, buffer); - - /* draw to window */ - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); - glDisable(GL_DEPTH_TEST); /* in case window has depth buffer */ - glWindowPos2iARB(0, 0); - glDrawPixels(Width, Height, GL_RGBA, GL_UNSIGNED_BYTE, buffer); - - free(buffer); - glutSwapBuffers(); - CheckError(__LINE__); -} - - -static void -Reshape( int width, int height ) -{ - float ar = (float) width / (float) height; - - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -ar, ar, -1.0, 1.0, 5.0, 25.0 ); - - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - glTranslatef( 0.0, 0.0, -15.0 ); - - glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, ColorRb); - glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_RGB, width, height); - glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, DepthRb); - glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT, - width, height); - - Width = width; - Height = height; -} - - -static void -CleanUp(void) -{ - glDeleteFramebuffersEXT(1, &MyFB); - glDeleteRenderbuffersEXT(1, &ColorRb); - glDeleteRenderbuffersEXT(1, &DepthRb); - assert(!glIsFramebufferEXT(MyFB)); - assert(!glIsRenderbufferEXT(ColorRb)); - assert(!glIsRenderbufferEXT(DepthRb)); - glutDestroyWindow(Win); - exit(0); -} - - -static void -Idle(void) -{ - Rotation = glutGet(GLUT_ELAPSED_TIME) * 0.1; - glutPostRedisplay(); -} - - -static void -Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 'a': - Animate = !Animate; - if (Animate) - glutIdleFunc(Idle); - else - glutIdleFunc(NULL); - break; - case 27: - CleanUp(); - break; - } - glutPostRedisplay(); -} - - -static void -Init( void ) -{ - if (!glutExtensionSupported("GL_EXT_framebuffer_object")) { - printf("fbotest2: GL_EXT_framebuffer_object not found!\n"); - exit(0); - } - printf("fbotest2: GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - - glGenFramebuffersEXT(1, &MyFB); - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, MyFB); - assert(glIsFramebufferEXT(MyFB)); - - /* set color buffer */ - glGenRenderbuffersEXT(1, &ColorRb); - glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, ColorRb); - assert(glIsRenderbufferEXT(ColorRb)); - glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT1_EXT, - GL_RENDERBUFFER_EXT, ColorRb); - glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_RGB, Width, Height); - - /* setup depth buffer */ - glGenRenderbuffersEXT(1, &DepthRb); - glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, DepthRb); - assert(glIsRenderbufferEXT(DepthRb)); - glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, - GL_RENDERBUFFER_EXT, DepthRb); - glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT, Width, Height); - - CheckError(__LINE__); - - /* restore to default */ - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); - CheckError(__LINE__); -} - - -int -main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize(Width, Height); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE ); - Win = glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - if (Animate) - glutIdleFunc(Idle); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/fillrate.c b/progs/tests/fillrate.c deleted file mode 100644 index 1e58df281e..0000000000 --- a/progs/tests/fillrate.c +++ /dev/null @@ -1,204 +0,0 @@ -/** - * Measure fill rates for basic shading/texturing modes. - * - * Brian Paul - * 1 April 2008 - */ - - -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> -#include "readtex.h" - -#define TEXTURE_1_FILE "../images/tile.rgb" -#define TEXTURE_2_FILE "../images/reflect.rgb" - -static int Win; -static int Width = 1010, Height = 1010; -static GLuint Textures[2]; - - -/** - * Draw quad 10 pixels shorter, narrower than window size. - */ -static void -DrawQuad(void) -{ - glBegin(GL_POLYGON); - - glColor3f(1.0, 0.5, 0.5); - glMultiTexCoord2f(GL_TEXTURE0, 0, 0); - glMultiTexCoord2f(GL_TEXTURE1, 0, 0); - glVertex2f(5, 5); - - glColor3f(0.5, 1.0, 0.5); - glMultiTexCoord2f(GL_TEXTURE0, 1, 0); - glMultiTexCoord2f(GL_TEXTURE1, 1, 0); - glVertex2f(Width - 5, 5); - - glColor3f(0.5, 0.5, 1.0); - glMultiTexCoord2f(GL_TEXTURE0, 1, 1); - glMultiTexCoord2f(GL_TEXTURE1, 1, 1); - glVertex2f(Width - 5, Height - 5); - - glColor3f(1.0, 0.5, 1.0); - glMultiTexCoord2f(GL_TEXTURE0, 0, 1); - glMultiTexCoord2f(GL_TEXTURE1, 0, 1); - glVertex2f(5, Height - 5); - - glEnd(); -} - - -/** - * Compute rate for drawing large quad with given shading/texture state. - */ -static void -RunTest(GLenum shading, GLuint numTextures, GLenum texFilter) -{ - const GLdouble minPeriod = 2.0; - GLdouble t0, t1; - GLdouble pixels, rate; - GLint i, iters; - - glActiveTexture(GL_TEXTURE0); - if (numTextures > 0) { - glBindTexture(GL_TEXTURE_2D, Textures[0]); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, texFilter); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, texFilter); - glEnable(GL_TEXTURE_2D); - } - else { - glDisable(GL_TEXTURE_2D); - } - - glActiveTexture(GL_TEXTURE1); - if (numTextures > 1) { - glBindTexture(GL_TEXTURE_2D, Textures[1]); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, texFilter); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, texFilter); - glEnable(GL_TEXTURE_2D); - } - else { - glDisable(GL_TEXTURE_2D); - } - - glShadeModel(shading); - - - glFinish(); - - iters = 1; - do { - iters *= 4; - t0 = glutGet(GLUT_ELAPSED_TIME) * 0.001; - for (i = 0; i < iters; i++) { - DrawQuad(); - } - glFinish(); - t1 = glutGet(GLUT_ELAPSED_TIME) * 0.001; - } while (t1 - t0 < minPeriod); - - glutSwapBuffers(); - - pixels = (double) iters * (Width - 10) * (Height - 10); - rate = pixels / (t1 - t0); - rate /= 1000000.0; /* megapixels/second */ - - printf("%s ", shading == GL_FLAT ? "GL_FLAT" : "GL_SMOOTH"); - printf("Textures=%u ", numTextures); - printf("Filter=%s: ", texFilter == GL_LINEAR ? "GL_LINEAR" : "GL_NEAREST"); - printf("%g MPixels/sec\n", rate); -} - - -static void -Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - RunTest(GL_FLAT, 0, GL_NEAREST); - RunTest(GL_SMOOTH, 0, GL_NEAREST); - RunTest(GL_SMOOTH, 1, GL_NEAREST); - RunTest(GL_SMOOTH, 1, GL_LINEAR); - RunTest(GL_SMOOTH, 2, GL_NEAREST); - RunTest(GL_SMOOTH, 2, GL_LINEAR); - - glutSwapBuffers(); -} - - -static void -Reshape(int width, int height) -{ - glViewport(0, 0, width, height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(0, width, 0, height, -1, 1); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - Width = width; - Height = height; -} - - -static void -Key(unsigned char key, int x, int y) -{ - (void) x; - (void) y; - switch (key) { - case 27: - glutDestroyWindow(Win); - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void -Init(void) -{ - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - - glGenTextures(2, Textures); - - glBindTexture(GL_TEXTURE_2D, Textures[0]); - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - - if (!LoadRGBMipmaps(TEXTURE_1_FILE, GL_RGB)) { - printf("Error: couldn't load texture image\n"); - exit(1); - } - - glBindTexture(GL_TEXTURE_2D, Textures[1]); - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - - if (!LoadRGBMipmaps(TEXTURE_2_FILE, GL_RGB)) { - printf("Error: couldn't load texture image\n"); - exit(1); - } - -} - - -int -main(int argc, char *argv[]) -{ - glutInit(&argc, argv); - glutInitWindowPosition(0, 0); - glutInitWindowSize(Width, Height); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); - Win = glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/floattex.c b/progs/tests/floattex.c deleted file mode 100644 index 39302ce3af..0000000000 --- a/progs/tests/floattex.c +++ /dev/null @@ -1,238 +0,0 @@ -/* - * Test floating point textures. - */ - - -#include <assert.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> -#include "extfuncs.h" -#include "readtex.h" -#include "shaderutil.h" - - -static const char *TexFile = "../images/arch.rgb"; - -static const char *FragShaderText = - "uniform sampler2D tex1; \n" - "void main() \n" - "{ \n" - " vec4 t = texture2D(tex1, gl_TexCoord[0].xy); \n" - " // convert from [-255,0] to [0,1] \n" - " gl_FragColor = t * (-1.0 / 255.0); \n" - "} \n"; - -static const char *VertShaderText = - "void main() \n" - "{ \n" - " gl_TexCoord[0] = gl_MultiTexCoord0; \n" - " gl_Position = ftransform(); \n" - "} \n"; - -static struct uniform_info Uniforms[] = { - { "tex1", 1, GL_SAMPLER_2D, { 0, 0, 0, 0 }, -1 }, - END_OF_UNIFORMS -}; - - -static GLuint Program; - - - -static GLboolean -CheckError( int line ) -{ - GLenum error = glGetError(); - if (error) { - char *err = (char *) gluErrorString( error ); - fprintf( stderr, "GL Error: %s at line %d\n", err, line ); - return GL_TRUE; - } - return GL_FALSE; -} - - -static void -Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glPushMatrix(); - - glBegin(GL_POLYGON); - glTexCoord2f( 0.0, 0.0 ); glVertex2f( -1.0, -1.0 ); - glTexCoord2f( 1.0, 0.0 ); glVertex2f( 1.0, -1.0 ); - glTexCoord2f( 1.0, 1.0 ); glVertex2f( 1.0, 1.0 ); - glTexCoord2f( 0.0, 1.0 ); glVertex2f( -1.0, 1.0 ); - glEnd(); - - glPopMatrix(); - - glutSwapBuffers(); -} - - -static void -Reshape(int width, int height) -{ - glViewport(0, 0, width, height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-1.0, 1.0, -1.0, 1.0, 5.0, 25.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0, 0.0, -8.0); -} - - -static void -Key(unsigned char key, int x, int y) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void -InitTexture(void) -{ - GLenum filter = GL_LINEAR; - GLint imgWidth, imgHeight; - GLenum imgFormat; - GLubyte *image = NULL; - GLfloat *ftex; - GLint i, t; - - image = LoadRGBImage(TexFile, &imgWidth, &imgHeight, &imgFormat); - if (!image) { - printf("Couldn't read %s\n", TexFile); - exit(0); - } - - assert(imgFormat == GL_RGB); - - ftex = (float *) malloc(imgWidth * imgHeight * 4 * sizeof(float)); - if (!ftex) { - printf("out of memory\n"); - exit(0); - } - - /* convert ubytes to floats, negated */ - for (i = 0; i < imgWidth * imgHeight * 3; i++) { - ftex[i] = -1.0f * image[i]; - } - - glActiveTexture(GL_TEXTURE0); - glBindTexture(GL_TEXTURE_2D, 42); - - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F_ARB, - imgWidth, imgHeight, 0, - GL_RGB, GL_FLOAT, ftex); - - - CheckError(__LINE__); - - /* sanity checks */ - glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_RED_TYPE_ARB, &t); - assert(t == GL_FLOAT); - glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_GREEN_TYPE_ARB, &t); - assert(t == GL_FLOAT); - glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_BLUE_TYPE_ARB, &t); - assert(t == GL_FLOAT); - glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_ALPHA_TYPE_ARB, &t); - assert(t == GL_FLOAT); - - free(image); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, filter); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, filter); - - if (1) { - /* read back the texture and make sure values are correct */ - GLfloat *tex2 = (GLfloat *) - malloc(imgWidth * imgHeight * 4 * sizeof(GLfloat)); - glGetTexImage(GL_TEXTURE_2D, 0, imgFormat, GL_FLOAT, tex2); - CheckError(__LINE__); - for (i = 0; i < imgWidth * imgHeight * 4; i++) { - if (ftex[i] != tex2[i]) { - printf("tex[%d] %g != tex2[%d] %g\n", - i, ftex[i], i, tex2[i]); - } - } - } - - free(ftex); -} - - -static GLuint -CreateProgram(void) -{ - GLuint fragShader, vertShader, program; - - vertShader = CompileShaderText(GL_VERTEX_SHADER, VertShaderText); - fragShader = CompileShaderText(GL_FRAGMENT_SHADER, FragShaderText); - assert(vertShader); - program = LinkShaders(vertShader, fragShader); - - assert(program); - - glUseProgram_func(program); - - SetUniformValues(program, Uniforms); - - return program; -} - - -static void -Init(void) -{ - glClearColor(0.25, 0.25, 0.25, 0.0); - - GetExtensionFuncs(); - - if (!ShadersSupported()) { - printf("Sorry, this test requires GLSL\n"); - exit(1); - } - - if (!glutExtensionSupported("GL_MESAX_texture_float") && - !glutExtensionSupported("GL_ARB_texture_float")) { - printf("Sorry, this test requires GL_MESAX/ARB_texture_float\n"); - exit(1); - } - - InitTexture(); - - Program = CreateProgram(); - glUseProgram_func(Program); -} - - -int -main(int argc, char *argv[]) -{ - glutInit(&argc, argv); - glutInitWindowPosition(0, 0); - glutInitWindowSize(400, 400); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/fog.c b/progs/tests/fog.c deleted file mode 100644 index b6cea8c080..0000000000 --- a/progs/tests/fog.c +++ /dev/null @@ -1,200 +0,0 @@ -/* - * Copyright 2005 Eric Anholt - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Authors: - * Eric Anholt <anholt@FreeBSD.org> - * Brian Paul (fogcoord.c used as a skeleton) - */ - -/* - * Test to exercise fog modes and for comparison with GL_EXT_fog_coord. - */ - -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - -static int Width = 600; -static int Height = 600; -static GLfloat Near = 0.0, Far = 1.0; -GLboolean has_fogcoord; - -static void drawString( const char *string ) -{ - glRasterPos2f(0, .5); - while ( *string ) { - glutBitmapCharacter( GLUT_BITMAP_TIMES_ROMAN_10, *string ); - string++; - } -} - -static void Display( void ) -{ - GLint i, depthi; - GLfloat fogcolor[4] = {1, 1, 1, 1}; - - glEnable(GL_FOG); - glFogfv(GL_FOG_COLOR, fogcolor); - - glClearColor(0.2, 0.2, 0.8, 0); - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - glPushMatrix(); - for (i = 0; i < 6; i++) { - if (i >= 3 && !has_fogcoord) - break; - - glPushMatrix(); - for (depthi = 0; depthi < 5; depthi++) { - GLfloat depth = Near + (Far - Near) * depthi / 4; - - switch (i % 3) { - case 0: - glFogi(GL_FOG_MODE, GL_LINEAR); - glFogf(GL_FOG_START, Near); - glFogf(GL_FOG_END, Far); - break; - case 1: - glFogi(GL_FOG_MODE, GL_EXP); - glFogf(GL_FOG_DENSITY, 2); - break; - case 2: - glFogi(GL_FOG_MODE, GL_EXP2); - glFogf(GL_FOG_DENSITY, 2); - break; - } - - glColor4f(0, 0, 0, 0); - if (i < 3) { - if (has_fogcoord) - glFogi(GL_FOG_COORDINATE_SOURCE_EXT, GL_FRAGMENT_DEPTH_EXT); - - glBegin(GL_POLYGON); - glVertex3f(0, 0, depth); - glVertex3f(1, 0, depth); - glVertex3f(1, 1, depth); - glVertex3f(0, 1, depth); - glEnd(); - } else { - glFogi(GL_FOG_COORDINATE_SOURCE_EXT, GL_FOG_COORDINATE_EXT); - glFogCoordfEXT(depth); - - glBegin(GL_POLYGON); - glVertex3f(0, 0, (Near + Far) / 2); - glVertex3f(1, 0, (Near + Far) / 2); - glVertex3f(1, 1, (Near + Far) / 2); - glVertex3f(0, 1, (Near + Far) / 2); - glEnd(); - } - glTranslatef(1.5, 0, 0); - } - - glTranslatef(.1, 0, 0); - switch (i) { - case 0: - drawString("GL_LINEAR"); - break; - case 1: - drawString("GL_EXP"); - break; - case 2: - drawString("GL_EXP2"); - break; - case 3: - drawString("GL_FOGCOORD GL_LINEAR"); - break; - case 4: - drawString("GL_FOGCOORD GL_EXP"); - break; - case 5: - drawString("GL_FOGCOORD GL_EXP2"); - break; - } - - glPopMatrix(); - glTranslatef(0, 1.5, 0); - } - glPopMatrix(); - - glutSwapBuffers(); -} - - -static void Reshape( int width, int height ) -{ - Width = width; - Height = height; - glViewport( 0, 0, width, height ); - - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glOrtho( 0, 11, 9, 0, -Near, -Far ); - - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - glTranslatef(.25, .25, 0); -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void Init( void ) -{ - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - /* setup lighting, etc */ - has_fogcoord = glutExtensionSupported("GL_EXT_fog_coord"); - if (!has_fogcoord) { - printf("Some output of this program requires GL_EXT_fog_coord\n"); - } -} - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( Width, Height ); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH ); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/fogcoord.c b/progs/tests/fogcoord.c deleted file mode 100644 index 7822d33b09..0000000000 --- a/progs/tests/fogcoord.c +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Exercise GL_EXT_fog_coord - */ - - -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - -static int Width = 600; -static int Height = 200; -static GLfloat Near = 5.0, Far = 25.0; - - -static void Display( void ) -{ - GLfloat t; - - glClearColor(0.2, 0.2, 0.8, 0); - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - for (t = 0.0; t <= 1.0; t += 0.25) { - GLfloat f = Near + t * (Far - Near); - printf("glFogCoord(%4.1f)\n", f); - glFogCoordfEXT(f); - - glPushMatrix(); - glTranslatef(t * 10.0 - 5.0, 0, 0); - glBegin(GL_POLYGON); - glVertex2f(-1, -1); - glVertex2f( 1, -1); - glVertex2f( 1, 1); - glVertex2f(-1, 1); - glEnd(); - glPopMatrix(); - } - glutSwapBuffers(); -} - - -static void Reshape( int width, int height ) -{ - GLfloat ar = (float) width / (float) height; - Width = width; - Height = height; - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -ar, ar, -1.0, 1.0, Near, Far ); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - glTranslatef( 0.0, 0.0, -15.0 ); -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void Init( void ) -{ - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - /* setup lighting, etc */ - if (!glutExtensionSupported("GL_EXT_fog_coord")) { - printf("Sorry, this program requires GL_EXT_fog_coord\n"); - exit(1); - } - glFogi(GL_FOG_COORDINATE_SOURCE_EXT, GL_FOG_COORDINATE_EXT); - glFogi(GL_FOG_MODE, GL_LINEAR); - glFogf(GL_FOG_START, Near); - glFogf(GL_FOG_END, Far); - glEnable(GL_FOG); - printf("Squares should be colored from white -> gray -> black.\n"); -} - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( Width, Height ); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH ); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/fptest1.c b/progs/tests/fptest1.c deleted file mode 100644 index 1f30d5733e..0000000000 --- a/progs/tests/fptest1.c +++ /dev/null @@ -1,228 +0,0 @@ -/* Test GL_NV_fragment_program */ - -#include <assert.h> -#include <string.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - - - -static void Display( void ) -{ - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - glPushMatrix(); - - glColor4f(0, 0.5, 0, 1); - glColor4f(0, 1, 0, 1); - glBegin(GL_POLYGON); - glVertex2f(-1, -1); - glVertex2f( 1, -1); - glVertex2f( 0, 1); - glEnd(); - - glPopMatrix(); - - glutSwapBuffers(); -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -1.0, 1.0, -1.0, 1.0, 5.0, 25.0 ); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - glTranslatef( 0.0, 0.0, -15.0 ); -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void Init( void ) -{ -#if 0 - static const char *prog0 = - "!!FP1.0\n" - "MUL o[COLR], R0, f[WPOS]; \n" - "ADD o[COLH], H3, f[TEX0]; \n" - "ADD_SAT o[COLH], H3, f[TEX0]; \n" - "ADDX o[COLH], H3, f[TEX0]; \n" - "ADDHC o[COLH], H3, f[TEX0]; \n" - "ADDXC o[COLH], H3, f[TEX0]; \n" - "ADDXC_SAT o[COLH], H30, f[TEX0]; \n" - "MUL o[COLR].xy, R0.wzyx, f[WPOS]; \n" - "MUL o[COLR], H0, f[WPOS]; \n" - "MUL o[COLR], -H0, f[WPOS]; \n" - "MOV RC, H1; \n" - "MOV HC, H2; \n" - "END \n" - ; -#endif - - /* masked updates, defines, declarations */ - static const char *prog1 = - "!!FP1.0\n" - "DEFINE foo = {1, 2, 3, 4}; \n" - "DEFINE foo2 = 5; \n" - "DECLARE foo3 = {5, 6, 7, 8}; \n" - "DECLARE bar = 3; \n" - "DECLARE bar2; \n" - "DECLARE bar3 = bar; \n" - "#DECLARE bar4 = { a, b, c, d }; \n" - "MOV o[COLR].xy, R0; \n" - "MOV o[COLR] (NE), R0; \n" - "MOV o[COLR] (NE.wzyx), R0; \n" - "MOV o[COLR].xy (NE.wzyx), R0; \n" - "MOV RC.x (EQ), R1.x; \n" - "KIL NE; \n" - "KIL EQ.xyxy; \n" - "END \n" - ; - - /* texture instructions */ - static const char *prog2 = - "!!FP1.0\n" - "TEX R0, f[TEX0], TEX0, 2D; \n" - "TEX R1, f[TEX1], TEX1, CUBE; \n" - "TEX R2, f[TEX2], TEX2, 3D; \n" - "TXP R3, f[TEX3], TEX3, RECT; \n" - "TXD R3, R2, R1, f[TEX3], TEX3, RECT; \n" - "MUL o[COLR], R0, f[COL0]; \n" - "END \n" - ; - - /* test negation, absolute value */ - static const char *prog3 = - "!!FP1.0\n" - "MOV R0, -R1; \n" - "MOV R0, +R1; \n" - "MOV R0, |-R1|; \n" - "MOV R0, |+R1|; \n" - "MOV R0, -|R1|; \n" - "MOV R0, +|R1|; \n" - "MOV R0, -|-R1|; \n" - "MOV R0, -|+R1|; \n" - "MOV o[COLR], R0; \n" - "END \n" - ; - - /* literal constant sources */ - static const char *prog4 = - "!!FP1.0\n" - "DEFINE Pi = 3.14159; \n" - "MOV R0, {1, -2, +3, 4}; \n" - "MOV R0, 5; \n" - "MOV R0, -5; \n" - "MOV R0, +5; \n" - "MOV R0, Pi; \n" - "MOV o[COLR], R0; \n" - "END \n" - ; - - /* change the fragment color in a simple way */ - static const char *prog10 = - "!!FP1.0\n" - "DEFINE blue = {0, 0, 1, 0};\n" - "DECLARE color; \n" - "MOV R0, f[COL0]; \n" - "#ADD o[COLR], R0, f[COL0]; \n" - "#ADD o[COLR], blue, f[COL0]; \n" - "#ADD o[COLR], {1, 0, 0, 0}, f[COL0]; \n" - "ADD o[COLR], color, f[COL0]; \n" - "END \n" - ; - - GLuint progs[20]; - - if (!glutExtensionSupported ("GL_NV_fragment_program")) { - printf("Sorry, this program requires GL_NV_fragment_program\n"); - exit(1); - } - - glGenProgramsNV(20, progs); - assert(progs[0]); - assert(progs[1]); - assert(progs[0] != progs[1]); - -#if 0 - glLoadProgramNV(GL_FRAGMENT_PROGRAM_NV, progs[0], - strlen(prog0), - (const GLubyte *) prog0); - assert(glIsProgramNV(progs[0])); -#endif - - glLoadProgramNV(GL_FRAGMENT_PROGRAM_NV, progs[1], - strlen(prog1), - (const GLubyte *) prog1); - assert(glIsProgramNV(progs[1])); - - glLoadProgramNV(GL_FRAGMENT_PROGRAM_NV, progs[2], - strlen(prog2), - (const GLubyte *) prog2); - assert(glIsProgramNV(progs[2])); - glBindProgramNV(GL_FRAGMENT_PROGRAM_NV, progs[2]); - - glLoadProgramNV(GL_FRAGMENT_PROGRAM_NV, progs[3], - strlen(prog3), - (const GLubyte *) prog3); - assert(glIsProgramNV(progs[3])); - glBindProgramNV(GL_FRAGMENT_PROGRAM_NV, progs[3]); - - glLoadProgramNV(GL_FRAGMENT_PROGRAM_NV, progs[4], - strlen(prog4), - (const GLubyte *) prog4); - assert(glIsProgramNV(progs[4])); - glBindProgramNV(GL_FRAGMENT_PROGRAM_NV, progs[4]); - - - /* a real program */ - glLoadProgramNV(GL_FRAGMENT_PROGRAM_NV, progs[10], - strlen(prog10), - (const GLubyte *) prog10); - assert(glIsProgramNV(progs[10])); - glBindProgramNV(GL_FRAGMENT_PROGRAM_NV, progs[10]); - - glProgramNamedParameter4fNV(progs[10], - strlen("color"), (const GLubyte *) "color", - 1, 0, 0, 1); - - glEnable(GL_FRAGMENT_PROGRAM_NV); - glEnable(GL_ALPHA_TEST); - glAlphaFunc(GL_ALWAYS, 0.0); - - printf("glGetError = %d\n", (int) glGetError()); -} - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 250, 250 ); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH ); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/fptexture.c b/progs/tests/fptexture.c deleted file mode 100644 index 332e07182d..0000000000 --- a/progs/tests/fptexture.c +++ /dev/null @@ -1,152 +0,0 @@ -/* GL_NV_fragment_program texture test */ - -#include <assert.h> -#include <string.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - -#include "../util/readtex.c" - - -#define TEXTURE_FILE "../images/girl.rgb" - -static GLfloat Xrot = 0.0, Yrot = 0.0, Zrot = 0.0; - - -static void Display( void ) -{ - glClear( GL_COLOR_BUFFER_BIT ); - - glPushMatrix(); - glRotatef(Xrot, 1.0, 0.0, 0.0); - glRotatef(Yrot, 0.0, 1.0, 0.0); - glRotatef(Zrot, 0.0, 0.0, 1.0); - - glBegin(GL_POLYGON); - glColor4f(1.0, 1.0, 1.0, 1); glTexCoord2f(0, 0); glVertex2f(-1, -1); - glColor4f(0.2, 0.2, 1.0, 1); glTexCoord2f(1, 0); glVertex2f( 1, -1); - glColor4f(0.2, 1.0, 0.2, 1); glTexCoord2f(1, 1); glVertex2f( 1, 1); - glColor4f(1.0, 0.2, 0.2, 1); glTexCoord2f(0, 1); glVertex2f(-1, 1); - glEnd(); - - glPopMatrix(); - - glutSwapBuffers(); -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -1.0, 1.0, -1.0, 1.0, 5.0, 25.0 ); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - glTranslatef( 0.0, 0.0, -8.0 ); -} - - -static void SpecialKey( int key, int x, int y ) -{ - float step = 3.0; - (void) x; - (void) y; - - switch (key) { - case GLUT_KEY_UP: - Xrot += step; - break; - case GLUT_KEY_DOWN: - Xrot -= step; - break; - case GLUT_KEY_LEFT: - Yrot += step; - break; - case GLUT_KEY_RIGHT: - Yrot -= step; - break; - } - glutPostRedisplay(); -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void Init( void ) -{ - static const char *modulate2D = - "!!FP1.0\n" - "TEX R0, f[TEX0], TEX0, 2D; \n" - "MUL o[COLR], R0, f[COL0]; \n" - "END" - ; - GLuint modulateProg; - GLuint Texture; - - if (!glutExtensionSupported("GL_NV_fragment_program")) { - printf("Error: GL_NV_fragment_program not supported!\n"); - exit(1); - } - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - - /* Setup the fragment program */ - glGenProgramsNV(1, &modulateProg); - glLoadProgramNV(GL_FRAGMENT_PROGRAM_NV, modulateProg, - strlen(modulate2D), - (const GLubyte *) modulate2D); - printf("glGetError = 0x%x\n", (int) glGetError()); - printf("glError(GL_PROGRAM_ERROR_STRING_NV) = %s\n", - (char *) glGetString(GL_PROGRAM_ERROR_STRING_NV)); - assert(glIsProgramNV(modulateProg)); - - glBindProgramNV(GL_FRAGMENT_PROGRAM_NV, modulateProg); - glEnable(GL_FRAGMENT_PROGRAM_NV); - - /* Load texture */ - glGenTextures(1, &Texture); - glBindTexture(GL_TEXTURE_2D, Texture); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - if (!LoadRGBMipmaps(TEXTURE_FILE, GL_RGB)) { - printf("Error: couldn't load texture image file %s\n", TEXTURE_FILE); - exit(1); - } - /* XXX this enable shouldn't really be needed!!! */ - glEnable(GL_TEXTURE_2D); - - glClearColor(.3, .3, .3, 0); -} - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 250, 250 ); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH ); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutSpecialFunc( SpecialKey ); - glutDisplayFunc( Display ); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/getprocaddress.c b/progs/tests/getprocaddress.c deleted file mode 100644 index 38ca7000df..0000000000 --- a/progs/tests/getprocaddress.c +++ /dev/null @@ -1,3734 +0,0 @@ -/* - * Copyright (C) 1999-2002 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/* - * Test that glXGetProcAddress works. - */ - -#define GLX_GLXEXT_PROTOTYPES - -#include <X11/Xlib.h> -#include <X11/Xutil.h> -#include <GL/gl.h> -#include <GL/glx.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <math.h> - - -typedef void (*generic_func)(); - -#define EQUAL(X, Y) (fabs((X) - (Y)) < 0.001) - -/* This macro simplifies the task of querying an extension function - * pointer and checking to see whether it resolved. - */ -#define DECLARE_GLFUNC_PTR(name,type) \ - type name = (type) glXGetProcAddressARB((const GLubyte *) "gl" #name) - -/******************************************************************** - * Generic helper functions used by the test functions. - */ - -static void CheckGLError(int line, const char *file, const char *function) -{ - int errorCode; - glFinish(); - errorCode = glGetError(); - if (errorCode == GL_NO_ERROR) return; - while (errorCode != GL_NO_ERROR) { - fprintf(stderr, "OpenGL error 0x%x (%s) at line %d of file %s in function %s()\n", - errorCode, - errorCode == GL_INVALID_VALUE? "GL_INVALID_VALUE": - errorCode == GL_INVALID_ENUM? "GL_INVALID_ENUM": - errorCode == GL_INVALID_OPERATION? "GL_INVALID_OPERATION": - errorCode == GL_STACK_OVERFLOW? "GL_STACK_OVERFLOW": - errorCode == GL_STACK_UNDERFLOW? "GL_STACK_UNDERFLOW": - errorCode == GL_OUT_OF_MEMORY? "GL_OUT_OF_MEMORY": - "unknown", - line, file, function); - errorCode = glGetError(); - } - fflush(stderr); -} - -static GLboolean -compare_bytes(const char *errorLabel, GLuint expectedSize, - const GLubyte *expectedData, GLuint actualSize, const GLubyte *actualData) -{ - int i; - - if (expectedSize == actualSize && - memcmp(expectedData, actualData, actualSize) == 0) { - /* All is well */ - return GL_TRUE; - } - - /* Trouble; we don't match. Print out why. */ - fprintf(stderr, "%s: actual data is not as expected\n", errorLabel); - for (i = 0; i <= 1; i++) { - const GLubyte *ptr; - int size; - char *label; - int j; - - switch(i) { - case 0: - label = "expected"; - size = expectedSize; - ptr = expectedData; - break; - case 1: - label = " actual"; - size = actualSize; - ptr = actualData; - break; - } - - fprintf(stderr, " %s: size %d: {", label, size); - for (j = 0; j < size; j++) { - fprintf(stderr, "%s0x%02x", j > 0 ? ", " : "", ptr[j]); - } - fprintf(stderr, "}\n"); - } - - /* We fail if the data is unexpected. */ - return GL_FALSE; -} - - -static GLboolean -compare_ints(const char *errorLabel, GLuint expectedSize, - const GLint *expectedData, GLuint actualSize, const GLint *actualData) -{ - int i; - - if (expectedSize == actualSize && - memcmp(expectedData, actualData, actualSize*sizeof(*expectedData)) == 0) { - /* All is well */ - return GL_TRUE; - } - - /* Trouble; we don't match. Print out why. */ - fprintf(stderr, "%s: actual data is not as expected\n", errorLabel); - for (i = 0; i <= 1; i++) { - const GLint *ptr; - int size; - char *label; - int j; - - switch(i) { - case 0: - label = "expected"; - size = expectedSize; - ptr = expectedData; - break; - case 1: - label = " actual"; - size = actualSize; - ptr = actualData; - break; - } - - fprintf(stderr, " %s: size %d: {", label, size); - for (j = 0; j < size; j++) { - fprintf(stderr, "%s%d", j > 0 ? ", " : "", ptr[j]); - } - fprintf(stderr, "}\n"); - } - - /* We fail if the data is unexpected. */ - return GL_FALSE; -} - -#define MAX_CONVERTED_VALUES 4 -static GLboolean -compare_shorts_to_ints(const char *errorLabel, GLuint expectedSize, - const GLshort *expectedData, GLuint actualSize, const GLint *actualData) -{ - int i; - GLint convertedValues[MAX_CONVERTED_VALUES]; - - if (expectedSize > MAX_CONVERTED_VALUES) { - fprintf(stderr, "%s: too much data [need %d values, have %d values]\n", - errorLabel, expectedSize, MAX_CONVERTED_VALUES); - return GL_FALSE; - } - - for (i = 0; i < expectedSize; i++) { - convertedValues[i] = (GLint) expectedData[i]; - } - - return compare_ints(errorLabel, expectedSize, convertedValues, - actualSize, actualData); -} - -static GLboolean -compare_floats(const char *errorLabel, GLuint expectedSize, - const GLfloat *expectedData, GLuint actualSize, const GLfloat *actualData) -{ - int i; - - if (expectedSize == actualSize && - memcmp(expectedData, actualData, actualSize*sizeof(*expectedData)) == 0) { - /* All is well */ - return GL_TRUE; - } - - /* Trouble; we don't match. Print out why. */ - fprintf(stderr, "%s: actual data is not as expected\n", errorLabel); - for (i = 0; i <= 1; i++) { - const GLfloat *ptr; - int size; - char *label; - int j; - - switch(i) { - case 0: - label = "expected"; - size = expectedSize; - ptr = expectedData; - break; - case 1: - label = " actual"; - size = actualSize; - ptr = actualData; - break; - } - - fprintf(stderr, " %s: size %d: {", label, size); - for (j = 0; j < size; j++) { - fprintf(stderr, "%s%f", j > 0 ? ", " : "", ptr[j]); - } - fprintf(stderr, "}\n"); - } - - /* We fail if the data is unexpected. */ - return GL_FALSE; -} - -static GLboolean -compare_doubles(const char *errorLabel, GLuint expectedSize, - const GLdouble *expectedData, GLuint actualSize, const GLdouble *actualData) -{ - int i; - - if (expectedSize == actualSize || - memcmp(expectedData, actualData, actualSize*sizeof(*expectedData)) == 0) { - /* All is well */ - return GL_TRUE; - } - - /* Trouble; we don't match. Print out why. */ - fprintf(stderr, "%s: actual data is not as expected\n", errorLabel); - for (i = 0; i <= 1; i++) { - const GLdouble *ptr; - int size; - char *label; - int j; - - switch(i) { - case 0: - label = "expected"; - size = expectedSize; - ptr = expectedData; - break; - case 1: - label = " actual"; - size = actualSize; - ptr = actualData; - break; - } - - fprintf(stderr, " %s: size %d: {", label, size); - for (j = 0; j < size; j++) { - fprintf(stderr, "%s%f", j > 0 ? ", " : "", ptr[j]); - } - fprintf(stderr, "}\n"); - } - - /* We fail if the data is unexpected. */ - return GL_FALSE; -} - -/******************************************************************** - * Functions to assist with GL_ARB_texture_compressiong testing - */ - -static GLboolean -check_texture_format_supported(GLenum format) -{ - GLint numFormats; - GLint *formats; - register int i; - - glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB, &numFormats); - formats = malloc(numFormats * sizeof(GLint)); - if (formats == NULL) { - fprintf(stderr, "check_texture_format_supported: could not allocate memory for %d GLints\n", - numFormats); - return GL_FALSE; - } - - memset(formats, 0, numFormats * sizeof(GLint)); - glGetIntegerv(GL_COMPRESSED_TEXTURE_FORMATS_ARB, formats); - - for (i = 0; i < numFormats; i++) { - if (formats[i] == format) { - free(formats); - return GL_TRUE; - } - } - - /* We didn't find the format we were looking for. Give an error. */ -#define FORMAT_NAME(x) (\ - x == GL_COMPRESSED_RGB_FXT1_3DFX ? "GL_COMPRESSED_RGB_FXT1_3DFX" : \ - x == GL_COMPRESSED_RGBA_FXT1_3DFX ? "GL_COMPRESSED_RGBA_FXT1_3DFX" : \ - x == GL_COMPRESSED_RGB_S3TC_DXT1_EXT ? "GL_COMPRESSED_RGB_S3TC_DXT1_EXT" : \ - x == GL_COMPRESSED_RGBA_S3TC_DXT1_EXT ? "GL_COMPRESSED_RGBA_S3TC_DXT1_EXT" : \ - x == GL_COMPRESSED_RGBA_S3TC_DXT3_EXT ? "GL_COMPRESSED_RGBA_S3TC_DXT3_EXT" : \ - x == GL_COMPRESSED_RGBA_S3TC_DXT5_EXT ? "GL_COMPRESSED_RGBA_S3TC_DXT5_EXT" : \ - x == GL_RGB_S3TC ? "GL_RGB_S3TC" : \ - x == GL_RGB4_S3TC ? "GL_RGB4_S3TC" : \ - x == GL_RGBA_S3TC ? "GL_RGBA_S3TC" : \ - x == GL_RGBA4_S3TC ? "GL_RGBA4_S3TC" : \ - "unknown") - fprintf(stderr, "check_texture_format_supported: unsupported format 0x%04x [%s]\n", - format, FORMAT_NAME(format)); - fprintf(stderr, "supported formats:"); - for (i = 0; i < numFormats; i++) { - fprintf(stderr, " 0x%04x [%s]", formats[i], FORMAT_NAME(formats[i])); - } - fprintf(stderr, "\n"); - return GL_FALSE; -} - -/* This helper function compresses an RGBA texture and compares it - * against the expected compressed data. It returns GL_TRUE if all - * went as expected, or GL_FALSE in the case of error. - */ -static GLboolean -check_texture_compression(const char *message, GLenum dimension, - GLint width, GLint height, GLint depth, const GLubyte *texture, - int expectedCompressedSize, const GLubyte *expectedCompressedData) -{ - /* These are the data we query about the texture. */ - GLint isCompressed; - GLenum compressedFormat; - GLint compressedSize; - GLubyte *compressedData; - - /* We need this function pointer to operate. */ - DECLARE_GLFUNC_PTR(GetCompressedTexImageARB, PFNGLGETCOMPRESSEDTEXIMAGEARBPROC); - if (GetCompressedTexImageARB == NULL) { - fprintf(stderr, - "%s: could not query GetCompressedTexImageARB function pointer\n", - message); - return GL_FALSE; - } - - /* Verify that we actually have the GL_COMPRESSED_RGBA_S3TC_DXT3_EXT format available. */ - if (!check_texture_format_supported(GL_COMPRESSED_RGBA_S3TC_DXT3_EXT)) { - return GL_FALSE; - } - - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - /* Set up the base image, requesting that the GL library compress it. */ - switch(dimension) { - case GL_TEXTURE_1D: - glTexImage1D(GL_TEXTURE_1D, 0, GL_COMPRESSED_RGBA_S3TC_DXT3_EXT, - width, 0, - GL_RGBA, GL_UNSIGNED_BYTE, texture); - break; - case GL_TEXTURE_2D: - glTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA_S3TC_DXT3_EXT, - width, height, 0, - GL_RGBA, GL_UNSIGNED_BYTE, texture); - break; - case GL_TEXTURE_3D: - glTexImage3D(GL_TEXTURE_3D, 0, GL_COMPRESSED_RGBA_S3TC_DXT3_EXT, - width, height, depth, 0, - GL_RGBA, GL_UNSIGNED_BYTE, texture); - break; - default: - fprintf(stderr, "%s: unknown dimension 0x%04x.\n", message, dimension); - return GL_FALSE; - } - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* Make sure the texture is compressed, and pull it out if it is. */ - glGetTexLevelParameteriv(dimension, 0, GL_TEXTURE_COMPRESSED_ARB, - &isCompressed); - if (!isCompressed) { - fprintf(stderr, "%s: could not compress GL_COMPRESSED_RGBA_S3TC_DXT3_EXT texture\n", - message); - return GL_FALSE; - } - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - glGetTexLevelParameteriv(dimension, 0, GL_TEXTURE_INTERNAL_FORMAT, - (GLint *)&compressedFormat); - if (compressedFormat != GL_COMPRESSED_RGBA_S3TC_DXT3_EXT) { - fprintf(stderr, "%s: got internal format 0x%04x, expected GL_COMPRESSED_RGBA_S3TC_DXT3_EXT [0x%04x]\n", - __FUNCTION__, compressedFormat, GL_COMPRESSED_RGBA_S3TC_DXT3_EXT); - return GL_FALSE; - } - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - glGetTexLevelParameteriv(dimension, 0, GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB, &compressedSize); - compressedData = malloc(compressedSize); - if (compressedData == NULL) { - fprintf(stderr, "%s: could not malloc %d bytes for compressed texture\n", - message, compressedSize); - return GL_FALSE; - } - memset(compressedData, 0, compressedSize); - (*GetCompressedTexImageARB)(dimension, 0, compressedData); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* Compare it to the expected compressed data. The compare_bytes() - * call will print out diagnostics in the case of failure. - */ - if (!compare_bytes(message, - expectedCompressedSize, expectedCompressedData, - compressedSize, compressedData)) { - - free(compressedData); - return GL_FALSE; - } - - /* All done. Free our allocated data and return success. */ - free(compressedData); - return GL_TRUE; -} - -/* We'll use one function to exercise 1D, 2D, and 3D textures. */ - -/* The test function for compressed 3D texture images requires several - * different function pointers that have to be queried. This function - * gets all the function pointers it needs itself, and so is suitable for - * use to test any and all of the incorporated functions. - */ - -static GLboolean -exercise_CompressedTextures(GLenum dimension) -{ - /* Set up a basic (uncompressed) texture. We're doing a blue/yellow - * checkerboard. The 8x4/32-pixel board is well-suited to S3TC - * compression, which works on 4x4 blocks of pixels. - */ -#define B 0,0,255,255 -#define Y 255,255,0,255 -#define TEXTURE_WIDTH 16 -#define TEXTURE_HEIGHT 4 -#define TEXTURE_DEPTH 1 - static GLubyte texture[TEXTURE_WIDTH*TEXTURE_HEIGHT*TEXTURE_DEPTH*4] = { - B, B, Y, Y, B, B, Y, Y, B, B, Y, Y, B, B, Y, Y, - B, B, Y, Y, B, B, Y, Y, B, B, Y, Y, B, B, Y, Y, - Y, Y, B, B, Y, Y, B, B, Y, Y, B, B, Y, Y, B, B, - Y, Y, B, B, Y, Y, B, B, Y, Y, B, B, Y, Y, B, B, - }; -#undef B -#undef Y - GLubyte uncompressedTexture[TEXTURE_WIDTH*TEXTURE_HEIGHT*TEXTURE_DEPTH*4]; - - /* We'll use this as a texture subimage. */ -#define R 255,0,0,255 -#define G 0,255,0,255 -#define SUBTEXTURE_WIDTH 4 -#define SUBTEXTURE_HEIGHT 4 -#define SUBTEXTURE_DEPTH 1 - static GLubyte subtexture[SUBTEXTURE_WIDTH*SUBTEXTURE_HEIGHT*SUBTEXTURE_DEPTH*4] = { - G, G, R, R, - G, G, R, R, - R, R, G, G, - R, R, G, G, - }; -#undef R -#undef G - - /* These are the expected compressed textures. (In the case of - * a failed comparison, the test program will print out the - * actual compressed data in a format that can be directly used - * here, if desired.) The brave of heart can calculate the compression - * themselves based on the formulae described at: - * http://en.wikipedia.org/wiki/S3_Texture_Compression - * In a nutshell, each group of 16 bytes encodes a 4x4 texture block. - * The first eight bytes of each group are 4-bit alpha values - * for each of the 16 pixels in the texture block. - * The next four bytes in each group are LSB-first RGB565 colors; the - * first two bytes are identified as the color C0, and the next two - * are the color C1. (Two more colors C2 and C3 will be calculated - * from these, but do not appear in the compression data.) The - * last 4 bytes of the group are sixteen 2-bit indices that, for - * each of the 16 pixels in the texture block, select one of the - * colors C0, C1, C2, or C3. - * - * For example, our blue/yellow checkerboard is made up of - * four identical 4x4 blocks. Each of those blocks will - * be encoded as: eight bytes of 0xff (16 alpha values, each 0xf), - * C0 as the RGB565 color yellow (0xffe0), encoded LSB-first; - * C1 as the RGB565 color blue (0x001f), encoded LSB-first; - * and 4 bytes of 16 2-bit color indices reflecting the - * choice of color for each of the 16 pixels: - * 00, 00, 01, 01, = 0x05 - * 00, 00, 01, 01, = 0x05 - * 01, 01, 00, 00, = 0x50 - * 01, 01, 00, 00, = 0x50 - */ - static GLubyte compressedTexture[] = { - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xe0, 0xff, 0x1f, 0x00, 0x05, 0x05, 0x50, 0x50, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xe0, 0xff, 0x1f, 0x00, 0x05, 0x05, 0x50, 0x50, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xe0, 0xff, 0x1f, 0x00, 0x05, 0x05, 0x50, 0x50, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xe0, 0xff, 0x1f, 0x00, 0x05, 0x05, 0x50, 0x50 - }; - - /* The similar calculations for the 4x4 subtexture are left - * as an exercise for the reader. - */ - static GLubyte compressedSubTexture[] = { - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0x00, 0xf8, 0xe0, 0x07, 0x05, 0x05, 0x50, 0x50, - }; - - /* The combined texture replaces the initial blue/yellow - * block with the green/red block. (I'd wanted to do - * the more interesting exercise of putting the - * green/red block in the middle of the blue/yellow - * texture, which is a non-trivial replacement, but - * the attempt produces GL_INVALID_OPERATION, showing - * that you can only replace whole blocks of - * subimages with S3TC.) The combined texture looks - * like: - * G G R R B B Y Y B B Y Y B B Y Y - * G G R R B B Y Y B B Y Y B B Y Y - * R R G G Y Y B B Y Y B B Y Y B B - * R R G G Y Y B B Y Y B B Y Y B B - * which encodes just like the green/red block followed - * by 3 copies of the yellow/blue block. - */ - static GLubyte compressedCombinedTexture[] = { - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0x00, 0xf8, 0xe0, 0x07, 0x05, 0x05, 0x50, 0x50, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xe0, 0xff, 0x1f, 0x00, 0x05, 0x05, 0x50, 0x50, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xe0, 0xff, 0x1f, 0x00, 0x05, 0x05, 0x50, 0x50, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xe0, 0xff, 0x1f, 0x00, 0x05, 0x05, 0x50, 0x50 - }; - - /* These are the data we query about the texture. */ - GLint queryIsCompressed; - GLenum queryCompressedFormat; - GLint queryCompressedSize; - GLubyte queryCompressedData[sizeof(compressedTexture)]; - - /* Query the function pointers we need. We actually won't need most - * of these (the "dimension" parameter dictates whether we're testing - * 1D, 2D, or 3D textures), but we'll have them all ready just in case. - */ - DECLARE_GLFUNC_PTR(GetCompressedTexImageARB, PFNGLGETCOMPRESSEDTEXIMAGEARBPROC); - DECLARE_GLFUNC_PTR(CompressedTexImage3DARB, PFNGLCOMPRESSEDTEXIMAGE3DARBPROC); - DECLARE_GLFUNC_PTR(CompressedTexSubImage3DARB, PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC); - DECLARE_GLFUNC_PTR(CompressedTexImage2DARB, PFNGLCOMPRESSEDTEXIMAGE2DARBPROC); - DECLARE_GLFUNC_PTR(CompressedTexSubImage2DARB, PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC); - DECLARE_GLFUNC_PTR(CompressedTexImage1DARB, PFNGLCOMPRESSEDTEXIMAGE1DARBPROC); - DECLARE_GLFUNC_PTR(CompressedTexSubImage1DARB, PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC); - - /* If the necessary functions are missing, we can't continue */ - if (GetCompressedTexImageARB == NULL) { - fprintf(stderr, "%s: GetCompressedTexImageARB function is missing\n", - __FUNCTION__); - return GL_FALSE; - } - switch (dimension) { - case GL_TEXTURE_1D: - if (CompressedTexImage1DARB == NULL || CompressedTexSubImage1DARB == NULL) { - fprintf(stderr, "%s: 1D compressed texture functions are missing\n", - __FUNCTION__); - return GL_FALSE; - }; - break; - case GL_TEXTURE_2D: - if (CompressedTexImage2DARB == NULL || CompressedTexSubImage2DARB == NULL) { - fprintf(stderr, "%s: 2D compressed texture functions are missing\n", - __FUNCTION__); - return GL_FALSE; - }; - break; - case GL_TEXTURE_3D: - if (CompressedTexImage3DARB == NULL || CompressedTexSubImage3DARB == NULL) { - fprintf(stderr, "%s: 3D compressed texture functions are missing\n", - __FUNCTION__); - return GL_FALSE; - }; - break; - default: - fprintf(stderr, "%s: unknown texture dimension 0x%04x passed.\n", - __FUNCTION__, dimension); - return GL_FALSE; - } - - /* Check the compression of our base texture image. */ - if (!check_texture_compression("texture compression", dimension, - TEXTURE_WIDTH, TEXTURE_HEIGHT, TEXTURE_DEPTH, texture, - sizeof(compressedTexture), compressedTexture)) { - - /* Something's wrong with texture compression. The function - * above will have printed an appropriate error. - */ - return GL_FALSE; - } - - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* Do the same for our texture subimage */ - if (!check_texture_compression("subtexture compression", dimension, - SUBTEXTURE_WIDTH, SUBTEXTURE_HEIGHT, SUBTEXTURE_DEPTH, subtexture, - sizeof(compressedSubTexture), compressedSubTexture)) { - - /* Something's wrong with texture compression. The function - * above will have printed an appropriate error. - */ - return GL_FALSE; - } - - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* Send the base compressed texture down to the hardware. */ - switch(dimension) { - case GL_TEXTURE_3D: - (*CompressedTexImage3DARB)(GL_TEXTURE_3D, 0, - GL_COMPRESSED_RGBA_S3TC_DXT3_EXT, - TEXTURE_WIDTH, TEXTURE_HEIGHT, TEXTURE_DEPTH, 0, - sizeof(compressedTexture), compressedTexture); - break; - - case GL_TEXTURE_2D: - (*CompressedTexImage2DARB)(GL_TEXTURE_2D, 0, - GL_COMPRESSED_RGBA_S3TC_DXT3_EXT, - TEXTURE_WIDTH, TEXTURE_HEIGHT, 0, - sizeof(compressedTexture), compressedTexture); - break; - - case GL_TEXTURE_1D: - (*CompressedTexImage1DARB)(GL_TEXTURE_1D, 0, - GL_COMPRESSED_RGBA_S3TC_DXT3_EXT, - TEXTURE_WIDTH, 0, - sizeof(compressedTexture), compressedTexture); - break; - } - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* For grins, query it to make sure it is as expected. */ - glGetTexLevelParameteriv(dimension, 0, GL_TEXTURE_COMPRESSED_ARB, - &queryIsCompressed); - if (!queryIsCompressed) { - fprintf(stderr, "%s: compressed texture did not come back as compressed\n", - __FUNCTION__); - return GL_FALSE; - } - glGetTexLevelParameteriv(dimension, 0, GL_TEXTURE_INTERNAL_FORMAT, - (GLint *)&queryCompressedFormat); - if (queryCompressedFormat != GL_COMPRESSED_RGBA_S3TC_DXT3_EXT) { - fprintf(stderr, "%s: got internal format 0x%04x, expected GL_COMPRESSED_RGBA_S3TC_DXT3_EXT [0x%04x]\n", - __FUNCTION__, queryCompressedFormat, GL_COMPRESSED_RGBA_S3TC_DXT3_EXT); - return GL_FALSE; - } - glGetTexLevelParameteriv(dimension, 0, GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB, - &queryCompressedSize); - if (queryCompressedSize != sizeof(compressedTexture)) { - fprintf(stderr, "%s: compressed 3D texture changed size: expected %lu, actual %d\n", - __FUNCTION__, (unsigned long) sizeof(compressedTexture), queryCompressedSize); - return GL_FALSE; - } - (*GetCompressedTexImageARB)(dimension, 0, queryCompressedData); - if (!compare_bytes( - "exercise_CompressedTextures:doublechecking compressed texture", - sizeof(compressedTexture), compressedTexture, - queryCompressedSize, queryCompressedData)) { - return GL_FALSE; - } - - /* Now apply the texture subimage. The current implementation of - * S3TC requires that subimages be only applied to whole blocks. - */ - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - switch(dimension) { - case GL_TEXTURE_3D: - (*CompressedTexSubImage3DARB)(GL_TEXTURE_3D, 0, - 0, 0, 0, /* offsets */ - SUBTEXTURE_WIDTH, SUBTEXTURE_HEIGHT, SUBTEXTURE_DEPTH, - GL_COMPRESSED_RGBA_S3TC_DXT3_EXT, - sizeof(compressedSubTexture), compressedSubTexture); - break; - case GL_TEXTURE_2D: - (*CompressedTexSubImage2DARB)(GL_TEXTURE_2D, 0, - 0, 0, /* offsets */ - SUBTEXTURE_WIDTH, SUBTEXTURE_HEIGHT, - GL_COMPRESSED_RGBA_S3TC_DXT3_EXT, - sizeof(compressedSubTexture), compressedSubTexture); - break; - case GL_TEXTURE_1D: - (*CompressedTexSubImage2DARB)(GL_TEXTURE_2D, 0, - 0, 0, /* offsets */ - SUBTEXTURE_WIDTH, SUBTEXTURE_HEIGHT, - GL_COMPRESSED_RGBA_S3TC_DXT3_EXT, - sizeof(compressedSubTexture), compressedSubTexture); - break; - } - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* Query the compressed texture back now, and see that it - * is as expected. - */ - (*GetCompressedTexImageARB)(dimension, 0, queryCompressedData); - if (!compare_bytes("exercise_CompressedTextures:combined texture", - sizeof(compressedCombinedTexture), compressedCombinedTexture, - queryCompressedSize, queryCompressedData)) { - return GL_FALSE; - } - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* Just for the exercise, uncompress the texture and pull it out. - * We don't check it because the compression is lossy, so it won't - * compare exactly to the source texture; we just - * want to exercise the code paths that convert it. - */ - glGetTexImage(dimension, 0, GL_RGBA, GL_UNSIGNED_BYTE, uncompressedTexture); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* If we survived this far, we pass. */ - return GL_TRUE; -} - -/************************************************************************** - * Functions to assist with GL_EXT_framebuffer_object and - * GL_EXT_framebuffer_blit testing. - */ - -#define FB_STATUS_NAME(x) (\ - x == GL_FRAMEBUFFER_COMPLETE_EXT ? "GL_FRAMEBUFFER_COMPLETE_EXT" : \ - x == GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT ? "GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT" : \ - x == GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT ? "GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT" : \ - x == GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT ? "GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT" : \ - x == GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT ? "GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT" : \ - x == GL_FRAMEBUFFER_UNSUPPORTED_EXT ? "GL_FRAMEBUFFER_UNSUPPORTED_EXT" : \ - x == GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT ? "GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT" : \ - x == GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT ? "GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT" : \ - x == GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT ? "GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT" : \ - "unknown") - -static GLboolean -exercise_framebuffer(void) -{ - GLuint framebufferID = 0; - GLuint renderbufferID = 0; - - /* Dimensions of the framebuffer and renderbuffers are arbitrary. - * Since they won't be shown on-screen, we can use whatever we want. - */ - const GLint Width = 100; - const GLint Height = 100; - - /* Every function we use will be referenced through function pointers. - * This will allow this test program to run on OpenGL implementations - * that *don't* implement these extensions (though the implementation - * used to compile them must have up-to-date header files). - */ - DECLARE_GLFUNC_PTR(GenFramebuffersEXT, PFNGLGENFRAMEBUFFERSEXTPROC); - DECLARE_GLFUNC_PTR(IsFramebufferEXT, PFNGLISFRAMEBUFFEREXTPROC); - DECLARE_GLFUNC_PTR(DeleteFramebuffersEXT, PFNGLDELETEFRAMEBUFFERSEXTPROC); - DECLARE_GLFUNC_PTR(BindFramebufferEXT, PFNGLBINDFRAMEBUFFEREXTPROC); - DECLARE_GLFUNC_PTR(GenRenderbuffersEXT, PFNGLGENRENDERBUFFERSEXTPROC); - DECLARE_GLFUNC_PTR(IsRenderbufferEXT, PFNGLISRENDERBUFFEREXTPROC); - DECLARE_GLFUNC_PTR(DeleteRenderbuffersEXT, PFNGLDELETERENDERBUFFERSEXTPROC); - DECLARE_GLFUNC_PTR(BindRenderbufferEXT, PFNGLBINDRENDERBUFFEREXTPROC); - DECLARE_GLFUNC_PTR(FramebufferRenderbufferEXT, PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC); - DECLARE_GLFUNC_PTR(RenderbufferStorageEXT, PFNGLRENDERBUFFERSTORAGEEXTPROC); - DECLARE_GLFUNC_PTR(CheckFramebufferStatusEXT, PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC); - - /* The BlitFramebuffer function comes from a different extension. - * It's possible for an implementation to implement all the above, - * but not BlitFramebuffer; so it's okay if this one comes back - * NULL, as we can still test the rest. - */ - DECLARE_GLFUNC_PTR(BlitFramebufferEXT, PFNGLBLITFRAMEBUFFEREXTPROC); - - /* We cannot test unless we have all the function pointers. */ - if ( - GenFramebuffersEXT == NULL || - IsFramebufferEXT == NULL || - DeleteFramebuffersEXT == NULL || - BindFramebufferEXT == NULL || - GenRenderbuffersEXT == NULL || - IsRenderbufferEXT == NULL || - DeleteRenderbuffersEXT == NULL || - BindRenderbufferEXT == NULL || - FramebufferRenderbufferEXT == NULL || - RenderbufferStorageEXT == NULL || - CheckFramebufferStatusEXT == NULL - ) { - fprintf(stderr, "%s: could not locate all framebuffer functions\n", - __FUNCTION__); - return GL_FALSE; - } - - /* Generate a framebuffer for us to play with. */ - (*GenFramebuffersEXT)(1, &framebufferID); - if (framebufferID == 0) { - fprintf(stderr, "%s: failed to generate a frame buffer ID.\n", - __FUNCTION__); - return GL_FALSE; - } - /* The generated name is not a framebuffer object until bound. */ - (*BindFramebufferEXT)(GL_FRAMEBUFFER_EXT, framebufferID); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - if (!(*IsFramebufferEXT)(framebufferID)) { - fprintf(stderr, "%s: generated a frame buffer ID 0x%x that wasn't a framebuffer\n", - __FUNCTION__, framebufferID); - (*BindFramebufferEXT)(GL_FRAMEBUFFER_EXT, 0); - (*DeleteFramebuffersEXT)(1, &framebufferID); - return GL_FALSE; - } - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - { - GLint queriedFramebufferID; - glGetIntegerv(GL_FRAMEBUFFER_BINDING_EXT, &queriedFramebufferID); - if (queriedFramebufferID != framebufferID) { - fprintf(stderr, "%s: bound frame buffer 0x%x, but queried 0x%x\n", - __FUNCTION__, framebufferID, queriedFramebufferID); - (*BindFramebufferEXT)(GL_FRAMEBUFFER_EXT, 0); - (*DeleteFramebuffersEXT)(1, &framebufferID); - return GL_FALSE; - } - } - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* Create a color buffer to attach to the frame buffer object, so - * we can actually operate on it. We go through the same basic checks - * with the renderbuffer that we do with the framebuffer. - */ - (*GenRenderbuffersEXT)(1, &renderbufferID); - if (renderbufferID == 0) { - fprintf(stderr, "%s: could not generate a renderbuffer ID\n", - __FUNCTION__); - (*BindFramebufferEXT)(GL_FRAMEBUFFER_EXT, 0); - (*DeleteFramebuffersEXT)(1, &framebufferID); - return GL_FALSE; - } - (*BindRenderbufferEXT)(GL_RENDERBUFFER_EXT, renderbufferID); - if (!(*IsRenderbufferEXT)(renderbufferID)) { - fprintf(stderr, "%s: generated renderbuffer 0x%x is not a renderbuffer\n", - __FUNCTION__, renderbufferID); - (*BindRenderbufferEXT)(GL_RENDERBUFFER_EXT, 0); - (*DeleteRenderbuffersEXT)(1, &renderbufferID); - (*BindFramebufferEXT)(GL_FRAMEBUFFER_EXT, 0); - (*DeleteFramebuffersEXT)(1, &framebufferID); - return GL_FALSE; - } - { - GLint queriedRenderbufferID = 0; - glGetIntegerv(GL_RENDERBUFFER_BINDING_EXT, &queriedRenderbufferID); - if (renderbufferID != queriedRenderbufferID) { - fprintf(stderr, "%s: bound renderbuffer 0x%x, but got 0x%x\n", - __FUNCTION__, renderbufferID, queriedRenderbufferID); - (*BindRenderbufferEXT)(GL_RENDERBUFFER_EXT, 0); - (*DeleteRenderbuffersEXT)(1, &renderbufferID); - (*BindFramebufferEXT)(GL_FRAMEBUFFER_EXT, 0); - (*DeleteFramebuffersEXT)(1, &framebufferID); - return GL_FALSE; - } - } - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* Add the renderbuffer as a color attachment to the current - * framebuffer (which is our generated framebuffer). - */ - (*FramebufferRenderbufferEXT)(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT1_EXT, - GL_RENDERBUFFER_EXT, renderbufferID); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* The renderbuffer will need some dimensions and storage space. */ - (*RenderbufferStorageEXT)(GL_RENDERBUFFER_EXT, GL_RGB, Width, Height); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* That should be everything we need. If we set up to draw and to - * read from our color attachment, we should be "framebuffer complete", - * meaning the framebuffer is ready to go. - */ - glDrawBuffer(GL_COLOR_ATTACHMENT1_EXT); - glReadBuffer(GL_COLOR_ATTACHMENT1_EXT); - { - GLenum status = (*CheckFramebufferStatusEXT)(GL_FRAMEBUFFER_EXT); - if (status != GL_FRAMEBUFFER_COMPLETE_EXT) { - fprintf(stderr, "%s: framebuffer not complete; status = %s [0x%x]\n", - __FUNCTION__, FB_STATUS_NAME(status), status); - glReadBuffer(0); - glDrawBuffer(0); - (*BindRenderbufferEXT)(GL_RENDERBUFFER_EXT, 0); - (*DeleteRenderbuffersEXT)(1, &renderbufferID); - (*BindFramebufferEXT)(GL_FRAMEBUFFER_EXT, 0); - (*DeleteFramebuffersEXT)(1, &framebufferID); - return GL_FALSE; - } - } - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* Define the contents of the frame buffer */ - glClearColor(0.5, 0.5, 0.5, 0.0); - glClear(GL_COLOR_BUFFER_BIT); - - /* If the GL_EXT_framebuffer_blit is supported, attempt a framebuffer - * blit from (5,5)-(10,10) to (90,90)-(95,95). This is *not* an - * error if framebuffer_blit is *not* supported (as we can still - * effectively test the other functions). - */ - if (BlitFramebufferEXT != NULL) { - (*BlitFramebufferEXT)(5, 5, 10, 10, 90, 90, 95, 95, - GL_COLOR_BUFFER_BIT, GL_NEAREST); - } - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* We could now test to see whether the framebuffer had the desired - * contents. As this is just a touch test, we'll leave that for now. - * Clean up and go home. - */ - glReadBuffer(0); - glDrawBuffer(0); - (*BindRenderbufferEXT)(GL_RENDERBUFFER_EXT, 0); - (*DeleteRenderbuffersEXT)(1, &renderbufferID); - (*BindFramebufferEXT)(GL_FRAMEBUFFER_EXT, 0); - (*DeleteFramebuffersEXT)(1, &framebufferID); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - return GL_TRUE; -} - -/************************************************************************** - * Functions to assist with GL_ARB_shader_objects testing. - */ - -static void -print_info_log(const char *message, GLhandleARB object) -{ - DECLARE_GLFUNC_PTR(GetObjectParameterivARB, PFNGLGETOBJECTPARAMETERIVARBPROC); - DECLARE_GLFUNC_PTR(GetInfoLogARB, PFNGLGETINFOLOGARBPROC); - int logLength, queryLength; - char *log; - - if (GetObjectParameterivARB == NULL) { - fprintf(stderr, "%s: could not get GetObjectParameterivARB address\n", - message); - return; - } - if (GetInfoLogARB == NULL) { - fprintf(stderr, "%s: could not get GetInfoLogARB address\n", - message); - return; - } - - (*GetObjectParameterivARB)(object, GL_OBJECT_INFO_LOG_LENGTH_ARB, - &logLength); - if (logLength == 0) { - fprintf(stderr, "%s: info log length is 0\n", message); - return; - } - log = malloc(logLength); - if (log == NULL) { - fprintf(stderr, "%s: could not malloc %d bytes for info log\n", - message, logLength); - } - else { - (*GetInfoLogARB)(object, logLength, &queryLength, log); - fprintf(stderr, "%s: info log says '%s'\n", - message, log); - } - free(log); -} - -static GLboolean -exercise_uniform_start(const char *fragmentShaderText, const char *uniformName, - GLhandleARB *returnProgram, GLint *returnUniformLocation) -{ - DECLARE_GLFUNC_PTR(CreateShaderObjectARB, PFNGLCREATESHADEROBJECTARBPROC); - DECLARE_GLFUNC_PTR(ShaderSourceARB, PFNGLSHADERSOURCEARBPROC); - DECLARE_GLFUNC_PTR(CompileShaderARB, PFNGLCOMPILESHADERARBPROC); - DECLARE_GLFUNC_PTR(CreateProgramObjectARB, PFNGLCREATEPROGRAMOBJECTARBPROC); - DECLARE_GLFUNC_PTR(AttachObjectARB, PFNGLATTACHOBJECTARBPROC); - DECLARE_GLFUNC_PTR(LinkProgramARB, PFNGLLINKPROGRAMARBPROC); - DECLARE_GLFUNC_PTR(UseProgramObjectARB, PFNGLUSEPROGRAMOBJECTARBPROC); - DECLARE_GLFUNC_PTR(ValidateProgramARB, PFNGLVALIDATEPROGRAMARBPROC); - DECLARE_GLFUNC_PTR(GetUniformLocationARB, PFNGLGETUNIFORMLOCATIONARBPROC); - DECLARE_GLFUNC_PTR(DeleteObjectARB, PFNGLDELETEOBJECTARBPROC); - DECLARE_GLFUNC_PTR(GetObjectParameterivARB, PFNGLGETOBJECTPARAMETERIVARBPROC); - GLhandleARB fs, program; - GLint uniformLocation; - GLint shaderCompiled, programValidated; - - if (CreateShaderObjectARB == NULL || - ShaderSourceARB == NULL || - CompileShaderARB == NULL || - CreateProgramObjectARB == NULL || - AttachObjectARB == NULL || - LinkProgramARB == NULL || - UseProgramObjectARB == NULL || - ValidateProgramARB == NULL || - GetUniformLocationARB == NULL || - DeleteObjectARB == NULL || - GetObjectParameterivARB == NULL || - 0) { - return GL_FALSE; - } - - /* Create the trivial fragment shader and program. For safety - * we'll check to make sure they compile and link correctly. - */ - fs = (*CreateShaderObjectARB)(GL_FRAGMENT_SHADER_ARB); - (*ShaderSourceARB)(fs, 1, &fragmentShaderText, NULL); - (*CompileShaderARB)(fs); - (*GetObjectParameterivARB)(fs, GL_OBJECT_COMPILE_STATUS_ARB, - &shaderCompiled); - if (!shaderCompiled) { - print_info_log("shader did not compile", fs); - (*DeleteObjectARB)(fs); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - return GL_FALSE; - } - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - program = (*CreateProgramObjectARB)(); - (*AttachObjectARB)(program, fs); - (*LinkProgramARB)(program); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* Make sure we're going to run successfully */ - (*ValidateProgramARB)(program); - (*GetObjectParameterivARB)(program, GL_OBJECT_VALIDATE_STATUS_ARB, - &programValidated); - if (!programValidated) {; - print_info_log("program did not validate", program); - (*DeleteObjectARB)(program); - (*DeleteObjectARB)(fs); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - return GL_FALSE; - } - - /* Put the program in place. We're not allowed to assign to uniform - * variables used by the program until the program is put into use. - */ - (*UseProgramObjectARB)(program); - - /* Once the shader is in place, we're free to delete it; this - * won't affect the copy that's part of the program. - */ - (*DeleteObjectARB)(fs); - - /* Find the location index of the uniform variable we declared; - * the caller will ned that to set the value. - */ - uniformLocation = (*GetUniformLocationARB)(program, uniformName); - if (uniformLocation == -1) { - fprintf(stderr, "%s: could not determine uniform location\n", - __FUNCTION__); - (*DeleteObjectARB)(program); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - return GL_FALSE; - } - - /* All done with what we're supposed to do - return the program - * handle and the uniform location to the caller. - */ - *returnProgram = program; - *returnUniformLocation = uniformLocation; - return GL_TRUE; -} - -static void -exercise_uniform_end(GLhandleARB program) -{ - DECLARE_GLFUNC_PTR(UseProgramObjectARB, PFNGLUSEPROGRAMOBJECTARBPROC); - DECLARE_GLFUNC_PTR(DeleteObjectARB, PFNGLDELETEOBJECTARBPROC); - if (UseProgramObjectARB == NULL || DeleteObjectARB == NULL) { - return; - } - - /* Turn off our program by setting the special value 0, and - * then delete the program object. - */ - (*UseProgramObjectARB)(0); - (*DeleteObjectARB)(program); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); -} - -/************************************************************************** - * Exercises for fences - */ -static GLboolean -exercise_fences(void) -{ - DECLARE_GLFUNC_PTR(DeleteFencesNV, PFNGLDELETEFENCESNVPROC); - DECLARE_GLFUNC_PTR(FinishFenceNV, PFNGLFINISHFENCENVPROC); - DECLARE_GLFUNC_PTR(GenFencesNV, PFNGLGENFENCESNVPROC); - DECLARE_GLFUNC_PTR(GetFenceivNV, PFNGLGETFENCEIVNVPROC); - DECLARE_GLFUNC_PTR(IsFenceNV, PFNGLISFENCENVPROC); - DECLARE_GLFUNC_PTR(SetFenceNV, PFNGLSETFENCENVPROC); - DECLARE_GLFUNC_PTR(TestFenceNV, PFNGLTESTFENCENVPROC); - GLuint fence; - GLint fenceStatus, fenceCondition; - int count; - - /* Make sure we have all the function pointers we need. */ - if (GenFencesNV == NULL || - SetFenceNV == NULL || - IsFenceNV == NULL || - GetFenceivNV == NULL || - TestFenceNV == NULL || - FinishFenceNV == NULL || - DeleteFencesNV == NULL) { - fprintf(stderr, "%s: don't have all the fence functions\n", - __FUNCTION__); - return GL_FALSE; - } - - /* Create and set a simple fence. */ - (*GenFencesNV)(1, &fence); - (*SetFenceNV)(fence, GL_ALL_COMPLETED_NV); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* Make sure it reads as a fence. */ - if (!(*IsFenceNV)(fence)) { - fprintf(stderr, "%s: set fence is not a fence\n", __FUNCTION__); - (*DeleteFencesNV)(1, &fence); - return GL_FALSE; - } - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* Try to read back its current status and condition. */ - (*GetFenceivNV)(fence, GL_FENCE_CONDITION_NV, &fenceCondition); - if (fenceCondition != GL_ALL_COMPLETED_NV) { - fprintf(stderr, "%s: expected fence condition 0x%x, got 0x%x\n", - __FUNCTION__, GL_ALL_COMPLETED_NV, fenceCondition); - (*DeleteFencesNV)(1, &fence); - return GL_FALSE; - } - (*GetFenceivNV)(fence, GL_FENCE_STATUS_NV, &fenceStatus); - if (fenceStatus != GL_TRUE && fenceStatus != GL_FALSE) { - fprintf(stderr,"%s: fence status should be GL_TRUE or GL_FALSE, got 0x%x\n", - __FUNCTION__, fenceStatus); - (*DeleteFencesNV)(1, &fence); - return GL_FALSE; - } - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* Set the fence again, query its status, and wait for it to finish - * two different ways: once by looping on TestFence(), and a - * second time by a simple call to FinishFence(); - */ - (*SetFenceNV)(fence, GL_ALL_COMPLETED_NV); - glFlush(); - count = 1; - while (!(*TestFenceNV)(fence)) { - count++; - if (count == 0) { - break; - } - } - if (count == 0) { - fprintf(stderr, "%s: fence never returned true\n", __FUNCTION__); - (*DeleteFencesNV)(1, &fence); - return GL_FALSE; - } - (*SetFenceNV)(fence, GL_ALL_COMPLETED_NV); - (*FinishFenceNV)(fence); - if ((*TestFenceNV)(fence) != GL_TRUE) { - fprintf(stderr, "%s: finished fence does not have status GL_TRUE\n", - __FUNCTION__); - (*DeleteFencesNV)(1, &fence); - return GL_FALSE; - } - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* All done. Delete the fence and return. */ - (*DeleteFencesNV)(1, &fence); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - return GL_TRUE; -} - -/************************************************************************** - * Exercises for buffer objects - */ -enum Map_Buffer_Usage{ Use_Map_Buffer, Use_Map_Buffer_Range}; -static GLboolean -exercise_buffer_objects(enum Map_Buffer_Usage usage) -{ -#define BUFFER_DATA_SIZE 1024 - GLuint bufferID; - GLint bufferMapped; - static GLubyte data[BUFFER_DATA_SIZE] = {0}; - float *dataPtr = NULL; - - /* Get the function pointers we need. These are from - * GL_ARB_vertex_buffer_object and are required in all - * cases. - */ - DECLARE_GLFUNC_PTR(GenBuffersARB, PFNGLGENBUFFERSARBPROC); - DECLARE_GLFUNC_PTR(BindBufferARB, PFNGLBINDBUFFERARBPROC); - DECLARE_GLFUNC_PTR(BufferDataARB, PFNGLBUFFERDATAARBPROC); - DECLARE_GLFUNC_PTR(MapBufferARB, PFNGLMAPBUFFERARBPROC); - DECLARE_GLFUNC_PTR(UnmapBufferARB, PFNGLUNMAPBUFFERARBPROC); - DECLARE_GLFUNC_PTR(DeleteBuffersARB, PFNGLDELETEBUFFERSARBPROC); - DECLARE_GLFUNC_PTR(GetBufferParameterivARB, PFNGLGETBUFFERPARAMETERIVARBPROC); - - /* These are from GL_ARB_map_buffer_range, and are optional - * unless we're given Use_Map_Buffer_Range. Note that they do *not* - * have the standard "ARB" suffixes; this is because the extension - * was introduced *after* a superset was standardized in OpenGL 3.0. - * (The extension really only exists to allow the functionality on - * devices that cannot implement a full OpenGL 3.0 driver.) - */ - DECLARE_GLFUNC_PTR(FlushMappedBufferRange, PFNGLFLUSHMAPPEDBUFFERRANGEPROC); - DECLARE_GLFUNC_PTR(MapBufferRange, PFNGLMAPBUFFERRANGEPROC); - - /* This is from APPLE_flush_buffer_range, and is optional even if - * we're given Use_Map_Buffer_Range. Test it before using it. - */ - DECLARE_GLFUNC_PTR(BufferParameteriAPPLE, PFNGLBUFFERPARAMETERIAPPLEPROC); - - /* Make sure we have all the function pointers we need. */ - if (GenBuffersARB == NULL || - BindBufferARB == NULL || - BufferDataARB == NULL || - MapBufferARB == NULL || - UnmapBufferARB == NULL || - DeleteBuffersARB == NULL || - GetBufferParameterivARB == NULL) { - fprintf(stderr, "%s: missing basic MapBuffer functions\n", __FUNCTION__); - return GL_FALSE; - } - if (usage == Use_Map_Buffer_Range) { - if (FlushMappedBufferRange == NULL || MapBufferRange == NULL) { - fprintf(stderr, "%s: missing MapBufferRange functions\n", __FUNCTION__); - return GL_FALSE; - } - } - - /* Create and define a buffer */ - (*GenBuffersARB)(1, &bufferID); - (*BindBufferARB)(GL_ARRAY_BUFFER_ARB, bufferID); - (*BufferDataARB)(GL_ARRAY_BUFFER_ARB, BUFFER_DATA_SIZE, data, - GL_DYNAMIC_DRAW_ARB); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* If we're using MapBufferRange, and if the BufferParameteriAPPLE - * function is present, use it before mapping. This particular - * use is a no-op, intended just to exercise the entry point. - */ - if (usage == Use_Map_Buffer_Range && BufferParameteriAPPLE != NULL) { - (*BufferParameteriAPPLE)(GL_ARRAY_BUFFER_ARB, - GL_BUFFER_SERIALIZED_MODIFY_APPLE, GL_TRUE); - } - - /* Map it, and make sure it's mapped. */ - switch(usage) { - case Use_Map_Buffer: - dataPtr = (float *) (*MapBufferARB)( - GL_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB); - break; - case Use_Map_Buffer_Range: - dataPtr = (float *)(*MapBufferRange)(GL_ARRAY_BUFFER_ARB, - 4, 16, GL_MAP_WRITE_BIT | GL_MAP_FLUSH_EXPLICIT_BIT); - break; - } - if (dataPtr == NULL) { - fprintf(stderr, "%s: %s returned NULL\n", __FUNCTION__, - usage == Use_Map_Buffer ? "MapBuffer" : "MapBufferRange"); - (*BindBufferARB)(GL_ARRAY_BUFFER_ARB, 0); - (*DeleteBuffersARB)(1, &bufferID); - return GL_FALSE; - } - (*GetBufferParameterivARB)(GL_ARRAY_BUFFER_ARB, GL_BUFFER_MAPPED_ARB, - &bufferMapped); - if (!bufferMapped) { - fprintf(stderr, "%s: buffer should be mapped but isn't\n", __FUNCTION__); - (*BindBufferARB)(GL_ARRAY_BUFFER_ARB, 0); - (*DeleteBuffersARB)(1, &bufferID); - return GL_FALSE; - } - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* Write something to it, just to make sure we don't segfault. */ - *dataPtr = 1.5; - - /* Unmap to show we're finished with the buffer. Note that if we're - * using MapBufferRange, we first have to flush the range we modified. - */ - if (usage == Use_Map_Buffer_Range) { - (*FlushMappedBufferRange)(GL_ARRAY_BUFFER_ARB, 4, 16); - } - if (!(*UnmapBufferARB)(GL_ARRAY_BUFFER_ARB)) { - fprintf(stderr, "%s: UnmapBuffer failed\n", __FUNCTION__); - (*BindBufferARB)(GL_ARRAY_BUFFER_ARB, 0); - (*DeleteBuffersARB)(1, &bufferID); - return GL_FALSE; - } - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* All done. */ - (*BindBufferARB)(GL_ARRAY_BUFFER_ARB, 0); - (*DeleteBuffersARB)(1, &bufferID); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - return GL_TRUE; - -#undef BUFFER_DATA_SIZE -} - -/************************************************************************** - * Exercises for occlusion query - */ -static GLboolean -exercise_occlusion_query(void) -{ - GLuint queryObject; - GLint queryReady; - GLuint querySampleCount; - GLint queryCurrent; - GLint queryCounterBits; - - /* Get the function pointers we need. These are from - * GL_ARB_vertex_buffer_object and are required in all - * cases. - */ - DECLARE_GLFUNC_PTR(GenQueriesARB, PFNGLGENQUERIESARBPROC); - DECLARE_GLFUNC_PTR(BeginQueryARB, PFNGLBEGINQUERYARBPROC); - DECLARE_GLFUNC_PTR(GetQueryivARB, PFNGLGETQUERYIVARBPROC); - DECLARE_GLFUNC_PTR(EndQueryARB, PFNGLENDQUERYARBPROC); - DECLARE_GLFUNC_PTR(IsQueryARB, PFNGLISQUERYARBPROC); - DECLARE_GLFUNC_PTR(GetQueryObjectivARB, PFNGLGETQUERYOBJECTIVARBPROC); - DECLARE_GLFUNC_PTR(GetQueryObjectuivARB, PFNGLGETQUERYOBJECTUIVARBPROC); - DECLARE_GLFUNC_PTR(DeleteQueriesARB, PFNGLDELETEQUERIESARBPROC); - - /* Make sure we have all the function pointers we need. */ - if (GenQueriesARB == NULL || - BeginQueryARB == NULL || - GetQueryivARB == NULL || - EndQueryARB == NULL || - IsQueryARB == NULL || - GetQueryObjectivARB == NULL || - GetQueryObjectuivARB == NULL || - DeleteQueriesARB == NULL) { - fprintf(stderr, "%s: don't have all the Query functions\n", __FUNCTION__); - return GL_FALSE; - } - - /* Create a query object, and start a query. */ - (*GenQueriesARB)(1, &queryObject); - (*BeginQueryARB)(GL_SAMPLES_PASSED_ARB, queryObject); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* While we're in the query, check the functions that are supposed - * to return which query we're in and how many bits of resolution - * we get. - */ - (*GetQueryivARB)(GL_SAMPLES_PASSED_ARB, GL_CURRENT_QUERY_ARB, &queryCurrent); - if (queryCurrent != queryObject) { - fprintf(stderr, "%s: current query 0x%x != set query 0x%x\n", - __FUNCTION__, queryCurrent, queryObject); - (*EndQueryARB)(GL_SAMPLES_PASSED_ARB); - (*DeleteQueriesARB)(1, &queryObject); - return GL_FALSE; - } - (*GetQueryivARB)(GL_SAMPLES_PASSED_ARB, GL_QUERY_COUNTER_BITS_ARB, - &queryCounterBits); - if (queryCounterBits < 1) { - fprintf(stderr, "%s: query counter bits is too small (%d)\n", - __FUNCTION__, queryCounterBits); - (*EndQueryARB)(GL_SAMPLES_PASSED_ARB); - (*DeleteQueriesARB)(1, &queryObject); - return GL_FALSE; - } - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* Finish up the query. Since we didn't draw anything, the result - * should be 0 passed samples. - */ - (*EndQueryARB)(GL_SAMPLES_PASSED_ARB); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* Routine existence test */ - if (!(*IsQueryARB)(queryObject)) { - fprintf(stderr, "%s: query object 0x%x fails existence test\n", - __FUNCTION__, queryObject); - (*DeleteQueriesARB)(1, &queryObject); - return GL_FALSE; - } - - /* Loop until the query is ready, then get back the result. We use - * the signed query for the boolean value of whether the result is - * available, but the unsigned query to actually pull the result; - * this is just to test both entrypoints, but in a real query you may - * need the extra bit of resolution. - */ - queryReady = GL_FALSE; - do { - (*GetQueryObjectivARB)(queryObject, GL_QUERY_RESULT_AVAILABLE_ARB, - &queryReady); - } while (!queryReady); - (*GetQueryObjectuivARB)(queryObject, GL_QUERY_RESULT_ARB, &querySampleCount); - (*DeleteQueriesARB)(1, &queryObject); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* If sample count isn't 0, something's funny. */ - if (querySampleCount > 0) { - fprintf(stderr, "%s: expected query result of 0, got %ud\n", - __FUNCTION__, querySampleCount); - return GL_FALSE; - } - - /* Here, all is well. */ - return GL_TRUE; -} - -/************************************************************************** - * The following functions are used to check that the named OpenGL function - * actually does what it's supposed to do. - * The naming of these functions is significant. The getprocaddress.py script - * scans this file and extracts these function names. - */ - -static GLboolean -test_WeightPointerARB(generic_func func) -{ - /* Assume we have at least 2 vertex units (or this extension makes - * no sense), and establish a set of 2-element vector weights. - * We use floats that can be represented exactly in binary - * floating point formats so we can compare correctly later. - * We also make sure the 0th entry matches the default weights, - * so we can restore the default easily. - */ -#define USE_VERTEX_UNITS 2 -#define USE_WEIGHT_INDEX 3 - static GLfloat weights[] = { - 1.0, 0.0, - 0.875, 0.125, - 0.75, 0.25, - 0.625, 0.375, - 0.5, 0.5, - 0.375, 0.625, - 0.25, 0.75, - 0.125, 0.875, - 0.0, 1.0, - }; - GLint numVertexUnits; - GLfloat *currentWeights; - int i; - int errorCount = 0; - - PFNGLWEIGHTPOINTERARBPROC WeightPointerARB = (PFNGLWEIGHTPOINTERARBPROC) func; - - /* Make sure we have at least two vertex units */ - glGetIntegerv(GL_MAX_VERTEX_UNITS_ARB, &numVertexUnits); - if (numVertexUnits < USE_VERTEX_UNITS) { - fprintf(stderr, "%s: need %d vertex units, got %d\n", - __FUNCTION__, USE_VERTEX_UNITS, numVertexUnits); - return GL_FALSE; - } - - /* Make sure we allocate enough room to query all the current weights */ - currentWeights = (GLfloat *)malloc(numVertexUnits * sizeof(GLfloat)); - if (currentWeights == NULL) { - fprintf(stderr, "%s: couldn't allocate room for %d floats\n", - __FUNCTION__, numVertexUnits); - return GL_FALSE; - } - - /* Set up the pointer, enable the state, and try to send down a - * weight vector (we'll arbitrarily send index 2). - */ - (*WeightPointerARB)(USE_VERTEX_UNITS, GL_FLOAT, 0, weights); - glEnableClientState(GL_WEIGHT_ARRAY_ARB); - glArrayElement(USE_WEIGHT_INDEX); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* Verify that it changed the current state. */ - glGetFloatv(GL_CURRENT_WEIGHT_ARB, currentWeights); - for (i = 0; i < numVertexUnits; i++) { - if (i < USE_VERTEX_UNITS) { - /* This is one of the units we explicitly set. */ - if (currentWeights[i] != weights[USE_VERTEX_UNITS*USE_WEIGHT_INDEX + i]) { - fprintf(stderr, "%s: current weight at index %d is %f, should be %f\n", - __FUNCTION__, i, currentWeights[i], - weights[USE_VERTEX_UNITS*USE_WEIGHT_INDEX + i]); - errorCount++; - } - } - else { - /* All other weights should be 0. */ - if (currentWeights[i] != 0.0) { - fprintf(stderr, "%s: current weight at index %d is %f, should be %f\n", - __FUNCTION__, i, 0.0, - weights[USE_VERTEX_UNITS*USE_WEIGHT_INDEX + i]); - errorCount++; - } - } - } - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* Restore the old state. We know the default set of weights is in - * index 0. - */ - glArrayElement(0); - glDisableClientState(GL_WEIGHT_ARRAY_ARB); - (*WeightPointerARB)(0, GL_FLOAT, 0, NULL); - free(currentWeights); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* We're fine if we didn't get any mismatches. */ - if (errorCount == 0) { - return GL_TRUE; - } - else { - return GL_FALSE; - } -} - -/* Wrappers on the exercise_occlusion_query function */ -static GLboolean -test_GenQueriesARB(generic_func func) -{ - (void) func; - return exercise_occlusion_query(); -} -static GLboolean -test_BeginQueryARB(generic_func func) -{ - (void) func; - return exercise_occlusion_query(); -} -static GLboolean -test_GetQueryivARB(generic_func func) -{ - (void) func; - return exercise_occlusion_query(); -} -static GLboolean -test_EndQueryARB(generic_func func) -{ - (void) func; - return exercise_occlusion_query(); -} -static GLboolean -test_IsQueryARB(generic_func func) -{ - (void) func; - return exercise_occlusion_query(); -} -static GLboolean -test_GetQueryObjectivARB(generic_func func) -{ - (void) func; - return exercise_occlusion_query(); -} -static GLboolean -test_GetQueryObjectuivARB(generic_func func) -{ - (void) func; - return exercise_occlusion_query(); -} -static GLboolean -test_DeleteQueriesARB(generic_func func) -{ - (void) func; - return exercise_occlusion_query(); -} - -/* Wrappers on the exercise_buffer_objects() function */ -static GLboolean -test_GenBuffersARB(generic_func func) -{ - (void) func; - return exercise_buffer_objects(Use_Map_Buffer); -} -static GLboolean -test_BindBufferARB(generic_func func) -{ - (void) func; - return exercise_buffer_objects(Use_Map_Buffer); -} -static GLboolean -test_BufferDataARB(generic_func func) -{ - (void) func; - return exercise_buffer_objects(Use_Map_Buffer); -} -static GLboolean -test_MapBufferARB(generic_func func) -{ - (void) func; - return exercise_buffer_objects(Use_Map_Buffer); -} -static GLboolean -test_UnmapBufferARB(generic_func func) -{ - (void) func; - return exercise_buffer_objects(Use_Map_Buffer); -} -static GLboolean -test_DeleteBuffersARB(generic_func func) -{ - (void) func; - return exercise_buffer_objects(Use_Map_Buffer); -} -static GLboolean -test_GetBufferParameterivARB(generic_func func) -{ - (void) func; - return exercise_buffer_objects(Use_Map_Buffer); -} -static GLboolean -test_FlushMappedBufferRange(generic_func func) -{ - (void) func; - return exercise_buffer_objects(Use_Map_Buffer_Range); -} -static GLboolean -test_MapBufferRange(generic_func func) -{ - (void) func; - return exercise_buffer_objects(Use_Map_Buffer_Range); -} -static GLboolean -test_BufferParameteriAPPLE(generic_func func) -{ - (void) func; - return exercise_buffer_objects(Use_Map_Buffer_Range); -} - -/* Wrappers on the exercise_framebuffer() function */ -static GLboolean -test_BindFramebufferEXT(generic_func func) -{ - (void) func; - return exercise_framebuffer(); -} -static GLboolean -test_BindRenderbufferEXT(generic_func func) -{ - (void) func; - return exercise_framebuffer(); -} -static GLboolean -test_CheckFramebufferStatusEXT(generic_func func) -{ - (void) func; - return exercise_framebuffer(); -} -static GLboolean -test_DeleteFramebuffersEXT(generic_func func) -{ - (void) func; - return exercise_framebuffer(); -} -static GLboolean -test_DeleteRenderbuffersEXT(generic_func func) -{ - (void) func; - return exercise_framebuffer(); -} -static GLboolean -test_FramebufferRenderbufferEXT(generic_func func) -{ - (void) func; - return exercise_framebuffer(); -} -static GLboolean -test_GenFramebuffersEXT(generic_func func) -{ - (void) func; - return exercise_framebuffer(); -} -static GLboolean -test_GenRenderbuffersEXT(generic_func func) -{ - (void) func; - return exercise_framebuffer(); -} -static GLboolean -test_IsFramebufferEXT(generic_func func) -{ - (void) func; - return exercise_framebuffer(); -} -static GLboolean -test_IsRenderbufferEXT(generic_func func) -{ - (void) func; - return exercise_framebuffer(); -} -static GLboolean -test_RenderbufferStorageEXT(generic_func func) -{ - (void) func; - return exercise_framebuffer(); -} -static GLboolean -test_BlitFramebufferEXT(generic_func func) -{ - (void) func; - return exercise_framebuffer(); -} - -/* These are wrappers on the exercise_CompressedTextures function. - * Unfortunately, we cannot test the 1D counterparts, because the - * texture compressions available all support 2D and higher only. - */ -static GLboolean -test_CompressedTexImage2DARB(generic_func func) -{ - (void) func; - return exercise_CompressedTextures(GL_TEXTURE_2D); -} -static GLboolean -test_CompressedTexSubImage2DARB(generic_func func) -{ - (void) func; - return exercise_CompressedTextures(GL_TEXTURE_2D); -} -static GLboolean -test_CompressedTexImage3DARB(generic_func func) -{ - (void) func; - return exercise_CompressedTextures(GL_TEXTURE_3D); -} -static GLboolean -test_CompressedTexSubImage3DARB(generic_func func) -{ - (void) func; - return exercise_CompressedTextures(GL_TEXTURE_3D); -} -static GLboolean -test_GetCompressedTexImageARB(generic_func func) -{ - (void) func; - return exercise_CompressedTextures(GL_TEXTURE_3D); -} - -/* Wrappers on exercise_fences(). */ -static GLboolean -test_DeleteFencesNV(generic_func func) -{ - (void) func; - return exercise_fences(); -} -static GLboolean -test_GenFencesNV(generic_func func) -{ - (void) func; - return exercise_fences(); -} -static GLboolean -test_SetFenceNV(generic_func func) -{ - (void) func; - return exercise_fences(); -} -static GLboolean -test_TestFenceNV(generic_func func) -{ - (void) func; - return exercise_fences(); -} -static GLboolean -test_FinishFenceNV(generic_func func) -{ - (void) func; - return exercise_fences(); -} -static GLboolean -test_GetFenceivNV(generic_func func) -{ - (void) func; - return exercise_fences(); -} -static GLboolean -test_IsFenceNV(generic_func func) -{ - (void) func; - return exercise_fences(); -} - -/* A bunch of glUniform*() tests */ -static GLboolean -test_Uniform1iv(generic_func func) -{ - PFNGLUNIFORM1IVARBPROC Uniform1ivARB = (PFNGLUNIFORM1IVARBPROC) func; - DECLARE_GLFUNC_PTR(GetUniformivARB, PFNGLGETUNIFORMIVARBPROC); - - /* This is a trivial fragment shader that sets the color of the - * fragment to the uniform value passed in. - */ - static const char *fragmentShaderText = - "uniform int uniformColor;" - "void main() {gl_FragColor.r = uniformColor;}"; - static const char *uniformName = "uniformColor"; - - GLhandleARB program; - GLint uniformLocation; - const GLint uniform[1] = {1}; - GLint queriedUniform[1]; - - if (GetUniformivARB == NULL) { - return GL_FALSE; - } - - /* Call a helper function to compile up the shader and give - * us back the validated program and uniform location. - * If it fails, something's wrong and we can't continue. - */ - if (!exercise_uniform_start(fragmentShaderText, uniformName, - &program, &uniformLocation)) { - return GL_FALSE; - } - - /* Set the value of the program uniform. Note that you must - * use a compatible type. Our uniform above is an integer - * so we must set it using integer versions - * of the Uniform* functions. The "1" means we're setting - * one vector's worth of information. - */ - (*Uniform1ivARB)(uniformLocation, 1, uniform); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* Query it back */ - (*GetUniformivARB)(program, uniformLocation, queriedUniform); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* Clean up before we check to see whether it came back unscathed */ - exercise_uniform_end(program); - - /* Now check to see whether the uniform came back as expected. This - * will return GL_TRUE if all is well, or GL_FALSE if the comparison failed. - */ - return compare_ints(__FUNCTION__, 1, uniform, 1, queriedUniform); -} - -static GLboolean -test_Uniform1i(generic_func func) -{ - PFNGLUNIFORM1IARBPROC Uniform1iARB = (PFNGLUNIFORM1IARBPROC) func; - DECLARE_GLFUNC_PTR(GetUniformivARB, PFNGLGETUNIFORMIVARBPROC); - - /* This is a trivial fragment shader that sets the color of the - * fragment to the uniform value passed in. - */ - static const char *fragmentShaderText = - "uniform int uniformColor;" - "void main() {gl_FragColor.r = uniformColor;}"; - static const char *uniformName = "uniformColor"; - - GLhandleARB program; - GLint uniformLocation; - const GLint uniform[1] = {1}; - GLint queriedUniform[4]; - - if (GetUniformivARB == NULL) { - return GL_FALSE; - } - - /* Call a helper function to compile up the shader and give - * us back the validated program and uniform location. - * If it fails, something's wrong and we can't continue. - */ - if (!exercise_uniform_start(fragmentShaderText, uniformName, - &program, &uniformLocation)) { - return GL_FALSE; - } - - /* Set the value of the program uniform. Note that you must - * use a compatible type. Our uniform above is an integer - * so we must set it using integer versions - * of the Uniform* functions. - */ - (*Uniform1iARB)(uniformLocation, uniform[0]); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* Query it back */ - (*GetUniformivARB)(program, uniformLocation, queriedUniform); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* Clean up before we check to see whether it came back unscathed */ - exercise_uniform_end(program); - - /* Now check to see whether the uniform came back as expected. This - * will return GL_TRUE if all is well, or GL_FALSE if the comparison failed. - */ - return compare_ints(__FUNCTION__, 1, uniform, 1, queriedUniform); -} - -static GLboolean -test_Uniform1fv(generic_func func) -{ - PFNGLUNIFORM1FVARBPROC Uniform1fvARB = (PFNGLUNIFORM1FVARBPROC) func; - DECLARE_GLFUNC_PTR(GetUniformfvARB, PFNGLGETUNIFORMFVARBPROC); - - /* This is a trivial fragment shader that sets the color of the - * fragment to the uniform value passed in. - */ - static const char *fragmentShaderText = - "uniform float uniformColor;" - "void main() {gl_FragColor.r = uniformColor;}"; - static const char *uniformName = "uniformColor"; - - GLhandleARB program; - GLint uniformLocation; - const GLfloat uniform[1] = {1.1}; - GLfloat queriedUniform[1]; - - if (GetUniformfvARB == NULL) { - return GL_FALSE; - } - - /* Call a helper function to compile up the shader and give - * us back the validated program and uniform location. - * If it fails, something's wrong and we can't continue. - */ - if (!exercise_uniform_start(fragmentShaderText, uniformName, - &program, &uniformLocation)) { - return GL_FALSE; - } - - /* Set the value of the program uniform. Note that you must - * use a compatible type. Our uniform above is a float - * so we must set it using float versions - * of the Uniform* functions. The "1" means we're setting - * one vector's worth of information. - */ - (*Uniform1fvARB)(uniformLocation, 1, uniform); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* Query it back */ - (*GetUniformfvARB)(program, uniformLocation, queriedUniform); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* Clean up before we check to see whether it came back unscathed */ - exercise_uniform_end(program); - - /* Now check to see whether the uniform came back as expected. This - * will return GL_TRUE if all is well, or GL_FALSE if the comparison failed. - */ - return compare_floats(__FUNCTION__, 1, uniform, 1, queriedUniform); -} - -static GLboolean -test_Uniform1f(generic_func func) -{ - PFNGLUNIFORM1FARBPROC Uniform1fARB = (PFNGLUNIFORM1FARBPROC) func; - DECLARE_GLFUNC_PTR(GetUniformfvARB, PFNGLGETUNIFORMFVARBPROC); - - /* This is a trivial fragment shader that sets the color of the - * fragment to the uniform value passed in. - */ - static const char *fragmentShaderText = - "uniform float uniformColor;" - "void main() {gl_FragColor.r = uniformColor;}"; - static const char *uniformName = "uniformColor"; - - GLhandleARB program; - GLint uniformLocation; - const GLfloat uniform[1] = {1.1}; - GLfloat queriedUniform[1]; - - if (GetUniformfvARB == NULL) { - return GL_FALSE; - } - - /* Call a helper function to compile up the shader and give - * us back the validated program and uniform location. - * If it fails, something's wrong and we can't continue. - */ - if (!exercise_uniform_start(fragmentShaderText, uniformName, - &program, &uniformLocation)) { - return GL_FALSE; - } - - /* Set the value of the program uniform. Note that you must - * use a compatible type. Our uniform above is a float - * so we must set it using float versions - * of the Uniform* functions. - */ - (*Uniform1fARB)(uniformLocation, uniform[0]); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* Query it back */ - (*GetUniformfvARB)(program, uniformLocation, queriedUniform); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* Clean up before we check to see whether it came back unscathed */ - exercise_uniform_end(program); - - /* Now check to see whether the uniform came back as expected. This - * will return GL_TRUE if all is well, or GL_FALSE if the comparison failed. - */ - return compare_floats(__FUNCTION__, 1, uniform, 1, queriedUniform); -} - -static GLboolean -test_Uniform2iv(generic_func func) -{ - PFNGLUNIFORM2IVARBPROC Uniform2ivARB = (PFNGLUNIFORM2IVARBPROC) func; - DECLARE_GLFUNC_PTR(GetUniformivARB, PFNGLGETUNIFORMIVARBPROC); - - /* This is a trivial fragment shader that sets the color of the - * fragment to the uniform value passed in. - */ - static const char *fragmentShaderText = - "uniform ivec2 uniformColor;" - "void main() {gl_FragColor.rg = uniformColor;}"; - static const char *uniformName = "uniformColor"; - - GLhandleARB program; - GLint uniformLocation; - const GLint uniform[2] = {1,2}; - GLint queriedUniform[2]; - - if (GetUniformivARB == NULL) { - return GL_FALSE; - } - - /* Call a helper function to compile up the shader and give - * us back the validated program and uniform location. - * If it fails, something's wrong and we can't continue. - */ - if (!exercise_uniform_start(fragmentShaderText, uniformName, - &program, &uniformLocation)) { - return GL_FALSE; - } - - /* Set the value of the program uniform. Note that you must - * use a compatible type. Our uniform above is an integer - * vector 2 (ivec2), so we must set it using integer versions - * of the Uniform* functions. The "1" means we're setting - * one vector's worth of information. - */ - (*Uniform2ivARB)(uniformLocation, 1, uniform); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* Query it back */ - (*GetUniformivARB)(program, uniformLocation, queriedUniform); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* Clean up before we check to see whether it came back unscathed */ - exercise_uniform_end(program); - - /* Now check to see whether the uniform came back as expected. This - * will return GL_TRUE if all is well, or GL_FALSE if the comparison failed. - */ - return compare_ints(__FUNCTION__, 2, uniform, 2, queriedUniform); -} - -static GLboolean -test_Uniform2i(generic_func func) -{ - PFNGLUNIFORM2IARBPROC Uniform2iARB = (PFNGLUNIFORM2IARBPROC) func; - DECLARE_GLFUNC_PTR(GetUniformivARB, PFNGLGETUNIFORMIVARBPROC); - - /* This is a trivial fragment shader that sets the color of the - * fragment to the uniform value passed in. - */ - static const char *fragmentShaderText = - "uniform ivec2 uniformColor;" - "void main() {gl_FragColor.rg = uniformColor;}"; - static const char *uniformName = "uniformColor"; - - GLhandleARB program; - GLint uniformLocation; - const GLint uniform[2] = {1,2}; - GLint queriedUniform[4]; - - if (GetUniformivARB == NULL) { - return GL_FALSE; - } - - /* Call a helper function to compile up the shader and give - * us back the validated program and uniform location. - * If it fails, something's wrong and we can't continue. - */ - if (!exercise_uniform_start(fragmentShaderText, uniformName, - &program, &uniformLocation)) { - return GL_FALSE; - } - - /* Set the value of the program uniform. Note that you must - * use a compatible type. Our uniform above is an integer - * vector 2 (ivec2), so we must set it using integer versions - * of the Uniform* functions. - */ - (*Uniform2iARB)(uniformLocation, uniform[0], uniform[1]); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* Query it back */ - (*GetUniformivARB)(program, uniformLocation, queriedUniform); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* Clean up before we check to see whether it came back unscathed */ - exercise_uniform_end(program); - - /* Now check to see whether the uniform came back as expected. This - * will return GL_TRUE if all is well, or GL_FALSE if the comparison failed. - */ - return compare_ints(__FUNCTION__, 2, uniform, 2, queriedUniform); -} - -static GLboolean -test_Uniform2fv(generic_func func) -{ - PFNGLUNIFORM2FVARBPROC Uniform2fvARB = (PFNGLUNIFORM2FVARBPROC) func; - DECLARE_GLFUNC_PTR(GetUniformfvARB, PFNGLGETUNIFORMFVARBPROC); - - /* This is a trivial fragment shader that sets the color of the - * fragment to the uniform value passed in. - */ - static const char *fragmentShaderText = - "uniform vec2 uniformColor;" - "void main() {gl_FragColor.rg = uniformColor;}"; - static const char *uniformName = "uniformColor"; - - GLhandleARB program; - GLint uniformLocation; - const GLfloat uniform[2] = {1.1,2.2}; - GLfloat queriedUniform[2]; - - if (GetUniformfvARB == NULL) { - return GL_FALSE; - } - - /* Call a helper function to compile up the shader and give - * us back the validated program and uniform location. - * If it fails, something's wrong and we can't continue. - */ - if (!exercise_uniform_start(fragmentShaderText, uniformName, - &program, &uniformLocation)) { - return GL_FALSE; - } - - /* Set the value of the program uniform. Note that you must - * use a compatible type. Our uniform above is a float - * vector 2 (vec2), so we must set it using float versions - * of the Uniform* functions. The "1" means we're setting - * one vector's worth of information. - */ - (*Uniform2fvARB)(uniformLocation, 1, uniform); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* Query it back */ - (*GetUniformfvARB)(program, uniformLocation, queriedUniform); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* Clean up before we check to see whether it came back unscathed */ - exercise_uniform_end(program); - - /* Now check to see whether the uniform came back as expected. This - * will return GL_TRUE if all is well, or GL_FALSE if the comparison failed. - */ - return compare_floats(__FUNCTION__, 2, uniform, 2, queriedUniform); -} - -static GLboolean -test_Uniform2f(generic_func func) -{ - PFNGLUNIFORM2FARBPROC Uniform2fARB = (PFNGLUNIFORM2FARBPROC) func; - DECLARE_GLFUNC_PTR(GetUniformfvARB, PFNGLGETUNIFORMFVARBPROC); - - /* This is a trivial fragment shader that sets the color of the - * fragment to the uniform value passed in. - */ - static const char *fragmentShaderText = - "uniform vec2 uniformColor;" - "void main() {gl_FragColor.rg = uniformColor;}"; - static const char *uniformName = "uniformColor"; - - GLhandleARB program; - GLint uniformLocation; - const GLfloat uniform[2] = {1.1,2.2}; - GLfloat queriedUniform[2]; - - if (GetUniformfvARB == NULL) { - return GL_FALSE; - } - - /* Call a helper function to compile up the shader and give - * us back the validated program and uniform location. - * If it fails, something's wrong and we can't continue. - */ - if (!exercise_uniform_start(fragmentShaderText, uniformName, - &program, &uniformLocation)) { - return GL_FALSE; - } - - /* Set the value of the program uniform. Note that you must - * use a compatible type. Our uniform above is a float - * vector 2 (vec2), so we must set it using float versions - * of the Uniform* functions. - */ - (*Uniform2fARB)(uniformLocation, uniform[0], uniform[1]); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* Query it back */ - (*GetUniformfvARB)(program, uniformLocation, queriedUniform); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* Clean up before we check to see whether it came back unscathed */ - exercise_uniform_end(program); - - /* Now check to see whether the uniform came back as expected. This - * will return GL_TRUE if all is well, or GL_FALSE if the comparison failed. - */ - return compare_floats(__FUNCTION__, 2, uniform, 2, queriedUniform); -} - -static GLboolean -test_Uniform3iv(generic_func func) -{ - PFNGLUNIFORM3IVARBPROC Uniform3ivARB = (PFNGLUNIFORM3IVARBPROC) func; - DECLARE_GLFUNC_PTR(GetUniformivARB, PFNGLGETUNIFORMIVARBPROC); - - /* This is a trivial fragment shader that sets the color of the - * fragment to the uniform value passed in. - */ - static const char *fragmentShaderText = - "uniform ivec3 uniformColor;" - "void main() {gl_FragColor.rgb = uniformColor;}"; - static const char *uniformName = "uniformColor"; - - GLhandleARB program; - GLint uniformLocation; - const GLint uniform[3] = {1,2,3}; - GLint queriedUniform[3]; - - if (GetUniformivARB == NULL) { - return GL_FALSE; - } - - /* Call a helper function to compile up the shader and give - * us back the validated program and uniform location. - * If it fails, something's wrong and we can't continue. - */ - if (!exercise_uniform_start(fragmentShaderText, uniformName, - &program, &uniformLocation)) { - return GL_FALSE; - } - - /* Set the value of the program uniform. Note that you must - * use a compatible type. Our uniform above is an integer - * vector 3 (ivec3), so we must set it using integer versions - * of the Uniform* functions. The "1" means we're setting - * one vector's worth of information. - */ - (*Uniform3ivARB)(uniformLocation, 1, uniform); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* Query it back */ - (*GetUniformivARB)(program, uniformLocation, queriedUniform); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* Clean up before we check to see whether it came back unscathed */ - exercise_uniform_end(program); - - /* Now check to see whether the uniform came back as expected. This - * will return GL_TRUE if all is well, or GL_FALSE if the comparison failed. - */ - return compare_ints(__FUNCTION__, 3, uniform, 3, queriedUniform); -} - -static GLboolean -test_Uniform3i(generic_func func) -{ - PFNGLUNIFORM3IARBPROC Uniform3iARB = (PFNGLUNIFORM3IARBPROC) func; - DECLARE_GLFUNC_PTR(GetUniformivARB, PFNGLGETUNIFORMIVARBPROC); - - /* This is a trivial fragment shader that sets the color of the - * fragment to the uniform value passed in. - */ - static const char *fragmentShaderText = - "uniform ivec3 uniformColor;" - "void main() {gl_FragColor.rgb = uniformColor;}"; - static const char *uniformName = "uniformColor"; - - GLhandleARB program; - GLint uniformLocation; - const GLint uniform[3] = {1,2,3}; - GLint queriedUniform[4]; - - if (GetUniformivARB == NULL) { - return GL_FALSE; - } - - /* Call a helper function to compile up the shader and give - * us back the validated program and uniform location. - * If it fails, something's wrong and we can't continue. - */ - if (!exercise_uniform_start(fragmentShaderText, uniformName, - &program, &uniformLocation)) { - return GL_FALSE; - } - - /* Set the value of the program uniform. Note that you must - * use a compatible type. Our uniform above is an integer - * vector 3 (ivec3), so we must set it using integer versions - * of the Uniform* functions. - */ - (*Uniform3iARB)(uniformLocation, uniform[0], uniform[1], uniform[2]); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* Query it back */ - (*GetUniformivARB)(program, uniformLocation, queriedUniform); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* Clean up before we check to see whether it came back unscathed */ - exercise_uniform_end(program); - - /* Now check to see whether the uniform came back as expected. This - * will return GL_TRUE if all is well, or GL_FALSE if the comparison failed. - */ - return compare_ints(__FUNCTION__, 3, uniform, 3, queriedUniform); -} - -static GLboolean -test_Uniform3fv(generic_func func) -{ - PFNGLUNIFORM3FVARBPROC Uniform3fvARB = (PFNGLUNIFORM3FVARBPROC) func; - DECLARE_GLFUNC_PTR(GetUniformfvARB, PFNGLGETUNIFORMFVARBPROC); - - /* This is a trivial fragment shader that sets the color of the - * fragment to the uniform value passed in. - */ - static const char *fragmentShaderText = - "uniform vec3 uniformColor;" - "void main() {gl_FragColor.rgb = uniformColor;}"; - static const char *uniformName = "uniformColor"; - - GLhandleARB program; - GLint uniformLocation; - const GLfloat uniform[3] = {1.1,2.2,3.3}; - GLfloat queriedUniform[3]; - - if (GetUniformfvARB == NULL) { - return GL_FALSE; - } - - /* Call a helper function to compile up the shader and give - * us back the validated program and uniform location. - * If it fails, something's wrong and we can't continue. - */ - if (!exercise_uniform_start(fragmentShaderText, uniformName, - &program, &uniformLocation)) { - return GL_FALSE; - } - - /* Set the value of the program uniform. Note that you must - * use a compatible type. Our uniform above is a float - * vector 3 (vec3), so we must set it using float versions - * of the Uniform* functions. The "1" means we're setting - * one vector's worth of information. - */ - (*Uniform3fvARB)(uniformLocation, 1, uniform); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* Query it back */ - (*GetUniformfvARB)(program, uniformLocation, queriedUniform); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* Clean up before we check to see whether it came back unscathed */ - exercise_uniform_end(program); - - /* Now check to see whether the uniform came back as expected. This - * will return GL_TRUE if all is well, or GL_FALSE if the comparison failed. - */ - return compare_floats(__FUNCTION__, 3, uniform, 3, queriedUniform); -} - -static GLboolean -test_Uniform3f(generic_func func) -{ - PFNGLUNIFORM3FARBPROC Uniform3fARB = (PFNGLUNIFORM3FARBPROC) func; - DECLARE_GLFUNC_PTR(GetUniformfvARB, PFNGLGETUNIFORMFVARBPROC); - - /* This is a trivial fragment shader that sets the color of the - * fragment to the uniform value passed in. - */ - static const char *fragmentShaderText = - "uniform vec3 uniformColor;" - "void main() {gl_FragColor.rgb = uniformColor;}"; - static const char *uniformName = "uniformColor"; - - GLhandleARB program; - GLint uniformLocation; - const GLfloat uniform[3] = {1.1,2.2,3.3}; - GLfloat queriedUniform[3]; - - if (GetUniformfvARB == NULL) { - return GL_FALSE; - } - - /* Call a helper function to compile up the shader and give - * us back the validated program and uniform location. - * If it fails, something's wrong and we can't continue. - */ - if (!exercise_uniform_start(fragmentShaderText, uniformName, - &program, &uniformLocation)) { - return GL_FALSE; - } - - /* Set the value of the program uniform. Note that you must - * use a compatible type. Our uniform above is a float - * vector 3 (vec3), so we must set it using float versions - * of the Uniform* functions. - */ - (*Uniform3fARB)(uniformLocation, uniform[0], uniform[1], uniform[2]); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* Query it back */ - (*GetUniformfvARB)(program, uniformLocation, queriedUniform); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* Clean up before we check to see whether it came back unscathed */ - exercise_uniform_end(program); - - /* Now check to see whether the uniform came back as expected. This - * will return GL_TRUE if all is well, or GL_FALSE if the comparison failed. - */ - return compare_floats(__FUNCTION__, 3, uniform, 3, queriedUniform); -} - -static GLboolean -test_Uniform4iv(generic_func func) -{ - PFNGLUNIFORM4IVARBPROC Uniform4ivARB = (PFNGLUNIFORM4IVARBPROC) func; - DECLARE_GLFUNC_PTR(GetUniformivARB, PFNGLGETUNIFORMIVARBPROC); - - /* This is a trivial fragment shader that sets the color of the - * fragment to the uniform value passed in. - */ - static const char *fragmentShaderText = - "uniform ivec4 uniformColor; void main() {gl_FragColor = uniformColor;}"; - static const char *uniformName = "uniformColor"; - - GLhandleARB program; - GLint uniformLocation; - const GLint uniform[4] = {1,2,3,4}; - GLint queriedUniform[4]; - - if (GetUniformivARB == NULL) { - return GL_FALSE; - } - - /* Call a helper function to compile up the shader and give - * us back the validated program and uniform location. - * If it fails, something's wrong and we can't continue. - */ - if (!exercise_uniform_start(fragmentShaderText, uniformName, - &program, &uniformLocation)) { - return GL_FALSE; - } - - /* Set the value of the program uniform. Note that you must - * use a compatible type. Our uniform above is an integer - * vector (ivec4), so we must set it using integer versions - * of the Uniform* functions. The "1" means we're setting - * one vector's worth of information. - */ - (*Uniform4ivARB)(uniformLocation, 1, uniform); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* Query it back */ - (*GetUniformivARB)(program, uniformLocation, queriedUniform); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* Clean up before we check to see whether it came back unscathed */ - exercise_uniform_end(program); - - /* Now check to see whether the uniform came back as expected. This - * will return GL_TRUE if all is well, or GL_FALSE if the comparison failed. - */ - return compare_ints(__FUNCTION__, 4, uniform, 4, queriedUniform); -} - -static GLboolean -test_Uniform4i(generic_func func) -{ - PFNGLUNIFORM4IARBPROC Uniform4iARB = (PFNGLUNIFORM4IARBPROC) func; - DECLARE_GLFUNC_PTR(GetUniformivARB, PFNGLGETUNIFORMIVARBPROC); - - /* This is a trivial fragment shader that sets the color of the - * fragment to the uniform value passed in. - */ - static const char *fragmentShaderText = - "uniform ivec4 uniformColor; void main() {gl_FragColor = uniformColor;}"; - static const char *uniformName = "uniformColor"; - - GLhandleARB program; - GLint uniformLocation; - const GLint uniform[4] = {1,2,3,4}; - GLint queriedUniform[4]; - - if (GetUniformivARB == NULL) { - return GL_FALSE; - } - - /* Call a helper function to compile up the shader and give - * us back the validated program and uniform location. - * If it fails, something's wrong and we can't continue. - */ - if (!exercise_uniform_start(fragmentShaderText, uniformName, - &program, &uniformLocation)) { - return GL_FALSE; - } - - /* Set the value of the program uniform. Note that you must - * use a compatible type. Our uniform above is an integer - * vector (ivec4), so we must set it using integer versions - * of the Uniform* functions. - */ - (*Uniform4iARB)(uniformLocation, uniform[0], uniform[1], uniform[2], - uniform[3]); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* Query it back */ - (*GetUniformivARB)(program, uniformLocation, queriedUniform); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* Clean up before we check to see whether it came back unscathed */ - exercise_uniform_end(program); - - /* Now check to see whether the uniform came back as expected. This - * will return GL_TRUE if all is well, or GL_FALSE if the comparison failed. - */ - return compare_ints(__FUNCTION__, 4, uniform, 4, queriedUniform); -} - -static GLboolean -test_Uniform4fv(generic_func func) -{ - PFNGLUNIFORM4FVARBPROC Uniform4fvARB = (PFNGLUNIFORM4FVARBPROC) func; - DECLARE_GLFUNC_PTR(GetUniformfvARB, PFNGLGETUNIFORMFVARBPROC); - - /* This is a trivial fragment shader that sets the color of the - * fragment to the uniform value passed in. - */ - static const char *fragmentShaderText = - "uniform vec4 uniformColor; void main() {gl_FragColor = uniformColor;}"; - static const char *uniformName = "uniformColor"; - - GLhandleARB program; - GLint uniformLocation; - const GLfloat uniform[4] = {1.1,2.2,3.3,4.4}; - GLfloat queriedUniform[4]; - - if (GetUniformfvARB == NULL) { - return GL_FALSE; - } - - /* Call a helper function to compile up the shader and give - * us back the validated program and uniform location. - * If it fails, something's wrong and we can't continue. - */ - if (!exercise_uniform_start(fragmentShaderText, uniformName, - &program, &uniformLocation)) { - return GL_FALSE; - } - - /* Set the value of the program uniform. Note that you must - * use a compatible type. Our uniform above is a float - * vector (vec4), so we must set it using float versions - * of the Uniform* functions. The "1" means we're setting - * one vector's worth of information. - */ - (*Uniform4fvARB)(uniformLocation, 1, uniform); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* Query it back */ - (*GetUniformfvARB)(program, uniformLocation, queriedUniform); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* Clean up before we check to see whether it came back unscathed */ - exercise_uniform_end(program); - - /* Now check to see whether the uniform came back as expected. This - * will return GL_TRUE if all is well, or GL_FALSE if the comparison failed. - */ - return compare_floats(__FUNCTION__, 4, uniform, 4, queriedUniform); -} - -static GLboolean -test_Uniform4f(generic_func func) -{ - PFNGLUNIFORM4FARBPROC Uniform4fARB = (PFNGLUNIFORM4FARBPROC) func; - DECLARE_GLFUNC_PTR(GetUniformfvARB, PFNGLGETUNIFORMFVARBPROC); - - /* This is a trivial fragment shader that sets the color of the - * fragment to the uniform value passed in. - */ - static const char *fragmentShaderText = - "uniform vec4 uniformColor; void main() {gl_FragColor = uniformColor;}"; - static const char *uniformName = "uniformColor"; - - GLhandleARB program; - GLint uniformLocation; - const GLfloat uniform[4] = {1.1,2.2,3.3,4.4}; - GLfloat queriedUniform[4]; - - if (GetUniformfvARB == NULL) { - return GL_FALSE; - } - - /* Call a helper function to compile up the shader and give - * us back the validated program and uniform location. - * If it fails, something's wrong and we can't continue. - */ - if (!exercise_uniform_start(fragmentShaderText, uniformName, - &program, &uniformLocation)) { - return GL_FALSE; - } - - /* Set the value of the program uniform. Note that you must - * use a compatible type. Our uniform above is an integer - * vector (ivec4), so we must set it using integer versions - * of the Uniform* functions. - */ - (*Uniform4fARB)(uniformLocation, uniform[0], uniform[1], uniform[2], - uniform[3]); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* Query it back */ - (*GetUniformfvARB)(program, uniformLocation, queriedUniform); - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - /* Clean up before we check to see whether it came back unscathed */ - exercise_uniform_end(program); - - /* Now check to see whether the uniform came back as expected. This - * will return GL_TRUE if all is well, or GL_FALSE if the comparison failed. - */ - return compare_floats(__FUNCTION__, 4, uniform, 4, queriedUniform); -} - -static GLboolean -test_ActiveTextureARB(generic_func func) -{ - PFNGLACTIVETEXTUREARBPROC activeTexture = (PFNGLACTIVETEXTUREARBPROC) func; - GLint t; - GLboolean pass; - (*activeTexture)(GL_TEXTURE1_ARB); - glGetIntegerv(GL_ACTIVE_TEXTURE_ARB, &t); - pass = (t == GL_TEXTURE1_ARB); - (*activeTexture)(GL_TEXTURE0_ARB); /* restore default */ - return pass; -} - - -static GLboolean -test_SecondaryColor3fEXT(generic_func func) -{ - PFNGLSECONDARYCOLOR3FEXTPROC secColor3f = (PFNGLSECONDARYCOLOR3FEXTPROC) func; - GLfloat color[4]; - GLboolean pass; - (*secColor3f)(1.0, 1.0, 0.0); - glGetFloatv(GL_CURRENT_SECONDARY_COLOR_EXT, color); - pass = (color[0] == 1.0 && color[1] == 1.0 && color[2] == 0.0); - (*secColor3f)(0.0, 0.0, 0.0); /* restore default */ - return pass; -} - - -static GLboolean -test_ActiveStencilFaceEXT(generic_func func) -{ - PFNGLACTIVESTENCILFACEEXTPROC activeFace = (PFNGLACTIVESTENCILFACEEXTPROC) func; - GLint face; - GLboolean pass; - (*activeFace)(GL_BACK); - glGetIntegerv(GL_ACTIVE_STENCIL_FACE_EXT, &face); - pass = (face == GL_BACK); - (*activeFace)(GL_FRONT); /* restore default */ - return pass; -} - - -static GLboolean -test_VertexAttrib1fvARB(generic_func func) -{ - PFNGLVERTEXATTRIB1FVARBPROC vertexAttrib1fvARB = (PFNGLVERTEXATTRIB1FVARBPROC) func; - PFNGLGETVERTEXATTRIBFVARBPROC getVertexAttribfvARB = (PFNGLGETVERTEXATTRIBFVARBPROC) glXGetProcAddressARB((const GLubyte *) "glGetVertexAttribfvARB"); - - const GLfloat v[1] = {25.0}; - const GLfloat def[1] = {0}; - GLfloat res[4]; - GLboolean pass; - (*vertexAttrib1fvARB)(6, v); - (*getVertexAttribfvARB)(6, GL_CURRENT_VERTEX_ATTRIB_ARB, res); - pass = (res[0] == 25.0 && res[1] == 0.0 && res[2] == 0.0 && res[3] == 1.0); - (*vertexAttrib1fvARB)(6, def); - return pass; -} - -static GLboolean -test_VertexAttrib1dvARB(generic_func func) -{ - PFNGLVERTEXATTRIB1DVARBPROC vertexAttrib1dvARB = (PFNGLVERTEXATTRIB1DVARBPROC) func; - PFNGLGETVERTEXATTRIBDVARBPROC getVertexAttribdvARB = (PFNGLGETVERTEXATTRIBDVARBPROC) glXGetProcAddressARB((const GLubyte *) "glGetVertexAttribdvARB"); - - const GLdouble v[1] = {25.0}; - const GLdouble def[1] = {0}; - GLdouble res[4]; - GLboolean pass; - (*vertexAttrib1dvARB)(6, v); - (*getVertexAttribdvARB)(6, GL_CURRENT_VERTEX_ATTRIB_ARB, res); - pass = (res[0] == 25.0 && res[1] == 0.0 && res[2] == 0.0 && res[3] == 1.0); - (*vertexAttrib1dvARB)(6, def); - return pass; -} - -static GLboolean -test_VertexAttrib1svARB(generic_func func) -{ - PFNGLVERTEXATTRIB1SVARBPROC vertexAttrib1svARB = (PFNGLVERTEXATTRIB1SVARBPROC) func; - PFNGLGETVERTEXATTRIBIVARBPROC getVertexAttribivARB = (PFNGLGETVERTEXATTRIBIVARBPROC) glXGetProcAddressARB((const GLubyte *) "glGetVertexAttribivARB"); - - const GLshort v[1] = {25.0}; - const GLshort def[1] = {0}; - GLint res[4]; - GLboolean pass; - (*vertexAttrib1svARB)(6, v); - (*getVertexAttribivARB)(6, GL_CURRENT_VERTEX_ATTRIB_ARB, res); - pass = (res[0] == 25 && res[1] == 0 && res[2] == 0 && res[3] == 1); - (*vertexAttrib1svARB)(6, def); - return pass; -} - -static GLboolean -test_VertexAttrib4NubvARB(generic_func func) -{ - PFNGLVERTEXATTRIB4NUBVARBPROC vertexAttrib4NubvARB = (PFNGLVERTEXATTRIB4NUBVARBPROC) func; - PFNGLGETVERTEXATTRIBFVARBPROC getVertexAttribfvARB = (PFNGLGETVERTEXATTRIBFVARBPROC) glXGetProcAddressARB((const GLubyte *) "glGetVertexAttribfvARB"); - - const GLubyte v[4] = {255, 0, 255, 0}; - const GLubyte def[4] = {0, 0, 0, 255}; - GLfloat res[4]; - GLboolean pass; - (*vertexAttrib4NubvARB)(6, v); - (*getVertexAttribfvARB)(6, GL_CURRENT_VERTEX_ATTRIB_ARB, res); - pass = (res[0] == 1.0 && res[1] == 0.0 && res[2] == 1.0 && res[3] == 0.0); - (*vertexAttrib4NubvARB)(6, def); - return pass; -} - - -static GLboolean -test_VertexAttrib4NuivARB(generic_func func) -{ - PFNGLVERTEXATTRIB4NUIVARBPROC vertexAttrib4NuivARB = (PFNGLVERTEXATTRIB4NUIVARBPROC) func; - PFNGLGETVERTEXATTRIBFVARBPROC getVertexAttribfvARB = (PFNGLGETVERTEXATTRIBFVARBPROC) glXGetProcAddressARB((const GLubyte *) "glGetVertexAttribfvARB"); - - const GLuint v[4] = {0xffffffff, 0, 0xffffffff, 0}; - const GLuint def[4] = {0, 0, 0, 0xffffffff}; - GLfloat res[4]; - GLboolean pass; - (*vertexAttrib4NuivARB)(6, v); - (*getVertexAttribfvARB)(6, GL_CURRENT_VERTEX_ATTRIB_ARB, res); - pass = (EQUAL(res[0], 1.0) && EQUAL(res[1], 0.0) && EQUAL(res[2], 1.0) && EQUAL(res[3], 0.0)); - (*vertexAttrib4NuivARB)(6, def); - return pass; -} - - -static GLboolean -test_VertexAttrib4ivARB(generic_func func) -{ - PFNGLVERTEXATTRIB4IVARBPROC vertexAttrib4ivARB = (PFNGLVERTEXATTRIB4IVARBPROC) func; - PFNGLGETVERTEXATTRIBFVARBPROC getVertexAttribfvARB = (PFNGLGETVERTEXATTRIBFVARBPROC) glXGetProcAddressARB((const GLubyte *) "glGetVertexAttribfvARB"); - - const GLint v[4] = {1, 2, -3, 4}; - const GLint def[4] = {0, 0, 0, 1}; - GLfloat res[4]; - GLboolean pass; - (*vertexAttrib4ivARB)(6, v); - (*getVertexAttribfvARB)(6, GL_CURRENT_VERTEX_ATTRIB_ARB, res); - pass = (EQUAL(res[0], 1.0) && EQUAL(res[1], 2.0) && EQUAL(res[2], -3.0) && EQUAL(res[3], 4.0)); - (*vertexAttrib4ivARB)(6, def); - return pass; -} - - -static GLboolean -test_VertexAttrib4NsvARB(generic_func func) -{ - PFNGLVERTEXATTRIB4NSVARBPROC vertexAttrib4NsvARB = (PFNGLVERTEXATTRIB4NSVARBPROC) func; - PFNGLGETVERTEXATTRIBFVARBPROC getVertexAttribfvARB = (PFNGLGETVERTEXATTRIBFVARBPROC) glXGetProcAddressARB((const GLubyte *) "glGetVertexAttribfvARB"); - - const GLshort v[4] = {0, 32767, 32767, 0}; - const GLshort def[4] = {0, 0, 0, 32767}; - GLfloat res[4]; - GLboolean pass; - (*vertexAttrib4NsvARB)(6, v); - (*getVertexAttribfvARB)(6, GL_CURRENT_VERTEX_ATTRIB_ARB, res); - pass = (EQUAL(res[0], 0.0) && EQUAL(res[1], 1.0) && EQUAL(res[2], 1.0) && EQUAL(res[3], 0.0)); - (*vertexAttrib4NsvARB)(6, def); - return pass; -} - -static GLboolean -test_VertexAttrib4NusvARB(generic_func func) -{ - PFNGLVERTEXATTRIB4NUSVARBPROC vertexAttrib4NusvARB = (PFNGLVERTEXATTRIB4NUSVARBPROC) func; - PFNGLGETVERTEXATTRIBFVARBPROC getVertexAttribfvARB = (PFNGLGETVERTEXATTRIBFVARBPROC) glXGetProcAddressARB((const GLubyte *) "glGetVertexAttribfvARB"); - - const GLushort v[4] = {0xffff, 0, 0xffff, 0}; - const GLushort def[4] = {0, 0, 0, 0xffff}; - GLfloat res[4]; - GLboolean pass; - (*vertexAttrib4NusvARB)(6, v); - (*getVertexAttribfvARB)(6, GL_CURRENT_VERTEX_ATTRIB_ARB, res); - pass = (EQUAL(res[0], 1.0) && EQUAL(res[1], 0.0) && EQUAL(res[2], 1.0) && EQUAL(res[3], 0.0)); - (*vertexAttrib4NusvARB)(6, def); - return pass; -} - -static GLboolean -test_VertexAttrib1sNV(generic_func func) -{ - PFNGLVERTEXATTRIB1SNVPROC vertexAttrib1sNV = (PFNGLVERTEXATTRIB1SNVPROC) func; - PFNGLGETVERTEXATTRIBIVNVPROC getVertexAttribivNV = (PFNGLGETVERTEXATTRIBIVNVPROC) glXGetProcAddressARB((const GLubyte *) "glGetVertexAttribivNV"); - - const GLshort v[4] = {2, 0, 0, 1}; - const GLshort def[4] = {0, 0, 0, 1}; - GLint res[4]; - (*vertexAttrib1sNV)(6, v[0]); - (*getVertexAttribivNV)(6, GL_CURRENT_ATTRIB_NV, res); - (*vertexAttrib1sNV)(6, def[0]); - return compare_shorts_to_ints(__FUNCTION__, 4, v, 4, res); -} - -static GLboolean -test_VertexAttrib1fNV(generic_func func) -{ - PFNGLVERTEXATTRIB1FNVPROC vertexAttrib1fNV = (PFNGLVERTEXATTRIB1FNVPROC) func; - PFNGLGETVERTEXATTRIBFVNVPROC getVertexAttribfvNV = (PFNGLGETVERTEXATTRIBFVNVPROC) glXGetProcAddressARB((const GLubyte *) "glGetVertexAttribfvNV"); - - const GLfloat v[4] = {2.5, 0.0, 0.0, 1.0}; - const GLfloat def[4] = {0, 0, 0, 1}; - GLfloat res[4]; - (*vertexAttrib1fNV)(6, v[0]); - (*getVertexAttribfvNV)(6, GL_CURRENT_ATTRIB_NV, res); - (*vertexAttrib1fNV)(6, def[0]); - return compare_floats(__FUNCTION__, 4, v, 4, res); -} - -static GLboolean -test_VertexAttrib1dNV(generic_func func) -{ - PFNGLVERTEXATTRIB1DNVPROC vertexAttrib1dNV = (PFNGLVERTEXATTRIB1DNVPROC) func; - PFNGLGETVERTEXATTRIBDVNVPROC getVertexAttribdvNV = (PFNGLGETVERTEXATTRIBDVNVPROC) glXGetProcAddressARB((const GLubyte *) "glGetVertexAttribdvNV"); - - const GLdouble v[4] = {2.5, 0.0, 0.0, 1.0}; - const GLdouble def[4] = {0, 0, 0, 1}; - GLdouble res[4]; - (*vertexAttrib1dNV)(6, v[0]); - (*getVertexAttribdvNV)(6, GL_CURRENT_ATTRIB_NV, res); - (*vertexAttrib1dNV)(6, def[0]); - return compare_doubles(__FUNCTION__, 4, v, 4, res); -} - -static GLboolean -test_VertexAttrib2sNV(generic_func func) -{ - PFNGLVERTEXATTRIB2SNVPROC vertexAttrib2sNV = (PFNGLVERTEXATTRIB2SNVPROC) func; - PFNGLGETVERTEXATTRIBIVNVPROC getVertexAttribivNV = (PFNGLGETVERTEXATTRIBIVNVPROC) glXGetProcAddressARB((const GLubyte *) "glGetVertexAttribivNV"); - - const GLshort v[4] = {2, 4, 0, 1}; - const GLshort def[4] = {0, 0, 0, 1}; - GLint res[4]; - (*vertexAttrib2sNV)(6, v[0], v[1]); - (*getVertexAttribivNV)(6, GL_CURRENT_ATTRIB_NV, res); - (*vertexAttrib2sNV)(6, def[0], def[1]); - return compare_shorts_to_ints(__FUNCTION__, 4, v, 4, res); -} - -static GLboolean -test_VertexAttrib2fNV(generic_func func) -{ - PFNGLVERTEXATTRIB2FNVPROC vertexAttrib2fNV = (PFNGLVERTEXATTRIB2FNVPROC) func; - PFNGLGETVERTEXATTRIBFVNVPROC getVertexAttribfvNV = (PFNGLGETVERTEXATTRIBFVNVPROC) glXGetProcAddressARB((const GLubyte *) "glGetVertexAttribfvNV"); - - const GLfloat v[4] = {2.5, 4.25, 0.0, 1.0}; - const GLfloat def[4] = {0, 0, 0, 1}; - GLfloat res[4]; - (*vertexAttrib2fNV)(6, v[0], v[1]); - (*getVertexAttribfvNV)(6, GL_CURRENT_ATTRIB_NV, res); - (*vertexAttrib2fNV)(6, def[0], def[1]); - return compare_floats(__FUNCTION__, 4, v, 4, res); -} - -static GLboolean -test_VertexAttrib2dNV(generic_func func) -{ - PFNGLVERTEXATTRIB2DNVPROC vertexAttrib2dNV = (PFNGLVERTEXATTRIB2DNVPROC) func; - PFNGLGETVERTEXATTRIBDVNVPROC getVertexAttribdvNV = (PFNGLGETVERTEXATTRIBDVNVPROC) glXGetProcAddressARB((const GLubyte *) "glGetVertexAttribdvNV"); - - const GLdouble v[4] = {2.5, 4.25, 0.0, 1.0}; - const GLdouble def[4] = {0, 0, 0, 1}; - GLdouble res[4]; - (*vertexAttrib2dNV)(6, v[0], v[1]); - (*getVertexAttribdvNV)(6, GL_CURRENT_ATTRIB_NV, res); - (*vertexAttrib2dNV)(6, def[0], def[1]); - return compare_doubles(__FUNCTION__, 4, v, 4, res); -} - -static GLboolean -test_VertexAttrib3sNV(generic_func func) -{ - PFNGLVERTEXATTRIB3SNVPROC vertexAttrib3sNV = (PFNGLVERTEXATTRIB3SNVPROC) func; - PFNGLGETVERTEXATTRIBIVNVPROC getVertexAttribivNV = (PFNGLGETVERTEXATTRIBIVNVPROC) glXGetProcAddressARB((const GLubyte *) "glGetVertexAttribivNV"); - - const GLshort v[4] = {2, 4, 7, 1}; - const GLshort def[4] = {0, 0, 0, 1}; - GLint res[4]; - (*vertexAttrib3sNV)(6, v[0], v[1], v[2]); - (*getVertexAttribivNV)(6, GL_CURRENT_ATTRIB_NV, res); - (*vertexAttrib3sNV)(6, def[0], def[1], def[2]); - return compare_shorts_to_ints(__FUNCTION__, 4, v, 4, res); -} - -static GLboolean -test_VertexAttrib3fNV(generic_func func) -{ - PFNGLVERTEXATTRIB3FNVPROC vertexAttrib3fNV = (PFNGLVERTEXATTRIB3FNVPROC) func; - PFNGLGETVERTEXATTRIBFVNVPROC getVertexAttribfvNV = (PFNGLGETVERTEXATTRIBFVNVPROC) glXGetProcAddressARB((const GLubyte *) "glGetVertexAttribfvNV"); - - const GLfloat v[4] = {2.5, 4.25, 7.125, 1.0}; - const GLfloat def[4] = {0, 0, 0, 1}; - GLfloat res[4]; - (*vertexAttrib3fNV)(6, v[0], v[1], v[2]); - (*getVertexAttribfvNV)(6, GL_CURRENT_ATTRIB_NV, res); - (*vertexAttrib3fNV)(6, def[0], def[1], def[2]); - return compare_floats(__FUNCTION__, 4, v, 4, res); -} - -static GLboolean -test_VertexAttrib3dNV(generic_func func) -{ - PFNGLVERTEXATTRIB3DNVPROC vertexAttrib3dNV = (PFNGLVERTEXATTRIB3DNVPROC) func; - PFNGLGETVERTEXATTRIBDVNVPROC getVertexAttribdvNV = (PFNGLGETVERTEXATTRIBDVNVPROC) glXGetProcAddressARB((const GLubyte *) "glGetVertexAttribdvNV"); - - const GLdouble v[4] = {2.5, 4.25, 7.125, 1.0}; - const GLdouble def[4] = {0, 0, 0, 1}; - GLdouble res[4]; - (*vertexAttrib3dNV)(6, v[0], v[1], v[2]); - (*getVertexAttribdvNV)(6, GL_CURRENT_ATTRIB_NV, res); - (*vertexAttrib3dNV)(6, def[0], def[1], def[2]); - return compare_doubles(__FUNCTION__, 4, v, 4, res); -} - -static GLboolean -test_VertexAttrib4sNV(generic_func func) -{ - PFNGLVERTEXATTRIB4SNVPROC vertexAttrib4sNV = (PFNGLVERTEXATTRIB4SNVPROC) func; - PFNGLGETVERTEXATTRIBIVNVPROC getVertexAttribivNV = (PFNGLGETVERTEXATTRIBIVNVPROC) glXGetProcAddressARB((const GLubyte *) "glGetVertexAttribivNV"); - - const GLshort v[4] = {2, 4, 7, 5}; - const GLshort def[4] = {0, 0, 0, 1}; - GLint res[4]; - (*vertexAttrib4sNV)(6, v[0], v[1], v[2], v[3]); - (*getVertexAttribivNV)(6, GL_CURRENT_ATTRIB_NV, res); - (*vertexAttrib4sNV)(6, def[0], def[1], def[2], def[3]); - return compare_shorts_to_ints(__FUNCTION__, 4, v, 4, res); -} - -static GLboolean -test_VertexAttrib4fNV(generic_func func) -{ - PFNGLVERTEXATTRIB4FNVPROC vertexAttrib4fNV = (PFNGLVERTEXATTRIB4FNVPROC) func; - PFNGLGETVERTEXATTRIBFVNVPROC getVertexAttribfvNV = (PFNGLGETVERTEXATTRIBFVNVPROC) glXGetProcAddressARB((const GLubyte *) "glGetVertexAttribfvNV"); - - const GLfloat v[4] = {2.5, 4.25, 7.125, 5.0625}; - const GLfloat def[4] = {0, 0, 0, 1}; - GLfloat res[4]; - (*vertexAttrib4fNV)(6, v[0], v[1], v[2], v[3]); - (*getVertexAttribfvNV)(6, GL_CURRENT_ATTRIB_NV, res); - (*vertexAttrib4fNV)(6, def[0], def[1], def[2], def[3]); - return compare_floats(__FUNCTION__, 4, v, 4, res); -} - -static GLboolean -test_VertexAttrib4dNV(generic_func func) -{ - PFNGLVERTEXATTRIB4DNVPROC vertexAttrib4dNV = (PFNGLVERTEXATTRIB4DNVPROC) func; - PFNGLGETVERTEXATTRIBDVNVPROC getVertexAttribdvNV = (PFNGLGETVERTEXATTRIBDVNVPROC) glXGetProcAddressARB((const GLubyte *) "glGetVertexAttribdvNV"); - - const GLdouble v[4] = {2.5, 4.25, 7.125, 5.0625}; - const GLdouble def[4] = {0, 0, 0, 1}; - GLdouble res[4]; - (*vertexAttrib4dNV)(6, v[0], v[1], v[2], v[3]); - (*getVertexAttribdvNV)(6, GL_CURRENT_ATTRIB_NV, res); - (*vertexAttrib4dNV)(6, def[0], def[1], def[2], def[3]); - return compare_doubles(__FUNCTION__, 4, v, 4, res); -} - -static GLboolean -test_VertexAttrib4ubNV(generic_func func) -{ - PFNGLVERTEXATTRIB4UBNVPROC vertexAttrib4ubNV = (PFNGLVERTEXATTRIB4UBNVPROC) func; - PFNGLGETVERTEXATTRIBFVNVPROC getVertexAttribfvNV = (PFNGLGETVERTEXATTRIBFVNVPROC) glXGetProcAddressARB((const GLubyte *) "glGetVertexAttribfvNV"); - - const GLubyte v[4] = {255, 0, 255, 0}; - const GLubyte def[4] = {0, 0, 0, 255}; - GLfloat res[4]; - /* There's no byte-value query; so we use the float-value query. - * Bytes are interpreted as steps between 0 and 1, so the - * expected float values will be 0.0 for byte value 0 and 1.0 for - * byte value 255. - */ - GLfloat expectedResults[4] = {1.0, 0.0, 1.0, 0.0}; - (*vertexAttrib4ubNV)(6, v[0], v[1], v[2], v[3]); - (*getVertexAttribfvNV)(6, GL_CURRENT_ATTRIB_NV, res); - (*vertexAttrib4ubNV)(6, def[0], def[1], def[2], def[3]); - return compare_floats(__FUNCTION__, 4, expectedResults, 4, res); -} - -static GLboolean -test_VertexAttrib1fvNV(generic_func func) -{ - PFNGLVERTEXATTRIB1FVNVPROC vertexAttrib1fvNV = (PFNGLVERTEXATTRIB1FVNVPROC) func; - PFNGLGETVERTEXATTRIBFVNVPROC getVertexAttribfvNV = (PFNGLGETVERTEXATTRIBFVNVPROC) glXGetProcAddressARB((const GLubyte *) "glGetVertexAttribfvNV"); - - const GLfloat v[4] = {2.5, 0.0, 0.0, 1.0}; - const GLfloat def[4] = {0, 0, 0, 1}; - GLfloat res[4]; - (*vertexAttrib1fvNV)(6, v); - (*getVertexAttribfvNV)(6, GL_CURRENT_ATTRIB_NV, res); - (*vertexAttrib1fvNV)(6, def); - return compare_floats(__FUNCTION__, 4, v, 4, res); -} - -static GLboolean -test_VertexAttrib1dvNV(generic_func func) -{ - PFNGLVERTEXATTRIB1DVNVPROC vertexAttrib1dvNV = (PFNGLVERTEXATTRIB1DVNVPROC) func; - PFNGLGETVERTEXATTRIBDVNVPROC getVertexAttribdvNV = (PFNGLGETVERTEXATTRIBDVNVPROC) glXGetProcAddressARB((const GLubyte *) "glGetVertexAttribdvNV"); - - const GLdouble v[4] = {2.5, 0.0, 0.0, 1.0}; - const GLdouble def[4] = {0, 0, 0, 1}; - GLdouble res[4]; - (*vertexAttrib1dvNV)(6, v); - (*getVertexAttribdvNV)(6, GL_CURRENT_ATTRIB_NV, res); - (*vertexAttrib1dvNV)(6, def); - return compare_doubles(__FUNCTION__, 4, v, 4, res); -} - -static GLboolean -test_VertexAttrib2svNV(generic_func func) -{ - PFNGLVERTEXATTRIB2SVNVPROC vertexAttrib2svNV = (PFNGLVERTEXATTRIB2SVNVPROC) func; - PFNGLGETVERTEXATTRIBIVNVPROC getVertexAttribivNV = (PFNGLGETVERTEXATTRIBIVNVPROC) glXGetProcAddressARB((const GLubyte *) "glGetVertexAttribivNV"); - - const GLshort v[4] = {2, 4, 0, 1}; - const GLshort def[4] = {0, 0, 0, 1}; - GLint res[4]; - (*vertexAttrib2svNV)(6, v); - (*getVertexAttribivNV)(6, GL_CURRENT_ATTRIB_NV, res); - (*vertexAttrib2svNV)(6, def); - return compare_shorts_to_ints(__FUNCTION__, 4, v, 4, res); -} - -static GLboolean -test_VertexAttrib2fvNV(generic_func func) -{ - PFNGLVERTEXATTRIB2FVNVPROC vertexAttrib2fvNV = (PFNGLVERTEXATTRIB2FVNVPROC) func; - PFNGLGETVERTEXATTRIBFVNVPROC getVertexAttribfvNV = (PFNGLGETVERTEXATTRIBFVNVPROC) glXGetProcAddressARB((const GLubyte *) "glGetVertexAttribfvNV"); - - const GLfloat v[4] = {2.5, 4.25, 0.0, 1.0}; - const GLfloat def[4] = {0, 0, 0, 1}; - GLfloat res[4]; - (*vertexAttrib2fvNV)(6, v); - (*getVertexAttribfvNV)(6, GL_CURRENT_ATTRIB_NV, res); - (*vertexAttrib2fvNV)(6, def); - return compare_floats(__FUNCTION__, 4, v, 4, res); -} - -static GLboolean -test_VertexAttrib2dvNV(generic_func func) -{ - PFNGLVERTEXATTRIB2DVNVPROC vertexAttrib2dvNV = (PFNGLVERTEXATTRIB2DVNVPROC) func; - PFNGLGETVERTEXATTRIBDVNVPROC getVertexAttribdvNV = (PFNGLGETVERTEXATTRIBDVNVPROC) glXGetProcAddressARB((const GLubyte *) "glGetVertexAttribdvNV"); - - const GLdouble v[4] = {2.5, 4.25, 0.0, 1.0}; - const GLdouble def[4] = {0, 0, 0, 1}; - GLdouble res[4]; - (*vertexAttrib2dvNV)(6, v); - (*getVertexAttribdvNV)(6, GL_CURRENT_ATTRIB_NV, res); - (*vertexAttrib2dvNV)(6, def); - return compare_doubles(__FUNCTION__, 4, v, 4, res); -} - -static GLboolean -test_VertexAttrib3svNV(generic_func func) -{ - PFNGLVERTEXATTRIB3SVNVPROC vertexAttrib3svNV = (PFNGLVERTEXATTRIB3SVNVPROC) func; - PFNGLGETVERTEXATTRIBIVNVPROC getVertexAttribivNV = (PFNGLGETVERTEXATTRIBIVNVPROC) glXGetProcAddressARB((const GLubyte *) "glGetVertexAttribivNV"); - - const GLshort v[4] = {2, 4, 7, 1}; - const GLshort def[4] = {0, 0, 0, 1}; - GLint res[4]; - (*vertexAttrib3svNV)(6, v); - (*getVertexAttribivNV)(6, GL_CURRENT_ATTRIB_NV, res); - (*vertexAttrib3svNV)(6, def); - return compare_shorts_to_ints(__FUNCTION__, 4, v, 4, res); -} - -static GLboolean -test_VertexAttrib3fvNV(generic_func func) -{ - PFNGLVERTEXATTRIB3FVNVPROC vertexAttrib3fvNV = (PFNGLVERTEXATTRIB3FVNVPROC) func; - PFNGLGETVERTEXATTRIBFVNVPROC getVertexAttribfvNV = (PFNGLGETVERTEXATTRIBFVNVPROC) glXGetProcAddressARB((const GLubyte *) "glGetVertexAttribfvNV"); - - const GLfloat v[4] = {2.5, 4.25, 7.125, 1.0}; - const GLfloat def[4] = {0, 0, 0, 1}; - GLfloat res[4]; - (*vertexAttrib3fvNV)(6, v); - (*getVertexAttribfvNV)(6, GL_CURRENT_ATTRIB_NV, res); - (*vertexAttrib3fvNV)(6, def); - return compare_floats(__FUNCTION__, 4, v, 4, res); -} - -static GLboolean -test_VertexAttrib3dvNV(generic_func func) -{ - PFNGLVERTEXATTRIB3DVNVPROC vertexAttrib3dvNV = (PFNGLVERTEXATTRIB3DVNVPROC) func; - PFNGLGETVERTEXATTRIBDVNVPROC getVertexAttribdvNV = (PFNGLGETVERTEXATTRIBDVNVPROC) glXGetProcAddressARB((const GLubyte *) "glGetVertexAttribdvNV"); - - const GLdouble v[4] = {2.5, 4.25, 7.125, 1.0}; - const GLdouble def[4] = {0, 0, 0, 1}; - GLdouble res[4]; - (*vertexAttrib3dvNV)(6, v); - (*getVertexAttribdvNV)(6, GL_CURRENT_ATTRIB_NV, res); - (*vertexAttrib3dvNV)(6, def); - return compare_doubles(__FUNCTION__, 4, v, 4, res); -} - -static GLboolean -test_VertexAttrib4svNV(generic_func func) -{ - PFNGLVERTEXATTRIB4SVNVPROC vertexAttrib4svNV = (PFNGLVERTEXATTRIB4SVNVPROC) func; - PFNGLGETVERTEXATTRIBIVNVPROC getVertexAttribivNV = (PFNGLGETVERTEXATTRIBIVNVPROC) glXGetProcAddressARB((const GLubyte *) "glGetVertexAttribivNV"); - - const GLshort v[4] = {2, 4, 7, 5}; - const GLshort def[4] = {0, 0, 0, 1}; - GLint res[4]; - (*vertexAttrib4svNV)(6, v); - (*getVertexAttribivNV)(6, GL_CURRENT_ATTRIB_NV, res); - (*vertexAttrib4svNV)(6, def); - return compare_shorts_to_ints(__FUNCTION__, 4, v, 4, res); -} - -static GLboolean -test_VertexAttrib4fvNV(generic_func func) -{ - PFNGLVERTEXATTRIB4FVNVPROC vertexAttrib4fvNV = (PFNGLVERTEXATTRIB4FVNVPROC) func; - PFNGLGETVERTEXATTRIBFVNVPROC getVertexAttribfvNV = (PFNGLGETVERTEXATTRIBFVNVPROC) glXGetProcAddressARB((const GLubyte *) "glGetVertexAttribfvNV"); - - const GLfloat v[4] = {2.5, 4.25, 7.125, 5.0625}; - const GLfloat def[4] = {0, 0, 0, 1}; - GLfloat res[4]; - (*vertexAttrib4fvNV)(6, v); - (*getVertexAttribfvNV)(6, GL_CURRENT_ATTRIB_NV, res); - (*vertexAttrib4fvNV)(6, def); - return compare_floats(__FUNCTION__, 4, v, 4, res); -} - -static GLboolean -test_VertexAttrib4dvNV(generic_func func) -{ - PFNGLVERTEXATTRIB4DVNVPROC vertexAttrib4dvNV = (PFNGLVERTEXATTRIB4DVNVPROC) func; - PFNGLGETVERTEXATTRIBDVNVPROC getVertexAttribdvNV = (PFNGLGETVERTEXATTRIBDVNVPROC) glXGetProcAddressARB((const GLubyte *) "glGetVertexAttribdvNV"); - - const GLdouble v[4] = {2.5, 4.25, 7.125, 5.0625}; - const GLdouble def[4] = {0, 0, 0, 1}; - GLdouble res[4]; - (*vertexAttrib4dvNV)(6, v); - (*getVertexAttribdvNV)(6, GL_CURRENT_ATTRIB_NV, res); - (*vertexAttrib4dvNV)(6, def); - return compare_doubles(__FUNCTION__, 4, v, 4, res); -} - -static GLboolean -test_VertexAttrib4ubvNV(generic_func func) -{ - PFNGLVERTEXATTRIB4UBVNVPROC vertexAttrib4ubvNV = (PFNGLVERTEXATTRIB4UBVNVPROC) func; - PFNGLGETVERTEXATTRIBFVNVPROC getVertexAttribfvNV = (PFNGLGETVERTEXATTRIBFVNVPROC) glXGetProcAddressARB((const GLubyte *) "glGetVertexAttribfvNV"); - - const GLubyte v[4] = {255, 0, 255, 0}; - const GLubyte def[4] = {0, 0, 0, 255}; - GLfloat res[4]; - /* There's no byte-value query; so we use the float-value query. - * Bytes are interpreted as steps between 0 and 1, so the - * expected float values will be 0.0 for byte value 0 and 1.0 for - * byte value 255. - */ - GLfloat expectedResults[4] = {1.0, 0.0, 1.0, 0.0}; - (*vertexAttrib4ubvNV)(6, v); - (*getVertexAttribfvNV)(6, GL_CURRENT_ATTRIB_NV, res); - (*vertexAttrib4ubvNV)(6, def); - return compare_floats(__FUNCTION__, 4, expectedResults, 4, res); -} - -static GLboolean -test_VertexAttribs1fvNV(generic_func func) -{ - PFNGLVERTEXATTRIBS1FVNVPROC vertexAttribs1fvNV = (PFNGLVERTEXATTRIBS1FVNVPROC) func; - PFNGLGETVERTEXATTRIBFVNVPROC getVertexAttribfvNV = (PFNGLGETVERTEXATTRIBFVNVPROC) glXGetProcAddressARB((const GLubyte *) "glGetVertexAttribfvNV"); - - const GLfloat v[4] = {2.5, 0.0, 0.0, 1.0}; - const GLfloat def[4] = {0, 0, 0, 1}; - GLfloat res[4]; - (*vertexAttribs1fvNV)(6, 1, v); - (*getVertexAttribfvNV)(6, GL_CURRENT_ATTRIB_NV, res); - (*vertexAttribs1fvNV)(6, 1, def); - return compare_floats(__FUNCTION__, 4, v, 4, res); -} - -static GLboolean -test_VertexAttribs1dvNV(generic_func func) -{ - PFNGLVERTEXATTRIBS1DVNVPROC vertexAttribs1dvNV = (PFNGLVERTEXATTRIBS1DVNVPROC) func; - PFNGLGETVERTEXATTRIBDVNVPROC getVertexAttribdvNV = (PFNGLGETVERTEXATTRIBDVNVPROC) glXGetProcAddressARB((const GLubyte *) "glGetVertexAttribdvNV"); - - const GLdouble v[4] = {2.5, 0.0, 0.0, 1.0}; - const GLdouble def[4] = {0, 0, 0, 1}; - GLdouble res[4]; - (*vertexAttribs1dvNV)(6, 1, v); - (*getVertexAttribdvNV)(6, GL_CURRENT_ATTRIB_NV, res); - (*vertexAttribs1dvNV)(6, 1, def); - return compare_doubles(__FUNCTION__, 4, v, 4, res); -} - -static GLboolean -test_VertexAttribs2svNV(generic_func func) -{ - PFNGLVERTEXATTRIBS2SVNVPROC vertexAttribs2svNV = (PFNGLVERTEXATTRIBS2SVNVPROC) func; - PFNGLGETVERTEXATTRIBIVNVPROC getVertexAttribivNV = (PFNGLGETVERTEXATTRIBIVNVPROC) glXGetProcAddressARB((const GLubyte *) "glGetVertexAttribivNV"); - - const GLshort v[4] = {2, 4, 0, 1}; - const GLshort def[4] = {0, 0, 0, 1}; - GLint res[4]; - (*vertexAttribs2svNV)(6, 1, v); - (*getVertexAttribivNV)(6, GL_CURRENT_ATTRIB_NV, res); - (*vertexAttribs2svNV)(6, 1, def); - return compare_shorts_to_ints(__FUNCTION__, 4, v, 4, res); -} - -static GLboolean -test_VertexAttribs2fvNV(generic_func func) -{ - PFNGLVERTEXATTRIBS2FVNVPROC vertexAttribs2fvNV = (PFNGLVERTEXATTRIBS2FVNVPROC) func; - PFNGLGETVERTEXATTRIBFVNVPROC getVertexAttribfvNV = (PFNGLGETVERTEXATTRIBFVNVPROC) glXGetProcAddressARB((const GLubyte *) "glGetVertexAttribfvNV"); - - const GLfloat v[4] = {2.5, 4.25, 0.0, 1.0}; - const GLfloat def[4] = {0, 0, 0, 1}; - GLfloat res[4]; - (*vertexAttribs2fvNV)(6, 1, v); - (*getVertexAttribfvNV)(6, GL_CURRENT_ATTRIB_NV, res); - (*vertexAttribs2fvNV)(6, 1, def); - return compare_floats(__FUNCTION__, 4, v, 4, res); -} - -static GLboolean -test_VertexAttribs2dvNV(generic_func func) -{ - PFNGLVERTEXATTRIBS2DVNVPROC vertexAttribs2dvNV = (PFNGLVERTEXATTRIBS2DVNVPROC) func; - PFNGLGETVERTEXATTRIBDVNVPROC getVertexAttribdvNV = (PFNGLGETVERTEXATTRIBDVNVPROC) glXGetProcAddressARB((const GLubyte *) "glGetVertexAttribdvNV"); - - const GLdouble v[4] = {2.5, 4.25, 0.0, 1.0}; - const GLdouble def[4] = {0, 0, 0, 1}; - GLdouble res[4]; - (*vertexAttribs2dvNV)(6, 1, v); - (*getVertexAttribdvNV)(6, GL_CURRENT_ATTRIB_NV, res); - (*vertexAttribs2dvNV)(6, 1, def); - return compare_doubles(__FUNCTION__, 4, v, 4, res); -} - -static GLboolean -test_VertexAttribs3svNV(generic_func func) -{ - PFNGLVERTEXATTRIBS3SVNVPROC vertexAttribs3svNV = (PFNGLVERTEXATTRIBS3SVNVPROC) func; - PFNGLGETVERTEXATTRIBIVNVPROC getVertexAttribivNV = (PFNGLGETVERTEXATTRIBIVNVPROC) glXGetProcAddressARB((const GLubyte *) "glGetVertexAttribivNV"); - - const GLshort v[4] = {2, 4, 7, 1}; - const GLshort def[4] = {0, 0, 0, 1}; - GLint res[4]; - (*vertexAttribs3svNV)(6, 1, v); - (*getVertexAttribivNV)(6, GL_CURRENT_ATTRIB_NV, res); - (*vertexAttribs3svNV)(6, 1, def); - return compare_shorts_to_ints(__FUNCTION__, 4, v, 4, res); -} - -static GLboolean -test_VertexAttribs3fvNV(generic_func func) -{ - PFNGLVERTEXATTRIBS3FVNVPROC vertexAttribs3fvNV = (PFNGLVERTEXATTRIBS3FVNVPROC) func; - PFNGLGETVERTEXATTRIBFVNVPROC getVertexAttribfvNV = (PFNGLGETVERTEXATTRIBFVNVPROC) glXGetProcAddressARB((const GLubyte *) "glGetVertexAttribfvNV"); - - const GLfloat v[4] = {2.5, 4.25, 7.125, 1.0}; - const GLfloat def[4] = {0, 0, 0, 1}; - GLfloat res[4]; - (*vertexAttribs3fvNV)(6, 1, v); - (*getVertexAttribfvNV)(6, GL_CURRENT_ATTRIB_NV, res); - (*vertexAttribs3fvNV)(6, 1, def); - return compare_floats(__FUNCTION__, 4, v, 4, res); -} - -static GLboolean -test_VertexAttribs3dvNV(generic_func func) -{ - PFNGLVERTEXATTRIBS3DVNVPROC vertexAttribs3dvNV = (PFNGLVERTEXATTRIBS3DVNVPROC) func; - PFNGLGETVERTEXATTRIBDVNVPROC getVertexAttribdvNV = (PFNGLGETVERTEXATTRIBDVNVPROC) glXGetProcAddressARB((const GLubyte *) "glGetVertexAttribdvNV"); - - const GLdouble v[4] = {2.5, 4.25, 7.125, 1.0}; - const GLdouble def[4] = {0, 0, 0, 1}; - GLdouble res[4]; - (*vertexAttribs3dvNV)(6, 1, v); - (*getVertexAttribdvNV)(6, GL_CURRENT_ATTRIB_NV, res); - (*vertexAttribs3dvNV)(6, 1, def); - return compare_doubles(__FUNCTION__, 4, v, 4, res); -} - -static GLboolean -test_VertexAttribs4svNV(generic_func func) -{ - PFNGLVERTEXATTRIBS4SVNVPROC vertexAttribs4svNV = (PFNGLVERTEXATTRIBS4SVNVPROC) func; - PFNGLGETVERTEXATTRIBIVNVPROC getVertexAttribivNV = (PFNGLGETVERTEXATTRIBIVNVPROC) glXGetProcAddressARB((const GLubyte *) "glGetVertexAttribivNV"); - - const GLshort v[4] = {2, 4, 7, 5}; - const GLshort def[4] = {0, 0, 0, 1}; - GLint res[4]; - (*vertexAttribs4svNV)(6, 1, v); - (*getVertexAttribivNV)(6, GL_CURRENT_ATTRIB_NV, res); - (*vertexAttribs4svNV)(6, 1, def); - return compare_shorts_to_ints(__FUNCTION__, 4, v, 4, res); -} - -static GLboolean -test_VertexAttribs4fvNV(generic_func func) -{ - PFNGLVERTEXATTRIBS4FVNVPROC vertexAttribs4fvNV = (PFNGLVERTEXATTRIBS4FVNVPROC) func; - PFNGLGETVERTEXATTRIBFVNVPROC getVertexAttribfvNV = (PFNGLGETVERTEXATTRIBFVNVPROC) glXGetProcAddressARB((const GLubyte *) "glGetVertexAttribfvNV"); - - const GLfloat v[4] = {2.5, 4.25, 7.125, 5.0625}; - const GLfloat def[4] = {0, 0, 0, 1}; - GLfloat res[4]; - (*vertexAttribs4fvNV)(6, 1, v); - (*getVertexAttribfvNV)(6, GL_CURRENT_ATTRIB_NV, res); - (*vertexAttribs4fvNV)(6, 1, def); - return compare_floats(__FUNCTION__, 4, v, 4, res); -} - -static GLboolean -test_VertexAttribs4dvNV(generic_func func) -{ - PFNGLVERTEXATTRIBS4DVNVPROC vertexAttribs4dvNV = (PFNGLVERTEXATTRIBS4DVNVPROC) func; - PFNGLGETVERTEXATTRIBDVNVPROC getVertexAttribdvNV = (PFNGLGETVERTEXATTRIBDVNVPROC) glXGetProcAddressARB((const GLubyte *) "glGetVertexAttribdvNV"); - - const GLdouble v[4] = {2.5, 4.25, 7.125, 5.0625}; - const GLdouble def[4] = {0, 0, 0, 1}; - GLdouble res[4]; - (*vertexAttribs4dvNV)(6, 1, v); - (*getVertexAttribdvNV)(6, GL_CURRENT_ATTRIB_NV, res); - (*vertexAttribs4dvNV)(6, 1, def); - return compare_doubles(__FUNCTION__, 4, v, 4, res); -} - -static GLboolean -test_VertexAttribs4ubvNV(generic_func func) -{ - PFNGLVERTEXATTRIBS4UBVNVPROC vertexAttribs4ubvNV = (PFNGLVERTEXATTRIBS4UBVNVPROC) func; - PFNGLGETVERTEXATTRIBFVNVPROC getVertexAttribfvNV = (PFNGLGETVERTEXATTRIBFVNVPROC) glXGetProcAddressARB((const GLubyte *) "glGetVertexAttribfvNV"); - - const GLubyte v[4] = {255, 0, 255, 0}; - const GLubyte def[4] = {0, 0, 0, 255}; - GLfloat res[4]; - /* There's no byte-value query; so we use the float-value query. - * Bytes are interpreted as steps between 0 and 1, so the - * expected float values will be 0.0 for byte value 0 and 1.0 for - * byte value 255. - */ - GLfloat expectedResults[4] = {1.0, 0.0, 1.0, 0.0}; - (*vertexAttribs4ubvNV)(6, 1, v); - (*getVertexAttribfvNV)(6, GL_CURRENT_ATTRIB_NV, res); - (*vertexAttribs4ubvNV)(6, 1, def); - return compare_floats(__FUNCTION__, 4, expectedResults, 4, res); -} - -static GLboolean -test_StencilFuncSeparateATI(generic_func func) -{ -#ifdef GL_ATI_separate_stencil - PFNGLSTENCILFUNCSEPARATEATIPROC stencilFuncSeparateATI = (PFNGLSTENCILFUNCSEPARATEATIPROC) func; - GLint frontFunc, backFunc; - GLint frontRef, backRef; - GLint frontMask, backMask; - (*stencilFuncSeparateATI)(GL_LESS, GL_GREATER, 2, 0xa); - glGetIntegerv(GL_STENCIL_FUNC, &frontFunc); - glGetIntegerv(GL_STENCIL_BACK_FUNC, &backFunc); - glGetIntegerv(GL_STENCIL_REF, &frontRef); - glGetIntegerv(GL_STENCIL_BACK_REF, &backRef); - glGetIntegerv(GL_STENCIL_VALUE_MASK, &frontMask); - glGetIntegerv(GL_STENCIL_BACK_VALUE_MASK, &backMask); - if (frontFunc != GL_LESS || - backFunc != GL_GREATER || - frontRef != 2 || - backRef != 2 || - frontMask != 0xa || - backMask != 0xa) - return GL_FALSE; -#endif - return GL_TRUE; -} - -static GLboolean -test_StencilFuncSeparate(generic_func func) -{ -#ifdef GL_VERSION_2_0 - PFNGLSTENCILFUNCSEPARATEPROC stencilFuncSeparate = (PFNGLSTENCILFUNCSEPARATEPROC) func; - GLint frontFunc, backFunc; - GLint frontRef, backRef; - GLint frontMask, backMask; - (*stencilFuncSeparate)(GL_BACK, GL_GREATER, 2, 0xa); - glGetIntegerv(GL_STENCIL_FUNC, &frontFunc); - glGetIntegerv(GL_STENCIL_BACK_FUNC, &backFunc); - glGetIntegerv(GL_STENCIL_REF, &frontRef); - glGetIntegerv(GL_STENCIL_BACK_REF, &backRef); - glGetIntegerv(GL_STENCIL_VALUE_MASK, &frontMask); - glGetIntegerv(GL_STENCIL_BACK_VALUE_MASK, &backMask); - if (frontFunc != GL_ALWAYS || - backFunc != GL_GREATER || - frontRef != 0 || - backRef != 2 || - frontMask == 0xa || /* might be 0xff or ~0 */ - backMask != 0xa) - return GL_FALSE; -#endif - return GL_TRUE; -} - -static GLboolean -test_StencilOpSeparate(generic_func func) -{ -#ifdef GL_VERSION_2_0 - PFNGLSTENCILOPSEPARATEPROC stencilOpSeparate = (PFNGLSTENCILOPSEPARATEPROC) func; - GLint frontFail, backFail; - GLint frontZFail, backZFail; - GLint frontZPass, backZPass; - (*stencilOpSeparate)(GL_BACK, GL_INCR, GL_DECR, GL_INVERT); - glGetIntegerv(GL_STENCIL_FAIL, &frontFail); - glGetIntegerv(GL_STENCIL_BACK_FAIL, &backFail); - glGetIntegerv(GL_STENCIL_PASS_DEPTH_FAIL, &frontZFail); - glGetIntegerv(GL_STENCIL_BACK_PASS_DEPTH_FAIL, &backZFail); - glGetIntegerv(GL_STENCIL_PASS_DEPTH_PASS, &frontZPass); - glGetIntegerv(GL_STENCIL_BACK_PASS_DEPTH_PASS, &backZPass); - if (frontFail != GL_KEEP || - backFail != GL_INCR || - frontZFail != GL_KEEP || - backZFail != GL_DECR || - frontZPass != GL_KEEP || - backZPass != GL_INVERT) - return GL_FALSE; -#endif - return GL_TRUE; -} - -static GLboolean -test_StencilMaskSeparate(generic_func func) -{ -#ifdef GL_VERSION_2_0 - PFNGLSTENCILMASKSEPARATEPROC stencilMaskSeparate = (PFNGLSTENCILMASKSEPARATEPROC) func; - GLint frontMask, backMask; - (*stencilMaskSeparate)(GL_BACK, 0x1b); - glGetIntegerv(GL_STENCIL_WRITEMASK, &frontMask); - glGetIntegerv(GL_STENCIL_BACK_WRITEMASK, &backMask); - if (frontMask == 0x1b || - backMask != 0x1b) - return GL_FALSE; -#endif - return GL_TRUE; -} - - -/* - * The following file is auto-generated with Python. - */ -#include "getproclist.h" - - - -static int -extension_supported(const char *haystack, const char *needle) -{ - const char *p = strstr(haystack, needle); - if (p) { - /* found string, make sure next char is space or zero */ - const int len = strlen(needle); - if (p[len] == ' ' || p[len] == 0) - return 1; - else - return 0; - } - else - return 0; -} - - -/* Run all the known extension function tests, if the extension is supported. - * Return a count of how many failed. - */ -static int -check_functions( const char *extensions ) -{ - struct name_test_pair *entry; - int failures = 0, passes = 0, untested = 0; - int totalFail = 0, totalPass = 0, totalUntested = 0, totalUnsupported = 0; - int doTests = 0; - const char *version = (const char *) glGetString(GL_VERSION); - - /* The functions list will have "real" entries (consisting of - * a GL function name and a pointer to an exercise function for - * that GL function), and "group" entries (indicated as - * such by having a "-" as the first character of the name). - * "Group" names always start with the "-" character, and can - * be numeric (e.g. "-1.0", "-2.1"), indicating that a particular - * OpenGL version is required for the following functions; or can be - * an extension name (e.g. "-GL_ARB_multitexture") that means - * that the named extension is required for the following functions. - */ - for (entry = functions; entry->name; entry++) { - /* Check if this is a group indicator */ - if (entry->name[0] == '-') { - /* A group indicator; check if it's an OpenGL version group */ - if (entry->name[1] == '1') { - /* check GL version 1.x */ - if (version[0] == '1' && - version[1] == '.' && - version[2] >= entry->name[3]) - doTests = 1; - else - doTests = 0; - } - else if (entry->name[1] == '2') { - if (version[0] == '2' && - version[1] == '.' && - version[2] >= entry->name[3]) - doTests = 1; - else - doTests = 0; - } - else { - /* check if the named extension is available */ - doTests = extension_supported(extensions, entry->name+1); - } - - /* doTests is now set if we're starting an OpenGL version - * group, and the running OpenGL version is at least the - * version required; or if we're starting an OpenGL extension - * group, and the extension is supported. - */ - if (doTests) - printf("Testing %s functions\n", entry->name + 1); - - /* Each time we hit a title function, reset the function - * counts. - */ - failures = 0; - passes = 0; - untested = 0; - } - else if (doTests) { - /* Here, we know we're trying to exercise a function for - * a supported extension. See whether we have a test for - * it, and try to run it. - */ - generic_func funcPtr = (generic_func) glXGetProcAddressARB((const GLubyte *) entry->name); - if (funcPtr) { - if (entry->test) { - GLboolean b; - printf(" Validating %s:", entry->name); - b = (*entry->test)(funcPtr); - if (b) { - printf(" Pass\n"); - passes++; - totalPass++; - } - else { - printf(" FAIL!!!\n"); - failures++; - totalFail++; - } - } - else { - untested++; - totalUntested++; - } - } - else { - printf(" glXGetProcAddress(%s) failed!\n", entry->name); - failures++; - totalFail++; - } - } - else { - /* Here, we have a function that belongs to a group that - * is known to be unsupported. - */ - totalUnsupported++; - } - - /* Make sure a poor test case doesn't leave any lingering - * OpenGL errors. - */ - CheckGLError(__LINE__, __FILE__, __FUNCTION__); - - if (doTests && (!(entry+1)->name || (entry+1)->name[0] == '-')) { - if (failures > 0) { - printf(" %d failed.\n", failures); - } - if (passes > 0) { - printf(" %d passed.\n", passes); - } - if (untested > 0) { - printf(" %d untested.\n", untested); - } - } - } - - printf("-----------------------------\n"); - printf("Total: %d pass %d fail %d untested %d unsupported %d total\n", - totalPass, totalFail, totalUntested, totalUnsupported, - totalPass + totalFail + totalUntested + totalUnsupported); - - return totalFail; -} - - -/* Return an error code */ -#define ERROR_NONE 0 -#define ERROR_NO_VISUAL 1 -#define ERROR_NO_CONTEXT 2 -#define ERROR_NO_MAKECURRENT 3 -#define ERROR_FAILED 4 - -static int -print_screen_info(Display *dpy, int scrnum, Bool allowDirect) -{ - Window win; - int attribSingle[] = { - GLX_RGBA, - GLX_RED_SIZE, 1, - GLX_GREEN_SIZE, 1, - GLX_BLUE_SIZE, 1, - GLX_STENCIL_SIZE, 1, - None }; - int attribDouble[] = { - GLX_RGBA, - GLX_RED_SIZE, 1, - GLX_GREEN_SIZE, 1, - GLX_BLUE_SIZE, 1, - GLX_STENCIL_SIZE, 1, - GLX_DOUBLEBUFFER, - None }; - - XSetWindowAttributes attr; - unsigned long mask; - Window root; - GLXContext ctx; - XVisualInfo *visinfo; - int width = 100, height = 100; - int failures; - - root = RootWindow(dpy, scrnum); - - visinfo = glXChooseVisual(dpy, scrnum, attribSingle); - if (!visinfo) { - visinfo = glXChooseVisual(dpy, scrnum, attribDouble); - if (!visinfo) { - fprintf(stderr, "Error: couldn't find RGB GLX visual\n"); - return ERROR_NO_VISUAL; - } - } - - attr.background_pixel = 0; - attr.border_pixel = 0; - attr.colormap = XCreateColormap(dpy, root, visinfo->visual, AllocNone); - attr.event_mask = StructureNotifyMask | ExposureMask; - mask = CWBackPixel | CWBorderPixel | CWColormap | CWEventMask; - win = XCreateWindow(dpy, root, 0, 0, width, height, - 0, visinfo->depth, InputOutput, - visinfo->visual, mask, &attr); - - ctx = glXCreateContext( dpy, visinfo, NULL, allowDirect ); - if (!ctx) { - fprintf(stderr, "Error: glXCreateContext failed\n"); - XDestroyWindow(dpy, win); - return ERROR_NO_CONTEXT; - } - - if (!glXMakeCurrent(dpy, win, ctx)) { - fprintf(stderr, "Error: glXMakeCurrent failed\n"); - glXDestroyContext(dpy, ctx); - XDestroyWindow(dpy, win); - return ERROR_NO_MAKECURRENT; - } - - failures = check_functions( (const char *) glGetString(GL_EXTENSIONS) ); - glXDestroyContext(dpy, ctx); - XDestroyWindow(dpy, win); - - return (failures == 0 ? ERROR_NONE : ERROR_FAILED); -} - -int -main(int argc, char *argv[]) -{ - char *displayName = NULL; - Display *dpy; - int returnCode; - - dpy = XOpenDisplay(displayName); - if (!dpy) { - fprintf(stderr, "Error: unable to open display %s\n", displayName); - return -1; - } - - returnCode = print_screen_info(dpy, 0, GL_TRUE); - - XCloseDisplay(dpy); - - return returnCode; -} diff --git a/progs/tests/getprocaddress.py b/progs/tests/getprocaddress.py deleted file mode 100644 index 699195bd48..0000000000 --- a/progs/tests/getprocaddress.py +++ /dev/null @@ -1,92 +0,0 @@ -#!/usr/bin/env python - - -# Helper for the getprocaddress.c test. - -import sys, getopt, re -sys.path.append("../../src/mesa/glapi/" ) -import gl_XML -import license - - -def FindTestFunctions(): - """Scan getprocaddress.c for lines that start with "test_" to find - extension function tests. Return a list of names found.""" - functions = [] - f = open("getprocaddress.c") - if not f: - return functions - for line in f.readlines(): - v = re.search("^test_([a-zA-Z0-9]+)", line) - if v: - func = v.group(1) - functions.append(func) - f.close - return functions - - -class PrintExports(gl_XML.gl_print_base): - def __init__(self): - gl_XML.gl_print_base.__init__(self) - - self.name = "getprocaddress.py (from Mesa)" - self.license = license.bsd_license_template % ( \ -"""Copyright (C) 1999-2001 Brian Paul All Rights Reserved. -(C) Copyright IBM Corporation 2004""", "BRIAN PAUL, IBM") - - self.tests = FindTestFunctions() - self.prevCategory = "" - return - - - def printRealHeader(self): - print """ -struct name_test_pair { - const char *name; - GLboolean (*test)(generic_func); -}; - -static struct name_test_pair functions[] = {""" - - def printBody(self, api): - prev_category = None - - - for f in api.functionIterateByCategory(): - [category, num] = api.get_category_for_name( f.name ) - if category != prev_category: - print ' { "-%s", NULL},' % category - prev_category = category - - test = "NULL" - for name in f.entry_points: - if name in self.tests: - test = "test_%s" % name - break - - print ' { "gl%s", %s },' % (f.name, test) - - print '' - print ' { NULL, NULL }' - print '};' - print '' - return - - -if __name__ == '__main__': - file_name = "../../src/mesa/glapi/gl_API.xml" - - try: - (args, trail) = getopt.getopt(sys.argv[1:], "f:") - except Exception,e: - show_usage() - - for (arg,val) in args: - if arg == "-f": - file_name = val - - printer = PrintExports() - - api = gl_XML.parse_GL_API( file_name, gl_XML.gl_item_factory() ) - - printer.Print( api ) diff --git a/progs/tests/getteximage.c b/progs/tests/getteximage.c deleted file mode 100644 index e4053b8de1..0000000000 --- a/progs/tests/getteximage.c +++ /dev/null @@ -1,273 +0,0 @@ -/** - * Test glGetTexImage() - * Brian Paul - * 9 June 2009 - */ - - -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - -static int Win; - - -static void -TestGetTexImage(GLboolean npot) -{ - GLuint iter; - GLubyte *data = (GLubyte *) malloc(1024 * 1024 * 4); - GLubyte *data2 = (GLubyte *) malloc(1024 * 1024 * 4); - - glEnable(GL_TEXTURE_2D); - - printf("glTexImage2D + glGetTexImage:\n"); - - for (iter = 0; iter < 8; iter++) { - GLint p = (iter % 8) + 3; - GLint w = npot ? (p * 20) : (1 << p); - GLint h = npot ? (p * 10) : (1 << p); - GLuint i; - GLint level = 0; - - printf(" Testing %d x %d tex image\n", w, h); - - /* fill data */ - for (i = 0; i < w * h * 4; i++) { - data[i] = i & 0xff; - data2[i] = 0; - } - - glTexImage2D(GL_TEXTURE_2D, level, GL_RGBA, w, h, 0, - GL_RGBA, GL_UNSIGNED_BYTE, data); - - glBegin(GL_POINTS); - glVertex2f(0, 0); - glEnd(); - - /* get */ - glGetTexImage(GL_TEXTURE_2D, level, GL_RGBA, GL_UNSIGNED_BYTE, data2); - - /* compare */ - for (i = 0; i < w * h * 4; i++) { - if (data2[i] != data[i]) { - printf("glTexImage + glGetTexImage failure!\n"); - printf("Expected value %d, found %d\n", data[i], data2[i]); - abort(); - } - } - - /* get as BGRA */ - glGetTexImage(GL_TEXTURE_2D, level, GL_BGRA, GL_UNSIGNED_BYTE, data2); - - /* compare */ - { - const GLubyte *rgba = (GLubyte *) data; - const GLubyte *bgra = (GLubyte *) data2; - for (i = 0; i < w * h; i += 4) { - if (rgba[i+0] != bgra[i+2] || - rgba[i+1] != bgra[i+1] || - rgba[i+2] != bgra[i+0] || - rgba[i+3] != bgra[i+3]) { - printf("glTexImage + glGetTexImage(GL_BGRA) failure!\n"); - printf("Expected value %d, found %d\n", data[i], data2[i]); - abort(); - } - } - } - - } - - printf("Passed\n"); - glDisable(GL_TEXTURE_2D); - free(data); - free(data2); -} - - -static GLboolean -ColorsEqual(const GLubyte ref[4], const GLubyte act[4]) -{ - if (abs((int) ref[0] - (int) act[0]) > 1 || - abs((int) ref[1] - (int) act[1]) > 1 || - abs((int) ref[2] - (int) act[2]) > 1 || - abs((int) ref[3] - (int) act[3]) > 1) { - printf("expected %d %d %d %d\n", ref[0], ref[1], ref[2], ref[3]); - printf("found %d %d %d %d\n", act[0], act[1], act[2], act[3]); - return GL_FALSE; - } - return GL_TRUE; -} - - -static void -TestGetTexImageRTT(GLboolean npot) -{ - GLuint iter; - - printf("Render to texture + glGetTexImage:\n"); - - for (iter = 0; iter < 8; iter++) { - - GLuint fb, tex; - GLint w, h; - GLint level = 0; - - if (npot) { - w = 200 + iter * 40; - h = 200 + iter * 12; - } - else { - w = 4 << iter; - h = 4 << iter; - } - - glGenTextures(1, &tex); - glGenFramebuffersEXT(1, &fb); - - glBindTexture(GL_TEXTURE_2D, tex); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, w, h, 0, - GL_RGBA, GL_UNSIGNED_BYTE, NULL); - - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fb); - glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, - GL_TEXTURE_2D, tex, level); - - glViewport(0, 0, w, h); - - printf(" Testing %d x %d tex image\n", w, h); - { - static const GLubyte blue[4] = {0, 0, 255, 255}; - GLubyte color[4]; - GLubyte *data2 = (GLubyte *) malloc(w * h * 4); - GLuint i; - - /* random clear color */ - for (i = 0; i < 4; i++) { - color[i] = rand() % 256; - } - - glClearColor(color[0] / 255.0, - color[1] / 255.0, - color[2] / 255.0, - color[3] / 255.0); - - glClear(GL_COLOR_BUFFER_BIT); - - /* draw polygon over top half, in blue */ - glColor4ubv(blue); - glRectf(0, 0.5, 1.0, 1.0); - - /* get */ - glGetTexImage(GL_TEXTURE_2D, level, GL_RGBA, GL_UNSIGNED_BYTE, data2); - - /* compare */ - for (i = 0; i < w * h; i += 4) { - if (i < w * h / 2) { - /* lower half */ - if (!ColorsEqual(color, data2 + i * 4)) { - printf("Render to texture failure (expected clear color)!\n"); - abort(); - } - } - else { - /* upper half */ - if (!ColorsEqual(blue, data2 + i * 4)) { - printf("Render to texture failure (expected blue)!\n"); - abort(); - } - } - } - - free(data2); - } - - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); - glDeleteFramebuffersEXT(1, &fb); - glDeleteTextures(1, &tex); - - } - - printf("Passed\n"); -} - - - - -static void -Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - TestGetTexImage(GL_FALSE); - if (glutExtensionSupported("GL_ARB_texture_non_power_of_two")) - TestGetTexImage(GL_TRUE); - - if (glutExtensionSupported("GL_EXT_framebuffer_object") || - glutExtensionSupported("GL_ARB_framebuffer_object")) { - TestGetTexImageRTT(GL_FALSE); - if (glutExtensionSupported("GL_ARB_texture_non_power_of_two")) - TestGetTexImageRTT(GL_TRUE); - } - - glutDestroyWindow(Win); - exit(0); - - glutSwapBuffers(); -} - - -static void -Reshape(int width, int height) -{ - glViewport(0, 0, width, height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(0, 1, 0, 1, -1, 1); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0, 0.0, 0.0); -} - - -static void -Key(unsigned char key, int x, int y) -{ - (void) x; - (void) y; - switch (key) { - case 27: - glutDestroyWindow(Win); - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void -Init(void) -{ -} - - -int -main(int argc, char *argv[]) -{ - glutInit(&argc, argv); - glutInitWindowPosition(0, 0); - glutInitWindowSize(400, 400); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); - Win = glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/glutfx.c b/progs/tests/glutfx.c deleted file mode 100644 index 8bf5582389..0000000000 --- a/progs/tests/glutfx.c +++ /dev/null @@ -1,189 +0,0 @@ - -/* - * Example of how one might use GLUT with the 3Dfx driver in full-screen mode. - * Note: this only works with X since we're using Mesa's GLX "hack" for - * using Glide. - * - * Goals: - * easy setup and input event handling with GLUT - * use 3Dfx hardware - * automatically set MESA environment variables - * don't lose mouse input focus - * - * Brian Paul This file is in the public domain. - */ - - -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glut.h> - - -#define WIDTH 640 -#define HEIGHT 480 - - -static int Window = 0; -static int ScreenWidth, ScreenHeight; -static GLuint Torus = 0; -static GLfloat Xrot = 0.0, Yrot = 0.0; - - - -static void Display( void ) -{ - static GLfloat blue[4] = {0.2, 0.2, 1.0, 1.0}; - static GLfloat red[4] = {1.0, 0.2, 0.2, 1.0}; - static GLfloat green[4] = {0.2, 1.0, 0.2, 1.0}; - - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - glPushMatrix(); - glRotatef(Xrot, 1, 0, 0); - glRotatef(Yrot, 0, 1, 0); - - glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, blue); - glCallList(Torus); - - glRotatef(90.0, 1, 0, 0); - glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, red); - glCallList(Torus); - - glRotatef(90.0, 0, 1, 0); - glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, green); - glCallList(Torus); - - glPopMatrix(); - - glutSwapBuffers(); -} - - -static void Reshape( int width, int height ) -{ - float ratio = (float) width / (float) height; - - ScreenWidth = width; - ScreenHeight = height; - - /* - * The 3Dfx driver is limited to 640 x 480 but the X window may be larger. - * Enforce that here. - */ - if (width > WIDTH) - width = WIDTH; - if (height > HEIGHT) - height = HEIGHT; - - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -ratio, ratio, -1.0, 1.0, 5.0, 30.0 ); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - glTranslatef( 0.0, 0.0, -20.0 ); -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - glutDestroyWindow(Window); - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void SpecialKey( int key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case GLUT_KEY_UP: - break; - case GLUT_KEY_DOWN: - break; - case GLUT_KEY_LEFT: - break; - case GLUT_KEY_RIGHT: - break; - } - glutPostRedisplay(); -} - - -static void MouseMove( int x, int y ) -{ - Xrot = y - ScreenWidth / 2; - Yrot = x - ScreenHeight / 2; - glutPostRedisplay(); -} - - -static void Init( void ) -{ - Torus = glGenLists(1); - glNewList(Torus, GL_COMPILE); - glutSolidTorus(0.5, 2.0, 10, 20); - glEndList(); - - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - - glEnable(GL_DEPTH_TEST); - glEnable(GL_CULL_FACE); -} - - -int main( int argc, char *argv[] ) -{ -#ifndef _WIN32 - printf("NOTE: if you've got 3Dfx VooDoo hardware you must run this"); - printf(" program as root.\n\n"); - printf("Move the mouse. Press ESC to exit.\n\n"); -#endif - - /* Tell Mesa GLX to use 3Dfx driver in fullscreen mode. */ - putenv("MESA_GLX_FX=fullscreen"); - - /* Disable 3Dfx Glide splash screen */ - putenv("FX_GLIDE_NO_SPLASH="); - - /* Give an initial size and position so user doesn't have to place window */ - glutInitWindowPosition(0, 0); - glutInitWindowSize(WIDTH, HEIGHT); - glutInit( &argc, argv ); - - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH ); - - Window = glutCreateWindow(argv[0]); - if (!Window) { - printf("Error, couldn't open window\n"); - exit(1); - } - - /* - * Want the X window to fill the screen so that we don't have to - * worry about losing the mouse input focus. - * Note that we won't actually see the X window since we never draw - * to it, hence, the original X screen's contents aren't disturbed. - */ - glutFullScreen(); - - Init(); - - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutSpecialFunc( SpecialKey ); - glutDisplayFunc( Display ); - glutPassiveMotionFunc( MouseMove ); - - glutMainLoop(); - return 0; -} diff --git a/progs/tests/interleave.c b/progs/tests/interleave.c deleted file mode 100644 index acf67d02c1..0000000000 --- a/progs/tests/interleave.c +++ /dev/null @@ -1,408 +0,0 @@ -/* - * (C) Copyright IBM Corporation 2005 - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * on the rights to use, copy, modify, merge, publish, distribute, sub - * license, and/or sell copies of the Software, and to permit persons to whom - * the Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL - * VA LINUX SYSTEM, IBM AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - * USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/** - * \file interleave.c - * - * Simple test of glInterleavedArrays functionality. For each mode, two - * meshes are drawn. One is drawn using interleaved arrays and the othe is - * drawn using immediate mode. Both should look identical. - * - * \author Ian Romanick <idr@us.ibm.com> - */ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <time.h> -#include <GL/glew.h> -#include <GL/glut.h> - -static int Width = 400; -static int Height = 300; -static const GLfloat Near = 5.0, Far = 25.0; - -static const GLfloat t[][4] = { - { 0.5, 0.0, 0.0, 1.0 }, - - { 0.25, 0.5, 0.0, 1.0 }, - { 0.75, 0.5, 0.0, 1.0 }, - - { 0.0, 1.0, 0.0, 1.0 }, - { 0.5, 1.0, 0.0, 1.0 }, - { 1.0, 1.0, 0.0, 1.0 }, -}; - -static const GLfloat c_f[][4] = { - { 1.0, 0.0, 0.0, 1.0 }, - - { 0.0, 1.0, 0.0, 1.0 }, - { 0.0, 1.0, 0.0, 1.0 }, - - { 0.0, 0.0, 1.0, 1.0 }, - { 1.0, 0.0, 1.0, 1.0 }, - { 0.0, 0.0, 1.0, 1.0 }, -}; - -static const GLubyte c_ub[][4] = { - { 0xff, 0x00, 0x00, 0xff }, - - { 0x00, 0xff, 0x00, 0xff }, - { 0x00, 0xff, 0x00, 0xff }, - - { 0x00, 0x00, 0xff, 0xff }, - { 0xff, 0x00, 0xff, 0xff }, - { 0x00, 0x00, 0xff, 0xff }, -}; - -static const GLfloat n[][3] = { - { 0.0, 0.0, -1.0 }, - - { 0.0, 0.0, -1.0 }, - { 0.0, 0.0, -1.0 }, - - { 0.0, 0.0, -1.0 }, - { 0.0, 0.0, -1.0 }, - { 0.0, 0.0, -1.0 }, -}; - -static const GLfloat v[][4] = { - { 0.0, 1.0, 0.0, 1.0, }, - - { -0.5, 0.0, 0.0, 1.0, }, - { 0.5, 0.0, 0.0, 1.0, }, - - { -1.0, -1.0, 0.0, 1.0, }, - { 0.0, -1.0, 0.0, 1.0, }, - { 1.0, -1.0, 0.0, 1.0, }, -}; - -static const unsigned indicies[12] = { - 0, 1, 2, - 1, 3, 4, - 2, 4, 5, - 1, 4, 2 -}; - -#define NONE { NULL, 0, 0, 0, sizeof( NULL ) } -#define V2F { v, 2, 2 * sizeof( GLfloat ), GL_FLOAT, sizeof( v[0] ) } -#define V3F { v, 3, 3 * sizeof( GLfloat ), GL_FLOAT, sizeof( v[0] ) } -#define V4F { v, 4, 4 * sizeof( GLfloat ), GL_FLOAT, sizeof( v[0] ) } - -#define C4UB { c_ub, 4, 4 * sizeof( GLubyte ), GL_UNSIGNED_BYTE, sizeof( c_ub[0] ) } -#define C3F { c_f, 3, 3 * sizeof( GLfloat ), GL_FLOAT, sizeof( c_f[0] ) } -#define C4F { c_f, 4, 4 * sizeof( GLfloat ), GL_FLOAT, sizeof( c_f[0] ) } - -#define T2F { t, 2, 2 * sizeof( GLfloat ), GL_FLOAT, sizeof( t[0] ) } -#define T4F { t, 4, 4 * sizeof( GLfloat ), GL_FLOAT, sizeof( t[0] ) } - -#define N3F { n, 3, 3 * sizeof( GLfloat ), GL_FLOAT, sizeof( n[0] ) } - -struct interleave_info { - const void * data; - unsigned count; - unsigned size; - GLenum type; - unsigned stride; -}; - -#define NUM_MODES 14 -#define INVALID_MODE 14 -#define INVALID_STRIDE 15 - -struct interleave_info info[ NUM_MODES ][4] = { - { NONE, NONE, NONE, V2F }, - { NONE, NONE, NONE, V3F }, - { NONE, C4UB, NONE, V2F }, - { NONE, C4UB, NONE, V3F }, - { NONE, C3F, NONE, V3F }, - - { NONE, NONE, N3F, V3F }, - { NONE, C4F, N3F, V3F }, - - { T2F, NONE, NONE, V3F }, - { T4F, NONE, NONE, V4F }, - - { T2F, C4UB, NONE, V3F }, - { T2F, C3F, NONE, V3F }, - { T2F, NONE, N3F, V3F }, - { T2F, C4F, N3F, V3F }, - { T4F, C4F, N3F, V4F }, -}; - -const char * const mode_names[ NUM_MODES ] = { - "GL_V2F", - "GL_V3F", - "GL_C4UB_V2F", - "GL_C4UB_V3F", - "GL_C3F_V3F", - "GL_N3F_V3F", - "GL_C4F_N3F_V3F", - "GL_T2F_V3F", - "GL_T4F_V4F", - "GL_T2F_C4UB_V3F", - "GL_T2F_C3F_V3F", - "GL_T2F_N3F_V3F", - "GL_T2F_C4F_N3F_V3F", - "GL_T4F_C4F_N3F_V4F", -}; - -static unsigned interleave_mode = 0; -static GLboolean use_invalid_mode = GL_FALSE; -static GLboolean use_invalid_stride = GL_FALSE; - -#define DEREF(item,idx) (void *) & ((char *)curr_info[item].data)[idx * curr_info[item].stride] - -static void Display( void ) -{ - const struct interleave_info * const curr_info = info[ interleave_mode ]; - - /* 4 floats for 12 verticies for 4 data elements. - */ - char data[ (sizeof( GLfloat ) * 4) * 12 * 4 ]; - - unsigned i; - unsigned offset; - GLenum err; - GLenum format; - GLsizei stride; - - - glClearColor(0.2, 0.2, 0.8, 0); - glClear( GL_COLOR_BUFFER_BIT ); - - glPushMatrix(); - - glTranslatef(-1.5, 0, 0); - - glColor3fv( c_f[0] ); - - if ( curr_info[0].data != NULL ) { - glEnable( GL_TEXTURE_2D ); - } - else { - glDisable( GL_TEXTURE_2D ); - } - - - offset = 0; - glBegin(GL_TRIANGLES); - for ( i = 0 ; i < 12 ; i++ ) { - const unsigned index = indicies[i]; - - - /* Handle the vertex texture coordinate. - */ - if ( curr_info[0].data != NULL ) { - if ( curr_info[0].count == 2 ) { - glTexCoord2fv( DEREF(0, index) ); - } - else { - glTexCoord4fv( DEREF(0, index) ); - } - - (void) memcpy( & data[ offset ], DEREF(0, index), - curr_info[0].size ); - offset += curr_info[0].size; - } - - - /* Handle the vertex color. - */ - if ( curr_info[1].data != NULL ) { - if ( curr_info[1].type == GL_FLOAT ) { - if ( curr_info[1].count == 3 ) { - glColor3fv( DEREF(1, index) ); - } - else { - glColor4fv( DEREF(1, index) ); - } - } - else { - glColor4ubv( DEREF(1, index) ); - } - - (void) memcpy( & data[ offset ], DEREF(1, index), - curr_info[1].size ); - offset += curr_info[1].size; - } - - - /* Handle the vertex normal. - */ - if ( curr_info[2].data != NULL ) { - glNormal3fv( DEREF(2, index) ); - - (void) memcpy( & data[ offset ], DEREF(2, index), - curr_info[2].size ); - offset += curr_info[2].size; - } - - - switch( curr_info[3].count ) { - case 2: - glVertex2fv( DEREF(3, index) ); - break; - case 3: - glVertex3fv( DEREF(3, index) ); - break; - case 4: - glVertex4fv( DEREF(3, index) ); - break; - } - - (void) memcpy( & data[ offset ], DEREF(3, index), - curr_info[3].size ); - offset += curr_info[3].size; - } - glEnd(); - - - glTranslatef(3.0, 0, 0); - - /* The masking with ~0x2A00 is a bit of a hack to make sure that format - * ends up with an invalid value no matter what rand() returns. - */ - format = (use_invalid_mode) - ? (rand() & ~0x2A00) : GL_V2F + interleave_mode; - stride = (use_invalid_stride) ? -abs(rand()) : 0; - - (void) glGetError(); - glInterleavedArrays( format, stride, data ); - err = glGetError(); - if ( err ) { - printf("glInterleavedArrays(0x%04x, %d, %p) generated the error 0x%04x\n", - format, stride, data, err ); - } - else { - glDrawArrays( GL_TRIANGLES, 0, 12 ); - } - - glPopMatrix(); - - glutSwapBuffers(); -} - - -static void Reshape( int width, int height ) -{ - GLfloat ar = (float) width / (float) height; - Width = width; - Height = height; - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -ar, ar, -1.0, 1.0, Near, Far ); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - glTranslatef( 0.0, 0.0, -15.0 ); -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void ModeMenu( int entry ) -{ - if ( entry == INVALID_MODE ) { - use_invalid_mode = GL_TRUE; - use_invalid_stride = GL_FALSE; - } - else if ( entry == INVALID_STRIDE ) { - use_invalid_mode = GL_FALSE; - use_invalid_stride = GL_TRUE; - } - else { - use_invalid_mode = GL_FALSE; - use_invalid_stride = GL_FALSE; - interleave_mode = entry; - } -} - -static void Init( void ) -{ - const char * const ver_string = (const char * const) - glGetString( GL_VERSION ); - const GLubyte tex[16] = { - 0xff, 0x00, 0xff, 0x00, - 0x00, 0xff, 0x00, 0xff, - 0xff, 0x00, 0xff, 0x00, - 0x00, 0xff, 0x00, 0xff, - }; - - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - printf("GL_VERSION = %s\n", ver_string); - - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST ); - glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE ); - glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 0, - GL_LUMINANCE, GL_UNSIGNED_BYTE, tex ); - - printf("Use the context menu (right click) to select the interleaved array mode.\n"); - printf("Press ESCAPE to exit.\n\n"); - printf("NOTE: This is *NOT* a very good test of the modes that use normals.\n"); -} - - -int main( int argc, char *argv[] ) -{ - unsigned i; - - srand( time( NULL ) ); - - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( Width, Height ); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE ); - glutCreateWindow( "glInterleavedArrays test" ); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - - glutCreateMenu( ModeMenu ); - for ( i = 0 ; i < NUM_MODES ; i++ ) { - glutAddMenuEntry( mode_names[i], i); - } - - glutAddMenuEntry( "Random invalid mode", INVALID_MODE); - glutAddMenuEntry( "Random invalid stride", INVALID_STRIDE); - - glutAttachMenu(GLUT_RIGHT_BUTTON); - - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/invert.c b/progs/tests/invert.c deleted file mode 100644 index 45001b44d0..0000000000 --- a/progs/tests/invert.c +++ /dev/null @@ -1,197 +0,0 @@ -/* - * (C) Copyright IBM Corporation 2005 - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * on the rights to use, copy, modify, merge, publish, distribute, sub - * license, and/or sell copies of the Software, and to permit persons to whom - * the Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL - * VA LINUX SYSTEM, IBM AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - * USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/** - * \file invert.c - * - * Simple test of GL_MESA_pack_invert functionality. Three squares are - * drawn. The first two should look the same, and the third one should - * look inverted. - * - * \author Ian Romanick <idr@us.ibm.com> - */ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <GL/glew.h> -#include <GL/glut.h> - -#include "readtex.h" - -#define IMAGE_FILE "../images/tree3.rgb" - -static int Width = 420; -static int Height = 150; -static const GLfloat Near = 5.0, Far = 25.0; - -static GLubyte * image = NULL; -static GLubyte * temp_image = NULL; -static GLuint img_width = 0; -static GLuint img_height = 0; -static GLuint img_format = 0; - -PFNGLWINDOWPOS2IPROC win_pos_2i = NULL; - - -static void Display( void ) -{ - GLint err; - - - glClearColor(0.2, 0.2, 0.8, 0); - glClear( GL_COLOR_BUFFER_BIT ); - - - /* This is the "reference" square. - */ - - (*win_pos_2i)( 5, 5 ); - glDrawPixels( img_width, img_height, img_format, GL_UNSIGNED_BYTE, image ); - - glPixelStorei( GL_PACK_INVERT_MESA, GL_FALSE ); - err = glGetError(); - if ( err != GL_NO_ERROR ) { - printf( "Setting PACK_INVERT_MESA to false generated an error (0x%04x).\n", - err ); - } - - glReadPixels( 5, 5, img_width, img_height, img_format, GL_UNSIGNED_BYTE, temp_image ); - (*win_pos_2i)( 5 + 1 * (10 + img_width), 5 ); - glDrawPixels( img_width, img_height, img_format, GL_UNSIGNED_BYTE, temp_image ); - - glPixelStorei( GL_PACK_INVERT_MESA, GL_TRUE ); - err = glGetError(); - if ( err != GL_NO_ERROR ) { - printf( "Setting PACK_INVERT_MESA to true generated an error (0x%04x).\n", - err ); - } - - glReadPixels( 5, 5, img_width, img_height, img_format, GL_UNSIGNED_BYTE, temp_image ); - (*win_pos_2i)( 5 + 2 * (10 + img_width), 5 ); - glDrawPixels( img_width, img_height, img_format, GL_UNSIGNED_BYTE, temp_image ); - - glutSwapBuffers(); -} - - -static void Reshape( int width, int height ) -{ - GLfloat ar = (float) width / (float) height; - Width = width; - Height = height; - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -ar, ar, -1.0, 1.0, Near, Far ); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - glTranslatef( 0.0, 0.0, -15.0 ); -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void Init( void ) -{ - const char * const ver_string = (const char * const) - glGetString( GL_VERSION ); - const float ver = strtod( ver_string, NULL ); - - - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - printf("GL_VERSION = %s\n", ver_string); - - if ( !glutExtensionSupported("GL_MESA_pack_invert") ) { - printf("\nSorry, this program requires GL_MESA_pack_invert.\n"); - exit(1); - } - - if ( ver >= 1.4 ) { - win_pos_2i = (PFNGLWINDOWPOS2IPROC) glutGetProcAddress( "glWindowPos2i" ); - } - else if ( glutExtensionSupported("GL_ARB_window_pos") ) { - win_pos_2i = (PFNGLWINDOWPOS2IPROC) glutGetProcAddress( "glWindowPos2iARB" ); - } - else if ( glutExtensionSupported("GL_MESA_window_pos") ) { - win_pos_2i = (PFNGLWINDOWPOS2IPROC) glutGetProcAddress( "glWindowPos2iMESA" ); - } - - - /* Do this check as a separate if-statement instead of as an else in case - * one of the required extensions is supported but glutGetProcAddress - * returns NULL. - */ - - if ( win_pos_2i == NULL ) { - printf("\nSorry, this program requires either GL 1.4 (or higher),\n" - "GL_ARB_window_pos, or GL_MESA_window_pos.\n"); - exit(1); - } - - printf("\nThe left 2 squares should be the same color, and the right\n" - "square should look upside-down.\n"); - - - image = LoadRGBImage( IMAGE_FILE, (GLint *) & img_width, (GLint *) & img_height, - & img_format ); - if ( image == NULL ) { - printf( "Could not open image file \"%s\".\n", IMAGE_FILE ); - exit(1); - } - - temp_image = malloc( 3 * img_height * img_width ); - if ( temp_image == NULL ) { - printf( "Could not allocate memory for temporary image.\n" ); - exit(1); - } -} - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( Width, Height ); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE ); - glutCreateWindow( "GL_MESA_pack_invert test" ); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/jkrahntest.c b/progs/tests/jkrahntest.c deleted file mode 100644 index 3fef105fc2..0000000000 --- a/progs/tests/jkrahntest.c +++ /dev/null @@ -1,180 +0,0 @@ - -/* This is a good test for glXSwapBuffers on non-current windows, - * and the glXCopyContext function. Fixed several Mesa/DRI bugs with - * this program on 15 June 2002. - * - * Joe's comments follow: - * - * I have tried some different approaches for being able to - * draw to multiple windows using one context, or a copied - * context. Mesa/indirect rendering works to use one context - * for multiple windows, but crashes with glXCopyContext. - * DRI is badly broken, at least for ATI. - * - * I also noticed that glXMakeCurrent allows a window and context - * from different visuals to be attached (haven't tested recently). - * - * Joe Krahn <jkrahn@nc.rr.com> - */ - -#include <GL/glx.h> -#include <GL/gl.h> -#include <string.h> -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> -#include <math.h> - -#ifndef M_PI -#define M_PI 3.14159 -#endif - -#define DEGTOR (M_PI/180.0) - -static int AttributeList[] = { GLX_RGBA, GLX_DOUBLEBUFFER, None }; - -int main(int argc, char **argv) -{ - Window win1, win2; - XVisualInfo *vi; - XSetWindowAttributes swa; - Display *dpy; - GLXContext ctx1, ctx2; - float angle; - int test; - - if (argc < 2) { - fprintf(stderr, "This program tests GLX context switching.\n"); - fprintf(stderr, "Usage: jkrahntest <n>\n"); - fprintf(stderr, "Where n is:\n"); - fprintf(stderr, "\t1) Use two contexts and swap only when the context is current (typical case).\n"); - fprintf(stderr, "\t2) Use two contexts and swap at the same time.\n"); - fprintf(stderr, "\t\t Used to crash Mesa & nVidia, and DRI artifacts. Seems OK now.\n"); - fprintf(stderr, "\t3) Use one context, but only swap when a context is current.\n"); - fprintf(stderr, "\t\t Serious artifacts for DRI at least with ATI.\n"); - fprintf(stderr, "\t4) Use one context, swap both windows at the same time, so the left\n"); - fprintf(stderr, "\t\t window has no context at swap time. Severe artifacts for DRI.\n"); - fprintf(stderr, "\t5) Use two contexts, copying one to the other when switching windows.\n"); - fprintf(stderr, "\t\t DRI gives an error, indirect rendering crashes server.\n"); - - exit(1); - } - test = atoi(argv[1]); - - /* get a connection */ - dpy = XOpenDisplay(NULL); - - /* Get an appropriate visual */ - vi = glXChooseVisual(dpy, DefaultScreen(dpy), AttributeList); - if (vi == 0) { - fprintf(stderr, "No matching visuals found.\n"); - exit(-1); - } - - /* Create two GLX contexts, with list sharing */ - ctx1 = glXCreateContext(dpy, vi, 0, True); - ctx2 = glXCreateContext(dpy, vi, ctx1, True); - - /* create a colormap */ - swa.colormap = XCreateColormap(dpy, RootWindow(dpy, vi->screen), - vi->visual, AllocNone); - swa.border_pixel = 0; - - /* Create two windows */ - win1 = XCreateWindow(dpy, RootWindow(dpy, vi->screen), - 10, 10, 200, 200, - 0, vi->depth, InputOutput, vi->visual, - CWBorderPixel | CWColormap, &swa); - XStoreName(dpy, win1, "Test [L]"); - XMapWindow(dpy, win1); - XMoveWindow(dpy, win1, 10, 10); /* Initial requested x,y may not be honored */ - { - XSizeHints sizehints; - static const char *name = "window"; - sizehints.x = 10; - sizehints.y = 10; - sizehints.width = 200; - sizehints.height = 200; - sizehints.flags = USSize | USPosition; - XSetNormalHints(dpy, win1, &sizehints); - XSetStandardProperties(dpy, win1, name, name, - None, (char **)NULL, 0, &sizehints); - } - - - win2 = XCreateWindow(dpy, RootWindow(dpy, vi->screen), - 250, 10, 200, 200, - 0, vi->depth, InputOutput, vi->visual, - CWBorderPixel | CWColormap, &swa); - XStoreName(dpy, win1, "Test [R]"); - XMapWindow(dpy, win2); - XMoveWindow(dpy, win2, 260, 10); - { - XSizeHints sizehints; - static const char *name = "window"; - sizehints.x = 10; - sizehints.y = 10; - sizehints.width = 200; - sizehints.height = 200; - sizehints.flags = USSize | USPosition; - XSetNormalHints(dpy, win2, &sizehints); - XSetStandardProperties(dpy, win2, name, name, - None, (char **)NULL, 0, &sizehints); - } - - - /* Now draw some spinning things */ - for (angle = 0; angle < 360*4; angle += 10.0) { - /* Connect the context to window 1 */ - glXMakeCurrent(dpy, win1, ctx1); - - /* Clear and draw in window 1 */ - glDrawBuffer(GL_BACK); - glClearColor(1, 1, 0, 1); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glColor3f(1, 0, 0); - glBegin(GL_TRIANGLES); - glVertex2f(0, 0); - glVertex2f(cos(angle * DEGTOR), sin(angle * DEGTOR)); - glVertex2f(cos((angle + 20.0) * DEGTOR), - sin((angle + 20.0) * DEGTOR)); - glEnd(); - glFlush(); - - if (test == 1 || test == 3 || test == 5) - glXSwapBuffers(dpy, win1); - - if (test == 5) - glXCopyContext(dpy, ctx1, ctx2, GL_ALL_ATTRIB_BITS); - /* Connect the context to window 2 */ - if (test == 3 || test == 4) { - glXMakeCurrent(dpy, win2, ctx1); - } else { - glXMakeCurrent(dpy, win2, ctx2); - } - - /* Clear and draw in window 2 */ - glDrawBuffer(GL_BACK); - glClearColor(0, 0, 1, 1); - glClear(GL_COLOR_BUFFER_BIT); - glColor3f(1, 1, 0); - glBegin(GL_TRIANGLES); - glVertex2f(0, 0); - glVertex2f(cos(angle * DEGTOR), sin(angle * DEGTOR)); - glVertex2f(cos((angle + 20.0) * DEGTOR), - sin((angle + 20.0) * DEGTOR)); - glEnd(); - glFlush(); - - /* Swap buffers */ - if (test == 2 || test == 4) - glXSwapBuffers(dpy, win1); - glXSwapBuffers(dpy, win2); - - /* wait a while */ - glXWaitX(); - usleep(20000); - } - - return 0; -} diff --git a/progs/tests/lineclip.c b/progs/tests/lineclip.c deleted file mode 100644 index bb688c04a5..0000000000 --- a/progs/tests/lineclip.c +++ /dev/null @@ -1,177 +0,0 @@ -/* - * Copyright © 2008 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - * - * Authors: - * Eric Anholt <eric@anholt.net> - * - */ - -#include <stdlib.h> -#include <GL/glew.h> -#include <GL/glut.h> - -static int win_width, win_height; - -static void -line(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2) -{ - glBegin(GL_LINES); - glVertex2f(x1, y1); - glVertex2f(x2, y2); - glEnd(); -} - -static void -line3(GLfloat x1, GLfloat y1, GLfloat z1, GLfloat x2, GLfloat y2, GLfloat z2) -{ - glBegin(GL_LINES); - glVertex3f(x1, y1, z1); - glVertex3f(x2, y2, z2); - glEnd(); -} - -static void -display(void) -{ - glClearColor(0.0, 0.0, 0.0, 0.0); - glClear(GL_COLOR_BUFFER_BIT); - - glColor3f(1.0, 0.0, 0.0); - /* 2 lines clipped along xmin */ - line(-20, win_height / 2 - 20, - 20, win_height / 2 - 20); - line( 20, win_height / 2 + 20, - -20, win_height / 2 + 20); - - glColor3f(0.0, 1.0, 0.0); - /* 2 lines clipped along ymax */ - line(win_width / 2 - 20, win_height + 20, - win_width / 2 - 20, win_height - 20); - line(win_width / 2 + 20, win_height - 20, - win_width / 2 + 20, win_height + 20); - - glColor3f(0.0, 0.0, 1.0); - /* 2 lines clipped along xmax */ - line(win_width - 20, win_height / 2 - 20, - win_width + 20, win_height / 2 - 20); - line(win_width + 20, win_height / 2 + 20, - win_width - 20, win_height / 2 + 20); - - glColor3f(1.0, 1.0, 1.0); - /* 2 lines clipped along ymin */ - line(win_width / 2 - 20, 20, - win_width / 2 - 20, -20); - line(win_width / 2 + 20, -20, - win_width / 2 + 20, 20); - - /* 2 lines clipped along near */ - glColor3f(1.0, 0.0, 1.0); - line3(win_width / 2 - 20 - 20, win_height / 2, 0.5, - win_width / 2 - 20 + 20, win_height / 2, -0.5); - line3(win_width / 2 - 20, win_height / 2 - 20, -0.5, - win_width / 2 - 20, win_height / 2 + 20, 0.5); - - /* 2 lines clipped along far */ - glColor3f(0.0, 1.0, 1.0); - line3(win_width / 2 + 20 - 20, win_height / 2, 1.5, - win_width / 2 + 20 + 20, win_height / 2, 0.5); - line3(win_width / 2 + 20, win_height / 2 - 20, 0.5, - win_width / 2 + 20, win_height / 2 + 20, 1.5); - - /* entirely clipped along near/far */ - glColor3f(.5, .5, .5); - line3(win_width / 2, win_height / 2 - 20, -0.5, - win_width / 2, win_height / 2 + 20, -0.5); - glColor3f(.5, .5, .5); - line3(win_width / 2, win_height / 2 - 20, 1.5, - win_width / 2, win_height / 2 + 20, 1.5); - - glColor3f(1.0, 1.0, 0.0); - /* lines clipped along both x and y limits */ - line(-5, 20, - 20, -5); /* xmin, ymin */ - line(-5, win_height - 20, - 20, win_height + 5); /* xmin, ymax */ - line(win_width - 20, -5, - win_width + 5, 20); /* xmax, ymin */ - line(win_width - 20, win_height + 5, - win_width + 5, win_height - 20); /* xmax, ymax */ - - glutSwapBuffers(); -} - -static void -reshape(int width, int height) -{ - win_width = width; - win_height = height; - glViewport(0, 0, width, height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(0, win_width, 0, win_height, 0.0, -1.0); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(.25, .25, 0); -} - -static void key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - - switch (key) { - case 27: /* esc */ - exit(0); - break; - } - - glutPostRedisplay(); -} - -static void -init(void) -{ -} - -int -main(int argc, char *argv[]) -{ - win_width = 200; - win_height = 200; - - glutInit(&argc, argv); - glutInitWindowPosition(0, 0); - glutInitWindowSize(win_width, win_height); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc(reshape); - glutKeyboardFunc(key); - glutDisplayFunc(display); - - init(); - - glutMainLoop(); - return 0; -} diff --git a/progs/tests/manytex.c b/progs/tests/manytex.c deleted file mode 100644 index 52e7e1de44..0000000000 --- a/progs/tests/manytex.c +++ /dev/null @@ -1,395 +0,0 @@ - -/* - * test handling of many texture maps - * Also tests texture priority and residency. - * - * Brian Paul - * August 2, 2000 - */ - - -#include <assert.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - - -static GLint NumTextures = 20; -static GLuint *TextureID = NULL; -static GLint *TextureWidth = NULL, *TextureHeight = NULL; -static GLboolean *TextureResidency = NULL; -static GLint TexWidth = 128, TexHeight = 128; -static GLfloat Zrot = 0; -static GLboolean Anim = GL_TRUE; -static GLint WinWidth = 500, WinHeight = 400; -static GLboolean MipMap = GL_FALSE; -static GLboolean LinearFilter = GL_FALSE; -static GLboolean RandomSize = GL_FALSE; -static GLint Rows, Columns; -static GLint LowPriorityCount = 0; -static GLint Win; - - -static void Idle( void ) -{ - Zrot += 1.0; - glutPostRedisplay(); -} - - -static void Display( void ) -{ - GLfloat spacing = WinWidth / Columns; - GLfloat size = spacing * 0.4; - GLint i; - - /* test residency */ - if (0) - { - GLboolean b; - GLint i, resident; - b = glAreTexturesResident(NumTextures, TextureID, TextureResidency); - if (b) { - printf("all resident\n"); - } - else { - resident = 0; - for (i = 0; i < NumTextures; i++) { - if (TextureResidency[i]) { - resident++; - } - } - printf("%d of %d texture resident\n", resident, NumTextures); - } - } - - /* render the textured quads */ - glClear( GL_COLOR_BUFFER_BIT ); - for (i = 0; i < NumTextures; i++) { - GLint row = i / Columns; - GLint col = i % Columns; - GLfloat x = col * spacing + spacing * 0.5; - GLfloat y = row * spacing + spacing * 0.5; - - GLfloat maxDim = (TextureWidth[i] > TextureHeight[i]) - ? TextureWidth[i] : TextureHeight[i]; - GLfloat w = TextureWidth[i] / maxDim; - GLfloat h = TextureHeight[i] / maxDim; - - glPushMatrix(); - glTranslatef(x, y, 0.0); - glRotatef(Zrot, 0, 0, 1); - glScalef(size, size, 1); - - glBindTexture(GL_TEXTURE_2D, TextureID[i]); - glBegin(GL_POLYGON); -#if 0 - glTexCoord2f(0, 0); glVertex2f(-1, -1); - glTexCoord2f(1, 0); glVertex2f( 1, -1); - glTexCoord2f(1, 1); glVertex2f( 1, 1); - glTexCoord2f(0, 1); glVertex2f(-1, 1); -#else - glTexCoord2f(0, 0); glVertex2f(-w, -h); - glTexCoord2f(1, 0); glVertex2f( w, -h); - glTexCoord2f(1, 1); glVertex2f( w, h); - glTexCoord2f(0, 1); glVertex2f(-w, h); -#endif - glEnd(); - glPopMatrix(); - } - - glutSwapBuffers(); -} - - -static void Reshape( int width, int height ) -{ - WinWidth = width; - WinHeight = height; - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glOrtho(0, width, 0, height, -1, 1); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); -} - - -/* - * Return a random int in [min, max]. - */ -static int RandomInt(int min, int max) -{ - int i = rand(); - int j = i % (max - min + 1); - return min + j; -} - - -static void DeleteTextures(void) -{ - glDeleteTextures(NumTextures, TextureID); - free(TextureID); - TextureID = NULL; -} - - - -static void Init( void ) -{ - GLint i; - - if (RandomSize) { - printf("Creating %d %s random-size textures, ", NumTextures, - MipMap ? "Mipmapped" : "non-Mipmapped"); - } - else { - printf("Creating %d %s %d x %d textures, ", NumTextures, - MipMap ? "Mipmapped" : "non-Mipmapped", - TexWidth, TexHeight); - } - - if (LinearFilter) { - printf("bilinear filtering\n"); - } - else { - printf("nearest filtering\n"); - } - - - /* compute number of rows and columns of rects */ - { - GLfloat area = (GLfloat) (WinWidth * WinHeight) / (GLfloat) NumTextures; - GLfloat edgeLen = sqrt(area); - - Columns = WinWidth / edgeLen; - Rows = (NumTextures + Columns - 1) / Columns; - printf("Rows: %d Cols: %d\n", Rows, Columns); - } - - - if (!TextureID) { - TextureID = (GLuint *) malloc(sizeof(GLuint) * NumTextures); - assert(TextureID); - glGenTextures(NumTextures, TextureID); - } - - if (!TextureResidency) { - TextureResidency = (GLboolean *) malloc(sizeof(GLboolean) * NumTextures); - assert(TextureResidency); - } - - if (!TextureWidth) { - TextureWidth = (GLint *) malloc(sizeof(GLint) * NumTextures); - assert(TextureWidth); - } - if (!TextureHeight) { - TextureHeight = (GLint *) malloc(sizeof(GLint) * NumTextures); - assert(TextureHeight); - } - - for (i = 0; i < NumTextures; i++) { - GLubyte color[4]; - GLubyte *texImage; - GLint j, row, col; - - row = i / Columns; - col = i % Columns; - - glBindTexture(GL_TEXTURE_2D, TextureID[i]); - - if (i < LowPriorityCount) - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_PRIORITY, 0.5F); - - if (RandomSize) { -#if 0 - int k = (glutGet(GLUT_ELAPSED_TIME) % 7) + 2; - TexWidth = 1 << k; - TexHeight = 1 << k; -#else - TexWidth = 1 << RandomInt(2, 7); - TexHeight = 1 << RandomInt(2, 7); - printf("Random size of %3d: %d x %d\n", i, TexWidth, TexHeight); -#endif - } - - TextureWidth[i] = TexWidth; - TextureHeight[i] = TexHeight; - - texImage = (GLubyte*) malloc(4 * TexWidth * TexHeight * sizeof(GLubyte)); - assert(texImage); - - /* determine texture color */ - color[0] = (GLint) (255.0 * ((float) col / (Columns - 1))); - color[1] = 127; - color[2] = (GLint) (255.0 * ((float) row / (Rows - 1))); - color[3] = 255; - - /* fill in solid-colored teximage */ - for (j = 0; j < TexWidth * TexHeight; j++) { - texImage[j*4+0] = color[0]; - texImage[j*4+1] = color[1]; - texImage[j*4+2] = color[2]; - texImage[j*4+3] = color[3]; - } - - if (MipMap) { - GLint level = 0; - GLint w = TexWidth, h = TexHeight; - while (1) { - glTexImage2D(GL_TEXTURE_2D, level, GL_RGBA, w, h, 0, - GL_RGBA, GL_UNSIGNED_BYTE, texImage); - if (w == 1 && h == 1) - break; - if (w > 1) - w /= 2; - if (h > 1) - h /= 2; - level++; - /*printf("%d: %d x %d\n", level, w, h);*/ - } - if (LinearFilter) { - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, - GL_LINEAR_MIPMAP_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - } - else { - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, - GL_NEAREST_MIPMAP_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - } - } - else { - /* Set corners to white */ - int k = 0; - texImage[k+0] = texImage[k+1] = texImage[k+2] = texImage[k+3] = 255; - k = (TexWidth - 1) * 4; - texImage[k+0] = texImage[k+1] = texImage[k+2] = texImage[k+3] = 255; - k = (TexWidth * TexHeight - TexWidth) * 4; - texImage[k+0] = texImage[k+1] = texImage[k+2] = texImage[k+3] = 255; - k = (TexWidth * TexHeight - 1) * 4; - texImage[k+0] = texImage[k+1] = texImage[k+2] = texImage[k+3] = 255; - - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, TexWidth, TexHeight, 0, - GL_RGBA, GL_UNSIGNED_BYTE, texImage); - if (LinearFilter) { - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - } - else { - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - } - } - - free(texImage); - } - - glEnable(GL_TEXTURE_2D); -} - - -static void Key( unsigned char key, int x, int y ) -{ - const GLfloat step = 3.0; - (void) x; - (void) y; - switch (key) { - case 'a': - Anim = !Anim; - if (Anim) - glutIdleFunc(Idle); - else - glutIdleFunc(NULL); - break; - case 's': - Idle(); - break; - case 'z': - Zrot -= step; - break; - case 'Z': - Zrot += step; - break; - case ' ': - DeleteTextures(); - Init(); - break; - case 27: - DeleteTextures(); - glutDestroyWindow(Win); - exit(0); - break; - } - glutPostRedisplay(); -} - - -int main( int argc, char *argv[] ) -{ - GLint i; - - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( WinWidth, WinHeight ); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE ); - Win = glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - if (Anim) - glutIdleFunc(Idle); - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-n") == 0) { - NumTextures = atoi(argv[i+1]); - if (NumTextures <= 0) { - printf("Error, bad number of textures\n"); - return 1; - } - i++; - } - else if (strcmp(argv[i], "-mipmap") == 0) { - MipMap = GL_TRUE; - } - else if (strcmp(argv[i], "-linear") == 0) { - LinearFilter = GL_TRUE; - } - else if (strcmp(argv[i], "-size") == 0) { - TexWidth = atoi(argv[i+1]); - TexHeight = atoi(argv[i+2]); - assert(TexWidth >= 1); - assert(TexHeight >= 1); - i += 2; - } - else if (strcmp(argv[i], "-randomsize") == 0) { - RandomSize = GL_TRUE; - } - else if (strcmp(argv[i], "-lowpri") == 0) { - LowPriorityCount = atoi(argv[i+1]); - i++; - } - else { - printf("Usage:\n"); - printf(" manytex [options]\n"); - printf("Options:\n"); - printf(" -n <number of texture objects>\n"); - printf(" -size <width> <height> - specify texture size\n"); - printf(" -randomsize - use random size textures\n"); - printf(" -mipmap - generate mipmaps\n"); - printf(" -linear - use linear filtering instead of nearest\n"); - printf(" -lowpri <n> - Set lower priority on <n> textures\n"); - return 0; - } - } - - Init(); - - glutMainLoop(); - - return 0; -} diff --git a/progs/tests/mapbufrange.c b/progs/tests/mapbufrange.c deleted file mode 100644 index 76e02dd406..0000000000 --- a/progs/tests/mapbufrange.c +++ /dev/null @@ -1,205 +0,0 @@ -/* - * Test glMapBuffer() and glMapBufferRange() - * - * Fill a VBO with vertex data to draw several colored quads. - * On each redraw, update the geometry for just one rect in the VBO. - * - * Brian Paul - * 4 March 2009 - */ - - -#include <assert.h> -#include <math.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <GL/glew.h> -#include <GL/glew.h> -#include <GL/glut.h> - -static GLuint Win; -static const GLuint NumRects = 10; -static GLuint BufferID; -static GLboolean Anim = GL_TRUE; -static GLboolean UseBufferRange = GL_FALSE; - - - -static const float RectData[] = { - /* vertex */ /* color */ - 0, -1, 0, 1, 0, 0, - 1, 0, 0, 1, 1, 0, - 0, 1, 0, 0, 1, 1, - -1, 0, 0, 1, 0, 1 -}; - - -/** - * The buffer contains vertex positions (float[3]) and colors (float[3]) - * for 'NumRects' quads. - * This function updates/rotates one quad in the buffer. - */ -static void -UpdateRect(int r, float angle) -{ - float *rect; - int i; - - assert(r < NumRects); - - glBindBufferARB(GL_ARRAY_BUFFER_ARB, BufferID); - if (UseBufferRange) { - GLintptr offset = r * sizeof(RectData); - GLsizeiptr length = sizeof(RectData); - GLbitfield access = GL_MAP_WRITE_BIT | GL_MAP_INVALIDATE_RANGE_BIT; - float *buf = (float *) glMapBufferRange(GL_ARRAY_BUFFER_ARB, - offset, length, access); - rect = buf; - } - else { - /* map whole buffer */ - float *buf = (float *) - glMapBufferARB(GL_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB); - rect = buf + r * 24; - } - - /* set rect verts/colors */ - memcpy(rect, RectData, sizeof(RectData)); - - /* loop over four verts, updating vertices */ - for (i = 0; i < 4; i++) { - float x = 0.2 * RectData[i*6+0]; - float y = 0.2 * RectData[i*6+1]; - float xpos = -2.5 + 0.5 * r; - float ypos = 0.0; - - /* translate and rotate vert */ - rect[i * 6 + 0] = xpos + x * cos(angle) + y * sin(angle); - rect[i * 6 + 1] = ypos + x * sin(angle) - y * cos(angle); - } - - glUnmapBufferARB(GL_ARRAY_BUFFER_ARB); -} - - -static void -LoadBuffer(void) -{ - static int frame = 0; - float angle = glutGet(GLUT_ELAPSED_TIME) * 0.001; - UpdateRect(frame % NumRects, angle); - frame++; -} - - -static void -Draw(void) -{ - glBindBufferARB(GL_ARRAY_BUFFER_ARB, BufferID); - glVertexPointer(3, GL_FLOAT, 24, 0); - glEnableClientState(GL_VERTEX_ARRAY); - - glColorPointer(3, GL_FLOAT, 24, (void*) 12); - glEnableClientState(GL_COLOR_ARRAY); - - glDrawArrays(GL_QUADS, 0, NumRects * 4); - - if (0) - glFinish(); -} - - -static void -Display(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - Draw(); - glutSwapBuffers(); -} - - -static void -Reshape(int width, int height) -{ - glViewport(0, 0, width, height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-3.0, 3.0, -1.0, 1.0, -1.0, 1.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - - -static void -Idle(void) -{ - LoadBuffer(); - glutPostRedisplay(); -} - - -static void -Key(unsigned char key, int x, int y) -{ - (void) x; - (void) y; - if (key == 'a') { - Anim = !Anim; - glutIdleFunc(Anim ? Idle : NULL); - } - else if (key == 's') { - LoadBuffer(); - } - else if (key == 27) { - glutDestroyWindow(Win); - exit(0); - } - glutPostRedisplay(); -} - - -static void -Init(void) -{ - GLuint BufferSize = NumRects * sizeof(RectData); - float *buf; - - if (!glutExtensionSupported("GL_ARB_vertex_buffer_object")) { - printf("GL_ARB_vertex_buffer_object not found!\n"); - exit(0); - } - - UseBufferRange = glutExtensionSupported("GL_ARB_map_buffer_range"); - printf("Use GL_ARB_map_buffer_range: %c\n", "NY"[UseBufferRange]); - - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - - /* initially load buffer with zeros */ - buf = (float *) calloc(1, BufferSize); - - glGenBuffersARB(1, &BufferID); - glBindBufferARB(GL_ARRAY_BUFFER_ARB, BufferID); - glBufferDataARB(GL_ARRAY_BUFFER_ARB, BufferSize, buf, GL_DYNAMIC_DRAW_ARB); - - free(buf); -} - - -int -main(int argc, char *argv[]) -{ - glutInit(&argc, argv); - glutInitWindowSize(800, 200); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); - Win = glutCreateWindow(argv[0]); - glewInit(); - glewInit(); - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Display); - glutIdleFunc(Anim ? Idle : NULL); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/mapvbo.c b/progs/tests/mapvbo.c deleted file mode 100644 index 52a22a5e79..0000000000 --- a/progs/tests/mapvbo.c +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Test glMapBuffer() call immediately after glDrawArrays(). - * See details below. - * - * NOTE: Do not use freeglut with this test! It calls the Display() - * callback twice right away instead of just once. - * - * Brian Paul - * 27 Feb 2009 - */ - - -#include <stdio.h> -#include <stdlib.h> -#include <GL/glew.h> -#include <GL/glut.h> - -static GLuint BufferID; - - -static GLuint Win; - - - - -/* - * Create VBO (position and color) and load with data. - */ -static void -SetupBuffers(void) -{ - static const GLfloat data[] = { - /* vertex */ /* color */ - 0, -1, 0, 1, 1, 0, - 1, 0, 0, 1, 1, 0, - 0, 1, 0, 1, 1, 0, - -1, 0, 0, 1, 1, 0 - }; - - glGenBuffersARB(1, &BufferID); - glBindBufferARB(GL_ARRAY_BUFFER_ARB, BufferID); - glBufferDataARB(GL_ARRAY_BUFFER_ARB, sizeof(data), data, - GL_STATIC_DRAW_ARB); -} - - -static void -Draw(void) -{ - static int count = 1; - - printf("Draw Frame %d\n", count); - count++; - - glBindBufferARB(GL_ARRAY_BUFFER_ARB, BufferID); - glVertexPointer(3, GL_FLOAT, 24, 0); - glEnableClientState(GL_VERTEX_ARRAY); - - glColorPointer(3, GL_FLOAT, 24, (void*) 12); - glEnableClientState(GL_COLOR_ARRAY); - - glDrawArrays(GL_TRIANGLE_FAN, 0, 4); - - if (0) - glFinish(); - - /* Immediately map the color buffer and change something. - * This should not effect the first glDrawArrays above, but the - * next time we draw we should see a black vertex. - */ - if (1) { - GLfloat *m = (GLfloat *) glMapBufferARB(GL_ARRAY_BUFFER_ARB, - GL_WRITE_ONLY_ARB); - m[3] = m[4] = m[5] = 0.0f; /* black vertex */ - glUnmapBufferARB(GL_ARRAY_BUFFER_ARB); - } -} - - -static void Display( void ) -{ - glClear( GL_COLOR_BUFFER_BIT ); - Draw(); - glutSwapBuffers(); -} - - -static void Reshape( int width, int height ) -{ - float ar = (float) width / (float) height; - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -ar, ar, -1.0, 1.0, 5.0, 25.0 ); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - glTranslatef( 0.0, 0.0, -15.0 ); -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - if (key == 27) { - glutDestroyWindow(Win); - exit(0); - } - glutPostRedisplay(); -} - - -static void Init( void ) -{ - if (!glutExtensionSupported("GL_ARB_vertex_buffer_object")) { - printf("GL_ARB_vertex_buffer_object not found!\n"); - exit(0); - } - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - - SetupBuffers(); -} - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 300, 300 ); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE ); - Win = glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/minmag.c b/progs/tests/minmag.c deleted file mode 100644 index 179be51120..0000000000 --- a/progs/tests/minmag.c +++ /dev/null @@ -1,199 +0,0 @@ -/* - * Test minification vs. magnification filtering. - * Draw two quads with different filtering modes: - * - * +--------------------------+ +--------------------------+ - * | MagFilter = GL_LINEAR | | MagFilter = GL_LINEAR | - * | MinFilter = GL_LINEAR | | MinFilter = GL_NEAREST | - * +--------------------------+ +--------------------------+ - * - * They should look different when the quad is smaller than the level 0 - * texture size (when minifying). - */ - -#include <assert.h> -#include <math.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <GL/glew.h> -#include <GL/glut.h> - - -static GLint Width = 1000, Height = 500; - - -static GLint TexWidth = 256, TexHeight = 256; -static GLfloat Zpos = 5; -static GLboolean MipMap = 0*GL_TRUE; -static GLboolean LinearFilter = GL_TRUE; - - -static void -redraw(void) -{ - GLfloat w = 1.0; - GLfloat h = 1.0; - - glClear( GL_COLOR_BUFFER_BIT ); - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - - glPushMatrix(); - glTranslatef(-1.5, 0, -Zpos); - glBegin(GL_POLYGON); - glTexCoord2f(0, 0); glVertex2f(-w, -h); - glTexCoord2f(1, 0); glVertex2f( w, -h); - glTexCoord2f(1, 1); glVertex2f( w, h); - glTexCoord2f(0, 1); glVertex2f(-w, h); - glEnd(); - glPopMatrix(); - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - - glPushMatrix(); - glTranslatef(1.5, 0, -Zpos); - glBegin(GL_POLYGON); - glTexCoord2f(0, 0); glVertex2f(-w, -h); - glTexCoord2f(1, 0); glVertex2f( w, -h); - glTexCoord2f(1, 1); glVertex2f( w, h); - glTexCoord2f(0, 1); glVertex2f(-w, h); - glEnd(); - glPopMatrix(); - - glutSwapBuffers(); -} - - -static void -init(void) -{ - GLubyte color[10][4] = { - { 0, 0, 0, 0 }, - { 1, 0, 0, 0 }, - { 0, 1, 0, 0 }, - { 0, 0, 1, 0 }, - { 0, 1, 1, 0 }, - { 1, 0, 1, 0 }, - { 1, 1, 0, 0 }, - { 1, 0, 0, 0 }, - { 0, 1, 0, 0 }, - { 0, 0, 1, 0 } - }; - GLubyte *texImage; - - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - printf("Left quad should be linear filtered and right should be nearest filtered.\n"); - printf("Press z/Z to change quad distance.\n"); - - texImage = (GLubyte*) malloc(4 * TexWidth * TexHeight * sizeof(GLubyte)); - assert(texImage); - - { - GLint level = 0; - GLint w = TexWidth, h = TexHeight; - while (1) { - int i, j; - - for (i = 0; i < h; i++) { - for (j = 0;j < w; j++) { - if (w==1 || h==1 || (((i / 2) ^ (j / 2)) & 1)) { - /*if (j < i) {*/ - texImage[(i*w+j) * 4 + 0] = 255; - texImage[(i*w+j) * 4 + 1] = 255; - texImage[(i*w+j) * 4 + 2] = 255; - texImage[(i*w+j) * 4 + 3] = 255; - } - else { - texImage[(i*w+j) * 4 + 0] = color[level][0] * 255; - texImage[(i*w+j) * 4 + 1] = color[level][1] * 255; - texImage[(i*w+j) * 4 + 2] = color[level][2] * 255; - texImage[(i*w+j) * 4 + 3] = color[level][3] * 255; - } - } - } - - glTexImage2D(GL_TEXTURE_2D, level, GL_RGBA8, w, h, 0, - GL_RGBA, GL_UNSIGNED_BYTE, texImage); - - printf("Texture level %d: %d x %d\n", level, w, h); - if (!MipMap) - break; - - if (w == 1 && h == 1) - break; - if (w > 1) - w /= 2; - if (h > 1) - h /= 2; - level++; - } - } - - free(texImage); - - glClearColor(0.25, 0.25, 0.25, 1.0); - glEnable(GL_TEXTURE_2D); - - glViewport(0, 0, Width, Height); -} - - - -static void -Reshape(int width, int height) -{ - float ar = (float) width /height; - Width = width; - Height = height; - glViewport(0, 0, width, height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-ar, ar, -1.0, 1.0, 5.0, 2500.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0, 0.0, -15.0); -} - - -static void -Key(unsigned char key, int x, int y) -{ - (void) x; - (void) y; - switch (key) { - case 'z': - Zpos--; - break; - case 'Z': - Zpos++; - break; - case 'f': - LinearFilter = !LinearFilter; - break; - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -int -main(int argc, char *argv[]) -{ - glutInit(&argc, argv); - glutInitWindowPosition(0, 0); - glutInitWindowSize(Width, Height); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(redraw); - init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/mipgen.c b/progs/tests/mipgen.c deleted file mode 100644 index 088f643215..0000000000 --- a/progs/tests/mipgen.c +++ /dev/null @@ -1,207 +0,0 @@ -/* Test GL_TEXTURE_BASE_LEVEL and GL_TEXTURE_MAX_LEVEL - * Brian Paul - * 10 May 2006 - */ - - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ - -#include <stdlib.h> -#include <stdio.h> -#include <GL/glew.h> -#include <GL/glut.h> - -#include "readtex.h" - - -static GLfloat LodBias = 6.0; /* make smallest miplevel visible */ -static GLuint texImage; - -#define WIDTH 2 -#define HEIGHT 2 - -static void -InitValues(void) -{ - LodBias = 6.0; /* make smallest miplevel visible */ -} - - -static void MakeImage(void) -{ - const GLubyte color0[4] = { 0xff, 0x80, 0x20, 0xff }; - const GLubyte color1[4] = { 0x10, 0x20, 0x40, 0xff }; - - GLubyte img[WIDTH*HEIGHT*3]; - int i, j; - for (i = 0; i < HEIGHT; i++) { - for (j = 0; j < WIDTH; j++) { - int k = (i * WIDTH + j) * 3; - int p = ((i+j)%2); - if (p == 0) { - img[k + 0] = color0[0]; - img[k + 1] = color0[1]; - img[k + 2] = color0[2]; - } - else { - img[k + 0] = color1[0]; - img[k + 1] = color1[1]; - img[k + 2] = color1[2]; - } - } - } - - glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP_SGIS, GL_TRUE); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, WIDTH, HEIGHT, 0, - GL_RGB, GL_UNSIGNED_BYTE, img); - glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP_SGIS, GL_FALSE); -} - - - -static void myinit(void) -{ - InitValues(); - - glShadeModel(GL_FLAT); - - glTranslatef(0.0, 0.0, -3.6); - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glGenTextures(1, &texImage); - glBindTexture(GL_TEXTURE_2D, texImage); - MakeImage(); - - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); - glEnable(GL_TEXTURE_2D); - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, 0); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 1); - - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_LOD, -1); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_LOD, 1); - - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, - GL_NEAREST_MIPMAP_NEAREST); -} - - - -static void display(void) -{ - GLfloat tcm = 1.0; - glBindTexture(GL_TEXTURE_2D, texImage); - - printf("Bias=%.2g\n", LodBias); - fflush(stdout); - - glTexEnvf(GL_TEXTURE_FILTER_CONTROL_EXT, GL_TEXTURE_LOD_BIAS_EXT, LodBias); - - glClear(GL_COLOR_BUFFER_BIT); - glBegin(GL_QUADS); - glTexCoord2f(0.0, 0.0); glVertex3f(-2.0, -1.0, 0.0); - glTexCoord2f(0.0, tcm); glVertex3f(-2.0, 1.0, 0.0); - glTexCoord2f(tcm * 3000.0, tcm); glVertex3f(3000.0, 1.0, -6000.0); - glTexCoord2f(tcm * 3000.0, 0.0); glVertex3f(3000.0, -1.0, -6000.0); - glEnd(); - glFlush(); -} - -static void myReshape(int w, int h) -{ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(60.0, 1.0*(GLfloat)w/(GLfloat)h, 1.0, 30000.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -static void -key(unsigned char k, int x, int y) -{ - (void) x; - (void) y; - switch (k) { - case 'l': - LodBias -= 0.25; - break; - case 'L': - LodBias += 0.25; - break; - case ' ': - InitValues(); - break; - case 27: /* Escape */ - exit(0); - break; - default: - return; - } - glutPostRedisplay(); -} - - -static void usage(void) -{ - printf("usage:\n"); - printf(" l/L decrease/increase GL_TEXTURE_LOD_BIAS\n"); - printf(" SPACE reset values\n"); -} - - -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB ); - glutInitWindowSize (600, 600); - glutCreateWindow (argv[0]); - glewInit(); - myinit(); - glutReshapeFunc (myReshape); - glutDisplayFunc(display); - glutKeyboardFunc(key); - usage(); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/progs/tests/mipmap_comp.c b/progs/tests/mipmap_comp.c deleted file mode 100644 index dd2232113b..0000000000 --- a/progs/tests/mipmap_comp.c +++ /dev/null @@ -1,301 +0,0 @@ -/* Copyright (c) Mark J. Kilgard, 1994. */ -/* - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ - -/* mipmap_comp - * Test compressed texture mipmaps - * - * Based on mipmap_limits - */ - -#include <string.h> -#include <stdlib.h> -#include <stdio.h> -#include <GL/glew.h> -#include <GL/glut.h> - -#include "readtex.h" - -#define SIZE 16 /* not larger then 16 */ - -static GLint BaseLevel = 0, MaxLevel = 9; -static GLfloat MinLod = -1, MaxLod = 9; -static GLfloat LodBias = 0.0; -static GLboolean NearestFilter = GL_TRUE; -static GLuint texImage; - - -static void -initValues(void) -{ - BaseLevel = 0; - MaxLevel = 9; - MinLod = -1; - MaxLod = 2; - LodBias = 5.0; - NearestFilter = GL_TRUE; -} - - -static void -makeImage(int level, int width, int height) -{ -#if 0 - GLubyte img[SIZE*SIZE*3]; - int i, j; - - (void)size; - for (i = 0; i < height; i++) { - for (j = 0; j < width; j++) { - int k = (i * width + j) * 3; - img[k + 0] = 255 * ((level + 1) % 2); - img[k + 1] = 255 * ((level + 1) % 2); - img[k + 2] = 255 * ((level + 1) % 2); - } - } - - glTexImage2D(GL_TEXTURE_2D, level, GL_COMPRESSED_RGB_S3TC_DXT1_EXT, width, height, 0, - GL_RGB, GL_UNSIGNED_BYTE, img); -#else - GLubyte img[128]; - GLint size[] = { - 128, /* 16x16 */ - 32, /* 8x8 */ - 8, /* 4x4 */ - 8, /* 2x2 */ - 8, /* 1x1 */ - }; - int i; - int value = ((level + 1) % 2) * 0xffffffff; - memset(img, 0, 128); - - /* generate black and white mipmap levels */ - if (value) - for (i = 0; i < size[level] / 4; i += 2) - ((int*)img)[i] = value; - - glCompressedTexImage2D(GL_TEXTURE_2D, level, - GL_COMPRESSED_RGB_S3TC_DXT1_EXT, - width, height, 0, - size[level], img); -#endif -} - - -static void -makeImages(void) -{ - int i, sz; - - for (i = 0, sz = SIZE; sz >= 1; i++, sz /= 2) { - makeImage(i, sz, sz); - printf("Level %d size: %d x %d\n", i, sz, sz); - } -} - - -static void -myInit(void) -{ - - initValues(); - - glEnable(GL_DEPTH_TEST); - glDepthFunc(GL_LESS); - glShadeModel(GL_FLAT); - - glTranslatef(0.0, 0.0, -3.6); - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glGenTextures(1, &texImage); - glBindTexture(GL_TEXTURE_2D, texImage); - makeImages(); - - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); - glEnable(GL_TEXTURE_2D); -} - - -static void -display(void) -{ - GLfloat tcm = 1.0; - glBindTexture(GL_TEXTURE_2D, texImage); - - printf("BASE_LEVEL=%d MAX_LEVEL=%d MIN_LOD=%.2g MAX_LOD=%.2g Bias=%.2g Filter=%s\n", - BaseLevel, MaxLevel, MinLod, MaxLod, LodBias, - NearestFilter ? "NEAREST" : "LINEAR"); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, BaseLevel); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, MaxLevel); - - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_LOD, MinLod); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_LOD, MaxLod); - - if (NearestFilter) { - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, - GL_NEAREST_MIPMAP_NEAREST); - } - else { - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, - GL_LINEAR_MIPMAP_LINEAR); - } - - glTexEnvf(GL_TEXTURE_FILTER_CONTROL_EXT, GL_TEXTURE_LOD_BIAS_EXT, LodBias); - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glBegin(GL_QUADS); - glTexCoord2f(0.0, 0.0); glVertex3f(-2.0, -1.0, 0.0); - glTexCoord2f(0.0, tcm); glVertex3f(-2.0, 1.0, 0.0); - glTexCoord2f(tcm * 3000.0, tcm); glVertex3f(3000.0, 1.0, -6000.0); - glTexCoord2f(tcm * 3000.0, 0.0); glVertex3f(3000.0, -1.0, -6000.0); - glEnd(); - glFlush(); -} - - -static void -myReshape(int w, int h) -{ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(60.0, 1.0*(GLfloat)w/(GLfloat)h, 1.0, 30000.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - - -static void -key(unsigned char k, int x, int y) -{ - (void) x; - (void) y; - switch (k) { - case 'b': - BaseLevel--; - if (BaseLevel < 0) - BaseLevel = 0; - break; - case 'B': - BaseLevel++; - if (BaseLevel > 10) - BaseLevel = 10; - break; - case 'm': - MaxLevel--; - if (MaxLevel < 0) - MaxLevel = 0; - break; - case 'M': - MaxLevel++; - if (MaxLevel > 10) - MaxLevel = 10; - break; - case 'l': - LodBias -= 0.25; - break; - case 'L': - LodBias += 0.25; - break; - case 'n': - MinLod -= 0.25; - break; - case 'N': - MinLod += 0.25; - break; - case 'x': - MaxLod -= 0.25; - break; - case 'X': - MaxLod += 0.25; - break; - case 'f': - NearestFilter = !NearestFilter; - break; - case ' ': - initValues(); - break; - case 27: /* Escape */ - exit(0); - break; - default: - return; - } - glutPostRedisplay(); -} - - -static void -usage(void) -{ - printf("usage:\n"); - printf(" b/B decrease/increase GL_TEXTURE_BASE_LEVEL\n"); - printf(" m/M decrease/increase GL_TEXTURE_MAX_LEVEL\n"); - printf(" n/N decrease/increase GL_TEXTURE_MIN_LOD\n"); - printf(" x/X decrease/increase GL_TEXTURE_MAX_LOD\n"); - printf(" l/L decrease/increase GL_TEXTURE_LOD_BIAS\n"); - printf(" f toggle nearest/linear filtering\n"); - printf(" SPACE reset values\n"); -} - - -int -main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); - glutInitWindowSize (600, 600); - glutCreateWindow (argv[0]); - glewInit(); - - if (!glutExtensionSupported("GL_EXT_texture_compression_s3tc")) { - fprintf(stderr, "This test requires GL_EXT_texture_compression_s3tc.\n"); - exit(1); - } - - myInit(); - glutReshapeFunc (myReshape); - glutDisplayFunc(display); - glutKeyboardFunc(key); - usage(); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/progs/tests/mipmap_comp_tests.c b/progs/tests/mipmap_comp_tests.c deleted file mode 100644 index e865b30ad0..0000000000 --- a/progs/tests/mipmap_comp_tests.c +++ /dev/null @@ -1,318 +0,0 @@ -/* Copyright (c) Mark J. Kilgard, 1994. */ -/* - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ - -/* mipmap_comp - * Test compressed texture mipmaps - * - * Based on mipmap_limits - */ - -#include <string.h> -#include <stdlib.h> -#include <stdio.h> -#include <GL/glew.h> -#include <GL/glut.h> - -#include "readtex.h" - -#define SIZE 16 /* not larger then 16 */ - -static GLint BaseLevel = 0, MaxLevel ; -static GLfloat MinLod, MaxLod; -static GLfloat LodBias; -static GLboolean NearestFilter; -static GLuint texImage; -static GLuint View; - -struct view { - GLfloat minLod; - GLfloat maxLod; - const char *string; -}; - -static struct view views[] = -{ - { 0, 0, "Green" }, - { 0, 1, "Green, Red" }, - { 0, 2, "Green, Red, Blue" }, - { 0, 3, "Green, Red, Blue, Black" }, - { 0, 4, "Green, Red, Blue, Black, White" }, - { 1, 4, "Red, Blue, Black, White" }, - { 2, 4, "Blue, Black, White" }, - { 3, 4, "Black, White" }, - { 4, 4, "White" }, - { 3, 3, "Black" }, - { 2, 2, "Blue" }, - { 1, 1, "Red" }, - { 1, 3, "Red, Blue, Black" }, - { 1, 2, "Red, Blue" }, - { 2, 3, "Blue, Black" }, - { 0, 0, NULL }, -}; - -static void -initValues(void) -{ - View = 12; - BaseLevel = 0; - MaxLevel = 9; - MinLod = views[View].minLod; - MaxLod = views[View].maxLod; - LodBias = 5.0; - NearestFilter = GL_TRUE; -} - - -static void -changeView(void) -{ - if (views[++View].string == NULL) - View = 0; - - MinLod = views[View].minLod; - MaxLod = views[View].maxLod; -} - - -static void -makeImage(int level, int width, int height) -{ - GLubyte img[SIZE*SIZE*3]; - GLubyte color[5][3] = { - { 0, 255, 0 }, - { 255, 0, 0 }, - { 0, 0, 255 }, - { 0, 0, 0 }, - { 255, 255, 255 }, - }; - int i, j; - - for (i = 0; i < height; i++) { - for (j = 0; j < width; j++) { - int k = (i * width + j) * 3; - img[k + 0] = color[level][0]; - img[k + 1] = color[level][1]; - img[k + 2] = color[level][2]; - } - } - - glTexImage2D(GL_TEXTURE_2D, level, - GL_COMPRESSED_RGB_S3TC_DXT1_EXT, - width, height, 0, - GL_RGB, GL_UNSIGNED_BYTE, img); -} - - -static void -makeImages(void) -{ - int i, sz; - - for (i = 0, sz = SIZE; sz >= 1; i++, sz /= 2) { - makeImage(i, sz, sz); - printf("Level %d size: %d x %d\n", i, sz, sz); - } -} - - -static void -myInit(void) -{ - - initValues(); - - glEnable(GL_DEPTH_TEST); - glDepthFunc(GL_LESS); - glShadeModel(GL_FLAT); - - glTranslatef(0.0, 0.0, -3.6); - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glGenTextures(1, &texImage); - glBindTexture(GL_TEXTURE_2D, texImage); - makeImages(); - - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); - glEnable(GL_TEXTURE_2D); -} - - -static void -display(void) -{ - GLfloat tcm = 1.0; - glBindTexture(GL_TEXTURE_2D, texImage); - - printf("BASE_LEVEL=%d MAX_LEVEL=%d MIN_LOD=%.2g MAX_LOD=%.2g Bias=%.2g Filter=%s\n", - BaseLevel, MaxLevel, MinLod, MaxLod, LodBias, - NearestFilter ? "NEAREST" : "LINEAR"); - printf("You should see: %s\n", views[View].string ); - fflush(stdout); - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, BaseLevel); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, MaxLevel); - - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_LOD, MinLod); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_LOD, MaxLod); - - if (NearestFilter) { - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, - GL_NEAREST_MIPMAP_NEAREST); - } - else { - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, - GL_LINEAR_MIPMAP_LINEAR); - } - - glTexEnvf(GL_TEXTURE_FILTER_CONTROL_EXT, GL_TEXTURE_LOD_BIAS_EXT, LodBias); - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glBegin(GL_QUADS); - glTexCoord2f(0.0, 0.0); glVertex3f(-2.0, -1.0, 0.0); - glTexCoord2f(0.0, tcm); glVertex3f(-2.0, 1.0, 0.0); - glTexCoord2f(tcm * 3000.0, tcm); glVertex3f(3000.0, 1.0, -6000.0); - glTexCoord2f(tcm * 3000.0, 0.0); glVertex3f(3000.0, -1.0, -6000.0); - glEnd(); - glFlush(); -} - - -static void -myReshape(int w, int h) -{ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(60.0, 1.0*(GLfloat)w/(GLfloat)h, 1.0, 30000.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - - -static void -key(unsigned char k, int x, int y) -{ - (void) x; - (void) y; - switch (k) { -#if 0 - case 'b': - BaseLevel--; - if (BaseLevel < 0) - BaseLevel = 0; - break; - case 'B': - BaseLevel++; - if (BaseLevel > 10) - BaseLevel = 10; - break; - case 'm': - MaxLevel--; - if (MaxLevel < 0) - MaxLevel = 0; - break; - case 'M': - MaxLevel++; - if (MaxLevel > 10) - MaxLevel = 10; - break; - case 'l': - LodBias -= 0.25; - break; - case 'L': - LodBias += 0.25; - break; - case 'n': - MinLod -= 0.25; - break; - case 'N': - MinLod += 0.25; - break; - case 'x': - MaxLod -= 0.25; - break; - case 'X': - MaxLod += 0.25; - break; - case 'f': - NearestFilter = !NearestFilter; - break; -#endif - case ' ': - initValues(); - break; - case 27: /* Escape */ - exit(0); - break; - default: - changeView(); - break; - } - glutPostRedisplay(); -} - - -static void -usage(void) -{ - printf("usage:\n"); - printf(" Any Change view\n"); - printf(" SPACE reset values\n"); -} - - -int -main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); - glutInitWindowSize (600, 600); - glutCreateWindow (argv[0]); - glewInit(); - myInit(); - glutReshapeFunc (myReshape); - glutDisplayFunc(display); - glutKeyboardFunc(key); - usage(); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/progs/tests/mipmap_limits.c b/progs/tests/mipmap_limits.c deleted file mode 100644 index 9418e90981..0000000000 --- a/progs/tests/mipmap_limits.c +++ /dev/null @@ -1,352 +0,0 @@ -/* Test GL_TEXTURE_BASE_LEVEL and GL_TEXTURE_MAX_LEVEL - * Brian Paul - * 10 May 2006 - */ - - -/* Copyright (c) Mark J. Kilgard, 1994. */ - -/* - * (c) Copyright 1993, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -/* mipmap.c - * This program demonstrates using mipmaps for texture maps. - * To overtly show the effect of mipmaps, each mipmap reduction - * level has a solidly colored, contrasting texture image. - * Thus, the quadrilateral which is drawn is drawn with several - * different colors. - */ -#include <stdlib.h> -#include <stdio.h> -#include <GL/glew.h> -#include <GL/glut.h> - -#include "readtex.h" - -#define TEXTURE_FILE "../images/girl.rgb" - -static GLint BaseLevel = 0, MaxLevel = 9; -static GLfloat MinLod = -1, MaxLod = 9; -static GLfloat LodBias = 0.0; -static GLboolean NearestFilter = GL_TRUE; -static GLuint texImage, texColor, texCurrent; - - -static void -InitValues(void) -{ - BaseLevel = 0; - MaxLevel = 9; - MinLod = -1; - MaxLod = 9; - LodBias = 0.0; - NearestFilter = GL_TRUE; -} - - -static void -MakeImage(int level, int width, int height, const GLubyte color[4]) -{ - const int makeStripes = 0; - GLubyte img[512 * 512 * 3]; - int i, j; - for (i = 0; i < height; i++) { - for (j = 0; j < width; j++) { - int k = (i * width + j) * 3; - int p = (i / 8) & makeStripes; - if (p == 0) { - img[k + 0] = color[0]; - img[k + 1] = color[1]; - img[k + 2] = color[2]; - } - else { - img[k + 0] = 0; - img[k + 1] = 0; - img[k + 2] = 0; - } - } - } - - glTexImage2D(GL_TEXTURE_2D, level, GL_RGB, width, height, 0, - GL_RGB, GL_UNSIGNED_BYTE, img); -} - - -static void -makeImages(int image) -{ -#define WIDTH 512 -#define HEIGHT 512 - if (glutExtensionSupported("GL_SGIS_generate_mipmap") && image) { - /* test auto mipmap generation */ - GLint width, height, i; - GLenum format; - GLubyte *image = LoadRGBImage(TEXTURE_FILE, &width, &height, &format); - if (!image) { - printf("Error: could not load texture image %s\n", TEXTURE_FILE); - exit(1); - } - /* resize */ - if (width != WIDTH || height != HEIGHT) { - GLubyte *newImage = malloc(WIDTH * HEIGHT * 4); - gluScaleImage(format, width, height, GL_UNSIGNED_BYTE, image, - WIDTH, HEIGHT, GL_UNSIGNED_BYTE, newImage); - free(image); - image = newImage; - } - printf("Using GL_SGIS_generate_mipmap\n"); - glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP_SGIS, GL_TRUE); - glTexImage2D(GL_TEXTURE_2D, 0, format, WIDTH, HEIGHT, 0, - format, GL_UNSIGNED_BYTE, image); - glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP_SGIS, GL_FALSE); - free(image); - - /* make sure mipmap was really generated correctly */ - width = WIDTH; - height = HEIGHT; - for (i = 0; i < 10; i++) { - GLint w, h; - glGetTexLevelParameteriv(GL_TEXTURE_2D, i, GL_TEXTURE_WIDTH, &w); - glGetTexLevelParameteriv(GL_TEXTURE_2D, i, GL_TEXTURE_HEIGHT, &h); - printf("Level %d size: %d x %d\n", i, w, h); - width /= 2; - height /= 2; - } - } - else { - static const GLubyte colors[10][3] = { - {128, 128, 128}, - {0, 255, 255}, - {255, 255, 0}, - {255, 0, 255}, - {255, 0, 0}, - {0, 255, 0}, - {0, 0, 255}, - {0, 255, 255}, - {255, 255, 0}, - {255, 255, 255} - }; - int i, sz = 512; - - for (i = 0; i < 10; i++) { - MakeImage(i, sz, sz, colors[i]); - printf("Level %d size: %d x %d\n", i, sz, sz); - sz /= 2; - } - } -} - -static void -myinit(void) -{ - InitValues(); - - glEnable(GL_DEPTH_TEST); - glDepthFunc(GL_LESS); - glShadeModel(GL_FLAT); - - glTranslatef(0.0, 0.0, -3.6); - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glGenTextures(1, &texImage); - glBindTexture(GL_TEXTURE_2D, texImage); - makeImages(1); - glGenTextures(1, &texColor); - glBindTexture(GL_TEXTURE_2D, texColor); - makeImages(0); - - texCurrent = texImage; - - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); - glEnable(GL_TEXTURE_2D); -} - -static void -display(void) -{ - GLfloat tcm = 1.0; - glBindTexture(GL_TEXTURE_2D, texCurrent); - - printf - ("BASE_LEVEL=%d MAX_LEVEL=%d MIN_LOD=%.2g MAX_LOD=%.2g Bias=%.2g Filter=%s\n", - BaseLevel, MaxLevel, MinLod, MaxLod, LodBias, - NearestFilter ? "NEAREST" : "LINEAR"); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, BaseLevel); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, MaxLevel); - - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_LOD, MinLod); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_LOD, MaxLod); - - if (NearestFilter) { - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, - GL_NEAREST_MIPMAP_NEAREST); - } - else { - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, - GL_LINEAR_MIPMAP_LINEAR); - } - - glTexEnvf(GL_TEXTURE_FILTER_CONTROL_EXT, GL_TEXTURE_LOD_BIAS_EXT, LodBias); - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glBegin(GL_QUADS); - glTexCoord2f(0.0, 0.0); - glVertex3f(-2.0, -1.0, 0.0); - glTexCoord2f(0.0, tcm); - glVertex3f(-2.0, 1.0, 0.0); - glTexCoord2f(tcm * 3000.0, tcm); - glVertex3f(3000.0, 1.0, -6000.0); - glTexCoord2f(tcm * 3000.0, 0.0); - glVertex3f(3000.0, -1.0, -6000.0); - glEnd(); - glFlush(); -} - -static void -myReshape(int w, int h) -{ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(60.0, 1.0 * (GLfloat) w / (GLfloat) h, 1.0, 30000.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - - -static void -usage(void) -{ - printf("usage:\n"); - printf(" b/B decrease/increase GL_TEXTURE_BASE_LEVEL\n"); - printf(" m/M decrease/increase GL_TEXTURE_MAX_LEVEL\n"); - printf(" n/N decrease/increase GL_TEXTURE_MIN_LOD\n"); - printf(" x/X decrease/increase GL_TEXTURE_MAX_LOD\n"); - printf(" l/L decrease/increase GL_TEXTURE_LOD_BIAS\n"); - printf(" f toggle nearest/linear filtering\n"); - printf(" t toggle texture color/image\n"); - printf(" SPACE reset values\n"); -} - -static void -key(unsigned char k, int x, int y) -{ - (void) x; - (void) y; - switch (k) { - case 'b': - BaseLevel--; - if (BaseLevel < 0) - BaseLevel = 0; - break; - case 'B': - BaseLevel++; - if (BaseLevel > 10) - BaseLevel = 10; - break; - case 'm': - MaxLevel--; - if (MaxLevel < 0) - MaxLevel = 0; - break; - case 'M': - MaxLevel++; - if (MaxLevel > 10) - MaxLevel = 10; - break; - case 'l': - LodBias -= 0.25; - break; - case 'L': - LodBias += 0.25; - break; - case 'n': - MinLod -= 0.25; - break; - case 'N': - MinLod += 0.25; - break; - case 'x': - MaxLod -= 0.25; - break; - case 'X': - MaxLod += 0.25; - break; - case 'f': - NearestFilter = !NearestFilter; - break; - case 't': - if (texCurrent == texColor) - texCurrent = texImage; - else - texCurrent = texColor; - break; - case ' ': - InitValues(); - /* fall-through */ - case 'u': - usage(); - break; - case 27: /* Escape */ - exit(0); - break; - default: - return; - } - glutPostRedisplay(); -} - - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); - glutInitWindowSize(600, 600); - glutCreateWindow(argv[0]); - glewInit(); - myinit(); - glutReshapeFunc(myReshape); - glutDisplayFunc(display); - glutKeyboardFunc(key); - usage(); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/progs/tests/mipmap_view.c b/progs/tests/mipmap_view.c deleted file mode 100644 index 808d348699..0000000000 --- a/progs/tests/mipmap_view.c +++ /dev/null @@ -1,435 +0,0 @@ -/* - * Test mipmap generation and lod bias. - * - * Brian Paul - * 17 March 2008 - */ - - -#include <assert.h> -#include <stdlib.h> -#include <stdio.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> -#include <GL/glext.h> - -#include "readtex.h" - -#define TEXTURE_FILE "../images/arch.rgb" - -#define LEVELS 8 -#define SIZE (1<<LEVELS) -static int TexWidth = SIZE, TexHeight = SIZE; -static int WinWidth = 1044, WinHeight = 900; -static GLfloat Bias = 0.0; -static GLboolean ScaleQuads = GL_FALSE; -static GLboolean Linear = GL_FALSE; -static GLint Win = 0; -static GLint RenderTextureLevel = 0; -static GLuint TexObj; - - - -static void -CheckError(int line) -{ - GLenum err = glGetError(); - if (err) { - printf("GL Error 0x%x at line %d\n", (int) err, line); - } -} - - - -static void -PrintString(const char *s) -{ - while (*s) { - glutBitmapCharacter(GLUT_BITMAP_8_BY_13, (int) *s); - s++; - } -} - - - - -static void -MipGenTexture( void ) -{ - /* test auto mipmap generation */ - GLint width, height, i; - GLenum format; - GLubyte *image = LoadRGBImage(TEXTURE_FILE, &width, &height, &format); - if (!image) { - printf("Error: could not load texture image %s\n", TEXTURE_FILE); - exit(1); - } - /* resize to TexWidth x TexHeight */ - if (width != TexWidth || height != TexHeight) { - GLubyte *newImage = malloc(TexWidth * TexHeight * 4); - - fprintf(stderr, "rescale %d %d to %d %d\n", width, height, - TexWidth, TexHeight); - fflush(stderr); - - gluScaleImage(format, width, height, GL_UNSIGNED_BYTE, image, - TexWidth, TexHeight, GL_UNSIGNED_BYTE, newImage); - free(image); - image = newImage; - } - printf("Using GL_SGIS_generate_mipmap\n"); - glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP_SGIS, GL_TRUE); - glTexImage2D(GL_TEXTURE_2D, 0, format, TexWidth, TexHeight, 0, - format, GL_UNSIGNED_BYTE, image); - free(image); - - /* make sure mipmap was really generated correctly */ - width = TexWidth; - height = TexHeight; - for (i = 0; i < 9; i++) { - GLint w, h; - glGetTexLevelParameteriv(GL_TEXTURE_2D, i, GL_TEXTURE_WIDTH, &w); - glGetTexLevelParameteriv(GL_TEXTURE_2D, i, GL_TEXTURE_HEIGHT, &h); - printf("Level %d size: %d x %d\n", i, w, h); - assert(w == width); - assert(h == height); - width /= 2; - height /= 2; - } - - - glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP_SGIS, GL_FALSE); -} - - - -static void -ResetTextureLevel( int i ) -{ - GLubyte tex2d[SIZE*SIZE][4]; - - { - GLint Width = TexWidth / (1 << i); - GLint Height = TexHeight / (1 << i); - GLint s, t; - - for (s = 0; s < Width; s++) { - for (t = 0; t < Height; t++) { - tex2d[t*Width+s][0] = ((s / 16) % 2) ? 0 : 255; - tex2d[t*Width+s][1] = ((t / 16) % 2) ? 0 : 255; - tex2d[t*Width+s][2] = 128; - tex2d[t*Width+s][3] = 255; - } - } - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - - glTexImage2D(GL_TEXTURE_2D, i, GL_RGB, Width, Height, 0, - GL_RGBA, GL_UNSIGNED_BYTE, tex2d); - } -} - - -static void -ResetTexture( void ) -{ -#if 0 - /* This doesn't work so well as the arch texture is 512x512. - */ - LoadRGBMipmaps(TEXTURE_FILE, GL_RGB); -#else - { - int i; - - for (i = 0; i <= LEVELS; i++) - { - ResetTextureLevel(i); - } - } -#endif -} - - - - - - - -static void -RenderTexture( void ) -{ - GLenum status; - GLuint MyFB; - - fprintf(stderr, "RenderTextureLevel %d\n", RenderTextureLevel); - fflush(stderr); - - /* gen framebuffer id, delete it, do some assertions, just for testing */ - glGenFramebuffersEXT(1, &MyFB); - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, MyFB); - assert(glIsFramebufferEXT(MyFB)); - - CheckError(__LINE__); - - /* Render color to texture */ - glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, - GL_COLOR_ATTACHMENT0_EXT, - GL_TEXTURE_2D, TexObj, - RenderTextureLevel); - - - - CheckError(__LINE__); - - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, 5.0, 25.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0, 0.0, -15.0); - - status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT); - if (status != GL_FRAMEBUFFER_COMPLETE_EXT) { - printf("Framebuffer incomplete!!!\n"); - } - - glViewport(0, 0, - TexWidth / (1 << RenderTextureLevel), - TexHeight / (1 << RenderTextureLevel)); - - glClearColor(0.5, 0.5, 1.0, 0.0); - glClear(GL_COLOR_BUFFER_BIT); - - CheckError(__LINE__); - - glBegin(GL_POLYGON); - glColor3f(1, 0, 0); - glVertex2f(-1, -1); - glColor3f(0, 1, 0); - glVertex2f(1, -1); - glColor3f(0, 0, 1); - glVertex2f(0, 1); - glEnd(); - - - /* Bind normal framebuffer */ - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); - CheckError(__LINE__); - - glDeleteFramebuffersEXT(1, &MyFB); - CheckError(__LINE__); - - glClearColor(0, 0, 0, 0); -} - -static void -Display(void) -{ - int x, y, bias; - char str[100]; - int texWidth = TexWidth, texHeight = TexHeight; - - glViewport(0, 0, WinHeight, WinHeight); - - glClear(GL_COLOR_BUFFER_BIT); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(0, WinWidth, 0, WinHeight, -1, 1); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - - glColor3f(1,1,1); - - if (Linear) { - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - } - else { - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - } - - y = WinHeight - 300; - x = 4; - - for (bias = -1; bias < 11; bias++) { - - if (ScaleQuads) { - if (bias > 0) { - if (texWidth == 1 && texHeight == 1) - break; - texWidth = TexWidth >> bias; - texHeight = TexHeight >> bias; - if (texWidth < 1) - texWidth = 1; - if (texHeight < 1) - texHeight = 1; - } - glTexEnvf(GL_TEXTURE_FILTER_CONTROL_EXT, GL_TEXTURE_LOD_BIAS_EXT, 0.0); - } - else { - glTexEnvf(GL_TEXTURE_FILTER_CONTROL_EXT, GL_TEXTURE_LOD_BIAS_EXT, bias); - } - - glRasterPos2f(x, y + TexHeight + 5); - if (ScaleQuads) - sprintf(str, "Texture Level %d: %d x %d", - (bias < 0 ? 0 : bias), - texWidth, texHeight); - else - sprintf(str, "Texture LOD Bias = %d", bias); - PrintString(str); - - glPushMatrix(); - glTranslatef(x, y, 0); - - glEnable(GL_TEXTURE_2D); - - glBegin(GL_POLYGON); - glTexCoord2f(0, 0); glVertex2f(0, 0); - glTexCoord2f(1, 0); glVertex2f(texWidth, 0); - glTexCoord2f(1, 1); glVertex2f(texWidth, texHeight); - glTexCoord2f(0, 1); glVertex2f(0, texHeight); - glEnd(); - - glPopMatrix(); - - glDisable(GL_TEXTURE_2D); - - x += TexWidth + 4; - if (x >= WinWidth) { - x = 4; - y -= 300; - } - } - - glutSwapBuffers(); -} - - -static void -Reshape(int width, int height) -{ - WinWidth = width; - WinHeight = height; -} - - -static void -Key(unsigned char key, int x, int y) -{ - (void) x; - (void) y; - switch (key) { - case 'b': - Bias -= 10; - break; - case 'B': - Bias += 10; - break; - case 'l': - Linear = !Linear; - break; - case 'v': - RenderTextureLevel++; - break; - case 'V': - RenderTextureLevel--; - break; - case 'r': - RenderTexture(); - break; - case 'X': - ResetTexture(); - break; - case 'x': - ResetTextureLevel(RenderTextureLevel); - break; - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - Bias = 100.0 * (key - '0'); - break; - case 's': - ScaleQuads = !ScaleQuads; - break; - case ' ': - MipGenTexture(); - Bias = 0; - Linear = 0; - RenderTextureLevel = 0; - ScaleQuads = 0; - break; - - case 27: - glutDestroyWindow(Win); - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void -Init(void) -{ - GLfloat maxBias; - - if (!glutExtensionSupported("GL_EXT_texture_lod_bias")) { - printf("Sorry, GL_EXT_texture_lod_bias not supported by this renderer.\n"); - exit(1); - } - - if (!glutExtensionSupported("GL_SGIS_generate_mipmap")) { - printf("Sorry, GL_SGIS_generate_mipmap not supported by this renderer.\n"); - exit(1); - } - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - - glGenTextures(1, &TexObj); - glBindTexture(GL_TEXTURE_2D, TexObj); - - if (1) - MipGenTexture(); - else - ResetTexture(); - - /* mipmapping required for this extension */ - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - - glGetFloatv(GL_MAX_TEXTURE_LOD_BIAS_EXT, &maxBias); - - printf("GL_RENDERER: %s\n", (char*) glGetString(GL_RENDERER)); - printf("LOD bias range: [%g, %g]\n", -maxBias, maxBias); - - printf("Press 's' to toggle quad scaling\n"); -} - - -int -main(int argc, char *argv[]) -{ - glutInit(&argc, argv); - glutInitWindowPosition(0, 0); - glutInitWindowSize(WinWidth, WinHeight); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); - Win = glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Display); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/multipal.c b/progs/tests/multipal.c deleted file mode 100644 index 4a94016978..0000000000 --- a/progs/tests/multipal.c +++ /dev/null @@ -1,374 +0,0 @@ - -/* - * Test multitexture and paletted textures. - */ - -#include <assert.h> -#include <math.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <stddef.h> /* for ptrdiff_t, referenced by GL.h when GL_GLEXT_LEGACY defined */ -#ifdef _WIN32 -#include <windows.h> -#endif -#define GL_GLEXT_LEGACY -#include <GL/glew.h> -#include <GL/glut.h> - -#include "../util/readtex.c" /* I know, this is a hack. */ - -#define TEXTURE_1_FILE "../images/tile.rgb" -#define TEXTURE_2_FILE "../images/reflect.rgb" - -#define TEX0 1 -#define TEX1 2 -#define TEXBOTH 3 -#define ANIMATE 10 -#define QUIT 100 - -static GLboolean Animate = GL_TRUE; - -static GLfloat Drift = 0.0; -static GLfloat Xrot = 20.0, Yrot = 30.0, Zrot = 0.0; - - - -static void Idle( void ) -{ - if (Animate) { - Drift += 0.05; - if (Drift >= 1.0) - Drift = 0.0; - -#ifdef GL_ARB_multitexture - glActiveTextureARB(GL_TEXTURE0_ARB); -#endif - glMatrixMode(GL_TEXTURE); - glLoadIdentity(); - glTranslatef(Drift, 0.0, 0.0); - glMatrixMode(GL_MODELVIEW); - -#ifdef GL_ARB_multitexture - glActiveTextureARB(GL_TEXTURE1_ARB); -#endif - glMatrixMode(GL_TEXTURE); - glLoadIdentity(); - glTranslatef(0.0, Drift, 0.0); - glMatrixMode(GL_MODELVIEW); - - glutPostRedisplay(); - } -} - - -static void DrawObject(void) -{ - glBegin(GL_QUADS); - -#ifdef GL_ARB_multitexture - glMultiTexCoord2fARB(GL_TEXTURE0_ARB, 0.0, 0.0); - glMultiTexCoord2fARB(GL_TEXTURE1_ARB, 0.0, 0.0); - glVertex2f(-1.0, -1.0); - - glMultiTexCoord2fARB(GL_TEXTURE0_ARB, 2.0, 0.0); - glMultiTexCoord2fARB(GL_TEXTURE1_ARB, 1.0, 0.0); - glVertex2f(1.0, -1.0); - - glMultiTexCoord2fARB(GL_TEXTURE0_ARB, 2.0, 2.0); - glMultiTexCoord2fARB(GL_TEXTURE1_ARB, 1.0, 1.0); - glVertex2f(1.0, 1.0); - - glMultiTexCoord2fARB(GL_TEXTURE0_ARB, 0.0, 2.0); - glMultiTexCoord2fARB(GL_TEXTURE1_ARB, 0.0, 1.0); - glVertex2f(-1.0, 1.0); -#else - glTexCoord2f(0.0, 0.0); - glVertex2f(-1.0, -1.0); - - glTexCoord2f(1.0, 0.0); - glVertex2f(1.0, -1.0); - - glTexCoord2f(1.0, 1.0); - glVertex2f(1.0, 1.0); - - glTexCoord2f(0.0, 1.0); - glVertex2f(-1.0, 1.0); -#endif - - glEnd(); -} - - - -static void Display( void ) -{ - glClear( GL_COLOR_BUFFER_BIT ); - - glPushMatrix(); - glRotatef(Xrot, 1.0, 0.0, 0.0); - glRotatef(Yrot, 0.0, 1.0, 0.0); - glRotatef(Zrot, 0.0, 0.0, 1.0); - glScalef(5.0, 5.0, 5.0); - DrawObject(); - glPopMatrix(); - - glutSwapBuffers(); -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -1.0, 1.0, -1.0, 1.0, 10.0, 100.0 ); - /*glOrtho( -6.0, 6.0, -6.0, 6.0, 10.0, 100.0 );*/ - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - glTranslatef( 0.0, 0.0, -70.0 ); -} - - -static void ModeMenu(int entry) -{ - GLboolean enable0 = GL_FALSE, enable1 = GL_FALSE; - if (entry==TEX0) { - enable0 = GL_TRUE; - } - else if (entry==TEX1) { - enable1 = GL_TRUE; - } - else if (entry==TEXBOTH) { - enable0 = GL_TRUE; - enable1 = GL_TRUE; - } - else if (entry==ANIMATE) { - Animate = !Animate; - } - else if (entry==QUIT) { - exit(0); - } - - if (entry != ANIMATE) { -#ifdef GL_ARB_multitexture - glActiveTextureARB(GL_TEXTURE0_ARB); -#endif - if (enable0) { - glEnable(GL_TEXTURE_2D); - } - else - glDisable(GL_TEXTURE_2D); - -#ifdef GL_ARB_multitexture - glActiveTextureARB(GL_TEXTURE1_ARB); -#endif - if (enable1) { - glEnable(GL_TEXTURE_2D); - } - else - glDisable(GL_TEXTURE_2D); - } - - glutPostRedisplay(); -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void SpecialKey( int key, int x, int y ) -{ - float step = 3.0; - (void) x; - (void) y; - - switch (key) { - case GLUT_KEY_UP: - Xrot += step; - break; - case GLUT_KEY_DOWN: - Xrot -= step; - break; - case GLUT_KEY_LEFT: - Yrot += step; - break; - case GLUT_KEY_RIGHT: - Yrot -= step; - break; - } - glutPostRedisplay(); -} - - -static void load_tex(const char *fname, int channel) -{ - GLubyte *image; - GLenum format; - GLint w, h; - GLubyte *grayImage; - int i; - GLubyte table[256][4]; - - image = LoadRGBImage(fname, &w, &h, &format); - if (!image) - exit(1); - - printf("%s %d x %d\n", fname, w, h); - grayImage = malloc(w * h * 1); - assert(grayImage); - for (i = 0; i < w * h; i++) { - int g = (image[i*3+0] + image[i*3+1] + image[i*3+2]) / 3; - assert(g < 256); - grayImage[i] = g; - } - - glTexImage2D(GL_TEXTURE_2D, 0, GL_COLOR_INDEX, w, h, 0, GL_COLOR_INDEX, - GL_UNSIGNED_BYTE, grayImage); - - for (i = 0; i < 256; i++) { - table[i][0] = channel ? i : 0; - table[i][1] = i; - table[i][2] = channel ? 0 : i; - table[i][3] = 255; - } - - glColorTableEXT(GL_TEXTURE_2D, /* target */ - GL_RGBA, /* internal format */ - 256, /* table size */ - GL_RGBA, /* table format */ - GL_UNSIGNED_BYTE, /* table type */ - table); /* the color table */ - - free(grayImage); - free(image); -} - - - -static void Init( int argc, char *argv[] ) -{ - GLuint texObj[2]; - GLint units; - - if (!glutExtensionSupported("GL_ARB_multitexture")) { - printf("Sorry, GL_ARB_multitexture not supported by this renderer.\n"); - exit(1); - } - if (!glutExtensionSupported("GL_EXT_paletted_texture")) { - printf("Sorry, GL_EXT_paletted_texture not supported by this renderer.\n"); - exit(1); - } - - glGetIntegerv(GL_MAX_TEXTURE_UNITS_ARB, &units); - printf("%d texture units supported\n", units); - - /* allocate two texture objects */ - glGenTextures(2, texObj); - - /* setup texture obj 0 */ - glBindTexture(GL_TEXTURE_2D, texObj[0]); -#ifdef LINEAR_FILTER - /* linear filtering looks much nicer but is much slower for Mesa */ - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); -foo -#else - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); -#endif - - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - - load_tex(TEXTURE_1_FILE, 0); -#if 0 - if (!LoadRGBMipmaps(TEXTURE_1_FILE, GL_RGB)) { - printf("Error: couldn't load texture image\n"); - exit(1); - } -#endif - - /* setup texture obj 1 */ - glBindTexture(GL_TEXTURE_2D, texObj[1]); -#ifdef LINEAR_FILTER - /* linear filtering looks much nicer but is much slower for Mesa */ - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); -foo -#else - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); -#endif - - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - - load_tex(TEXTURE_2_FILE, 1); -#if 0 - if (!LoadRGBMipmaps(TEXTURE_2_FILE, GL_RGB)) { - printf("Error: couldn't load texture image\n"); - exit(1); - } -#endif - - /* now bind the texture objects to the respective texture units */ -#ifdef GL_ARB_multitexture - glActiveTextureARB(GL_TEXTURE0_ARB); - glBindTexture(GL_TEXTURE_2D, texObj[0]); - glActiveTextureARB(GL_TEXTURE1_ARB); - glBindTexture(GL_TEXTURE_2D, texObj[1]); -#endif - - glShadeModel(GL_FLAT); - glClearColor(0.3, 0.3, 0.4, 1.0); - - ModeMenu(TEXBOTH); - - if (argc > 1 && strcmp(argv[1], "-info")==0) { - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - printf("GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - printf("GL_EXTENSIONS = %s\n", (char *) glGetString(GL_EXTENSIONS)); - } -} - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowSize( 300, 300 ); - glutInitWindowPosition( 0, 0 ); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE ); - glutCreateWindow(argv[0] ); - glewInit(); - - Init( argc, argv ); - - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutSpecialFunc( SpecialKey ); - glutDisplayFunc( Display ); - glutIdleFunc( Idle ); - - glutCreateMenu(ModeMenu); - glutAddMenuEntry("Texture 0", TEX0); - glutAddMenuEntry("Texture 1", TEX1); - glutAddMenuEntry("Multi-texture", TEXBOTH); - glutAddMenuEntry("Toggle Animation", ANIMATE); - glutAddMenuEntry("Quit", QUIT); - glutAttachMenu(GLUT_RIGHT_BUTTON); - - glutMainLoop(); - return 0; -} diff --git a/progs/tests/multitexarray.c b/progs/tests/multitexarray.c deleted file mode 100644 index 518fee2992..0000000000 --- a/progs/tests/multitexarray.c +++ /dev/null @@ -1,240 +0,0 @@ -/* - * Test vertex arrays and multitexture. - * Press 'a' to toggle vertex arrays on/off. - * When you run this program you should see a square with four colors: - * - * +------+------+ - * |yellow| pink | - * +------+------+ - * |green | blue | - * +------+------+ - */ - - -#include <assert.h> -#include <math.h> -#include <stdlib.h> -#include <stdio.h> -#include <string.h> -#include "GL/glew.h" -#include "GL/glut.h" - -static GLuint Window = 0; - -static GLuint TexObj[2]; -static GLfloat Angle = 0.0f; -static GLboolean UseArrays = 1, Anim = 0; - -static GLfloat VertArray[4][2] = { - {-1.2, -1.2}, {1.2, -1.2}, {1.2, 1.2}, {-1.2, 1.2} -}; - -static GLfloat Tex0Array[4][2] = { - {0, 0}, {1, 0}, {1, 1}, {0, 1} -}; - -static GLfloat Tex1Array[4][2] = { - {0, 0}, {1, 0}, {1, 1}, {0, 1} -}; - - -static void init_arrays(void) -{ - glVertexPointer(2, GL_FLOAT, 0, VertArray); - glEnableClientState(GL_VERTEX_ARRAY); - - glClientActiveTextureARB(GL_TEXTURE0_ARB); - glTexCoordPointer(2, GL_FLOAT, 0, Tex0Array); - glEnableClientState(GL_TEXTURE_COORD_ARRAY); - - glClientActiveTextureARB(GL_TEXTURE1_ARB); - glTexCoordPointer(2, GL_FLOAT, 0, Tex1Array); - glEnableClientState(GL_TEXTURE_COORD_ARRAY); -} - - -static void draw( void ) -{ - glClear( GL_COLOR_BUFFER_BIT ); - - glColor3f( 0.0, 0.0, 0.0 ); - - /* draw first polygon */ - glPushMatrix(); - glRotatef( Angle, 0.0, 0.0, 1.0 ); - - if (UseArrays) { - glDrawArrays(GL_POLYGON, 0, 4); - } - else { - glBegin( GL_POLYGON ); - glTexCoord2f( 0.0, 0.0 ); - glMultiTexCoord2fARB(GL_TEXTURE1_ARB, 0.0, 0.0); - glVertex2f( -1.0, -1.0 ); - - glTexCoord2f( 1.0, 0.0 ); - glMultiTexCoord2fARB(GL_TEXTURE1_ARB, 1.0, 0.0); - glVertex2f( 1.0, -1.0 ); - - glTexCoord2f( 1.0, 1.0 ); - glMultiTexCoord2fARB(GL_TEXTURE1_ARB, 1.0, 1.0); - glVertex2f( 1.0, 1.0 ); - - glTexCoord2f( 0.0, 1.0 ); - glMultiTexCoord2fARB(GL_TEXTURE1_ARB, 0.0, 1.0); - glVertex2f( -1.0, 1.0 ); - glEnd(); - } - - glPopMatrix(); - - glutSwapBuffers(); -} - - - -static void idle( void ) -{ - Angle += 2.0; - glutPostRedisplay(); -} - - - -/* change view Angle, exit upon ESC */ -static void key(unsigned char k, int x, int y) -{ - (void) x; - (void) y; - switch (k) { - case 'a': - UseArrays = !UseArrays; - printf("UseArrays: %d\n", UseArrays); - break; - case ' ': - Anim = !Anim; - if (Anim) - glutIdleFunc(idle); - else - glutIdleFunc(NULL); - break; - case 27: - glDeleteTextures( 2, TexObj ); - glutDestroyWindow(Window); - exit(0); - } - glutPostRedisplay(); -} - - - -/* new window size or exposure */ -static void reshape( int width, int height ) -{ - glViewport(0, 0, (GLint)width, (GLint)height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - /* glOrtho( -3.0, 3.0, -3.0, 3.0, -10.0, 10.0 );*/ - glFrustum( -2.0, 2.0, -2.0, 2.0, 6.0, 20.0 ); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef( 0.0, 0.0, -8.0 ); -} - - -static void init( void ) -{ - static int width=8, height=8; - GLubyte tex[64][3]; - GLint i, j; - - /* generate texture object IDs */ - glGenTextures( 2, TexObj ); - - /* - * setup first texture object - */ - glActiveTextureARB(GL_TEXTURE0_ARB); - glEnable( GL_TEXTURE_2D ); - glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_ADD ); - - glBindTexture( GL_TEXTURE_2D, TexObj[0] ); - assert(glIsTexture(TexObj[0])); - - /* red over black */ - for (i=0;i<height;i++) { - for (j=0;j<width;j++) { - int p = i*width+j; - if (i < height / 2) { - tex[p][0] = 0; tex[p][1] = 0; tex[p][2] = 0; - } - else { - tex[p][0] = 255; tex[p][1] = 0; tex[p][2] = 0; - } - } - } - - glTexImage2D( GL_TEXTURE_2D, 0, 3, width, height, 0, - GL_RGB, GL_UNSIGNED_BYTE, tex ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT ); - - - /* - * setup second texture object - */ - glActiveTextureARB(GL_TEXTURE1_ARB); - glEnable( GL_TEXTURE_2D ); - glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_ADD ); - - glBindTexture( GL_TEXTURE_2D, TexObj[1] ); - assert(glIsTexture(TexObj[1])); - - /* left=green, right = blue */ - for (i=0;i<height;i++) { - for (j=0;j<width;j++) { - int p = i*width+j; - if (j < width / 2) { - tex[p][0] = 0; tex[p][1] = 255; tex[p][2] = 0; - } - else { - tex[p][0] = 0; tex[p][1] = 0; tex[p][2] = 255; - } - } - } - glTexImage2D( GL_TEXTURE_2D, 0, 3, width, height, 0, - GL_RGB, GL_UNSIGNED_BYTE, tex ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT ); -} - - - -int main( int argc, char *argv[] ) -{ - glutInit(&argc, argv); - glutInitWindowPosition(0, 0); - glutInitWindowSize(300, 300); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE ); - - Window = glutCreateWindow("Texture Objects"); - glewInit(); - if (!Window) { - exit(1); - } - - init(); - init_arrays(); - - glutReshapeFunc( reshape ); - glutKeyboardFunc( key ); - if (Anim) - glutIdleFunc( idle ); - glutDisplayFunc( draw ); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/multiwindow.c b/progs/tests/multiwindow.c deleted file mode 100644 index 6db552d195..0000000000 --- a/progs/tests/multiwindow.c +++ /dev/null @@ -1,170 +0,0 @@ - -/* - * A skeleton/template GLUT program - * - * Written by Brian Paul and in the public domain. - */ - - -/* - * Revision 1.1 2001/08/21 14:25:31 brianp - * simple multi-window GLUT test prog - * - * Revision 1.1.1.1 1999/08/19 00:55:42 jtg - * Imported sources - * - * Revision 1.2 1998/11/07 14:20:14 brianp - * added simple rotation, animation of cube - * - * Revision 1.1 1998/11/07 14:14:37 brianp - * Initial revision - * - */ - - -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - - -static GLint Window[2]; - -static GLfloat Xrot = 0, Yrot = 0, Zrot = 0; -static GLboolean Anim = GL_TRUE; - - -static void Idle( void ) -{ - Xrot += 3.0; - Yrot += 4.0; - Zrot += 2.0; - - glutSetWindow(Window[0]); - glutPostRedisplay(); - glutSetWindow(Window[1]); - glutPostRedisplay(); -} - - -static void Display0( void ) -{ - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_DEPTH_TEST); - - glPushMatrix(); - glRotatef(Xrot, 1, 0, 0); - glRotatef(Yrot, 0, 1, 0); - glRotatef(Zrot, 0, 0, 1); - - glColor3f(0, 1, 0); - glutSolidCube(2.0); - - glPopMatrix(); - - glutSwapBuffers(); -} - - -static void Display1( void ) -{ - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - glPushMatrix(); - glRotatef(Xrot, 1, 0, 0); - glRotatef(Yrot, 0, 1, 0); - glRotatef(Zrot, 0, 0, 1); - - glShadeModel(GL_FLAT); - - glBegin(GL_TRIANGLE_STRIP); - glColor3f(1, 0, 0); - glVertex2f(-1, -1); - glVertex2f( 1, -1); - glColor3f(1, 0, 0); - glVertex2f( -1, 1); - glColor3f(0, 0, 1); - glVertex2f( 1, 1); - glEnd(); - - glPopMatrix(); - - glutSwapBuffers(); -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -1.0, 1.0, -1.0, 1.0, 5.0, 25.0 ); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - glTranslatef( 0.0, 0.0, -15.0 ); -} - - -static void Key( unsigned char key, int x, int y ) -{ - const GLfloat step = 3.0; - (void) x; - (void) y; - switch (key) { - case 'a': - Anim = !Anim; - if (Anim) - glutIdleFunc(Idle); - else - glutIdleFunc(NULL); - break; - case 'z': - Zrot -= step; - break; - case 'Z': - Zrot += step; - break; - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 400, 400 ); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH ); - Window[0] = glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display0 ); - glutIdleFunc(Idle); - printf("GL_RENDERER[0] = %s\n", (char *) glGetString(GL_RENDERER)); - - glutInitWindowPosition( 500, 0 ); - glutInitWindowSize( 400, 400 ); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH ); - Window[1] = glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display1 ); - glutIdleFunc(Idle); - printf("GL_RENDERER[1] = %s\n", (char *) glGetString(GL_RENDERER)); - - glutMainLoop(); - - return 0; -} diff --git a/progs/tests/no_s3tc.c b/progs/tests/no_s3tc.c deleted file mode 100644 index 31cfb40b9d..0000000000 --- a/progs/tests/no_s3tc.c +++ /dev/null @@ -1,99 +0,0 @@ -/* - * (C) Copyright IBM Corporation 2004 - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * on the rights to use, copy, modify, merge, publish, distribute, sub - * license, and/or sell copies of the Software, and to permit persons to whom - * the Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL - * VA LINUX SYSTEM, IBM AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - * USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/** - * \file no_s3tc.c - * Test program to verify the behavior of an OpenGL implementation when - * an application calls \c glCompressedTexImage2D with an unsupported (but - * valid) compression format. The most common example is calling it with - * \c GL_COMPRESSED_RGBA_S3TC_DXT1_EXT when GL_EXT_texture_compression_s3tc - * is not supported. - * - * This tests Mesa bug #1028405. - * - * \author Ian Romanick <idr@us.ibm.com> - */ - -#include <stdlib.h> -#include <stdio.h> -#include <string.h> -#include <GL/glew.h> -#include <GL/glut.h> -#include <GL/glext.h> - -static unsigned data[16]; - -int -main( int argc, char ** argv ) -{ - float gl_version; - GLenum format; - GLuint size; - GLuint width; - GLenum err; - - - glutInit( & argc, argv ); - glutInitDisplayMode( GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE ); - - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 300, 300 ); - glutCreateWindow( "No S3TC Test" ); - glewInit(); - - gl_version = strtod( (const char *) glGetString( GL_VERSION ), NULL ); - if ( ! glutExtensionSupported( "GL_ARB_texture_compression" ) - && (gl_version < 1.3) ) { - fprintf( stderr, "Either OpenGL 1.3 or GL_ARB_texture_compression " - "must be supported.\n" ); - return( EXIT_SUCCESS ); - } - - - if ( ! glutExtensionSupported( "GL_EXT_texture_compression_s3tc" ) ) { - format = GL_COMPRESSED_RGBA_S3TC_DXT1_EXT; - width = 4; - size = 8; - } - else if ( ! glutExtensionSupported( "GL_3DFX_texture_compression_FXT1" ) ) { - format = GL_COMPRESSED_RGBA_FXT1_3DFX; - width = 8; - size = 16; - } - else { - fprintf( stderr, "Either GL_EXT_texture_compression_s3tc or " - "GL_3DFX_texture_compression_FXT1 must NOT be supported.\n" ); - return( EXIT_SUCCESS ); - } - - glCompressedTexImage2D( GL_TEXTURE_2D, 0, format, width, 4, 0, - size, data ); - err = glGetError(); - if ( err != GL_INVALID_ENUM ) { - fprintf( stderr, "GL error 0x%04x should have been generated, but " - "0x%04x was generated instead.\n", GL_INVALID_ENUM, err ); - } - - return (err == GL_INVALID_ENUM) ? EXIT_SUCCESS : EXIT_FAILURE; -} diff --git a/progs/tests/occlude.c b/progs/tests/occlude.c deleted file mode 100644 index 8f7b90984e..0000000000 --- a/progs/tests/occlude.c +++ /dev/null @@ -1,234 +0,0 @@ -/* - * GL_HP_occlustion_test demo - * - * Brian Paul - * 31 March 2000 - * - * Copyright (C) 2000 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <math.h> -#include <GL/glut.h> -#include <GL/glext.h> - - -static GLfloat Xpos = 0; -static GLboolean Anim = GL_TRUE; - - -static void -PrintString(const char *s) -{ - while (*s) { - glutBitmapCharacter(GLUT_BITMAP_8_BY_13, (int) *s); - s++; - } -} - - - -static void Idle(void) -{ - static int lastTime = 0; - static int sign = +1; - int time = glutGet(GLUT_ELAPSED_TIME); - float step; - - if (lastTime == 0) - lastTime = time; - else if (time - lastTime < 20) /* 50Hz update */ - return; - - step = (time - lastTime) / 1000.0 * sign; - lastTime = time; - - Xpos += step; - - if (Xpos > 2.5) { - Xpos = 2.5; - sign = -1; - } - else if (Xpos < -2.5) { - Xpos = -2.5; - sign = +1; - } - glutPostRedisplay(); -} - - -static void Display( void ) -{ - GLboolean result; - - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -1.0, 1.0, -1.0, 1.0, 5.0, 25.0 ); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - glTranslatef( 0.0, 0.0, -15.0 ); - - /* draw the occluding polygons */ - glColor3f(0, 0.6, 0.8); - glBegin(GL_QUADS); - glVertex2f(-1.6, -1.5); - glVertex2f(-0.4, -1.5); - glVertex2f(-0.4, 1.5); - glVertex2f(-1.6, 1.5); - - glVertex2f( 0.4, -1.5); - glVertex2f( 1.6, -1.5); - glVertex2f( 1.6, 1.5); - glVertex2f( 0.4, 1.5); - glEnd(); - - /* draw the test polygon with occlusion testing */ - glPushMatrix(); - glTranslatef(Xpos, 0, -0.5); - glScalef(0.3, 0.3, 1.0); - glRotatef(-90.0 * Xpos, 0, 0, 1); - - glEnable(GL_OCCLUSION_TEST_HP); /* NOTE: enabling the occlusion test */ - /* doesn't clear the result flag! */ - glColorMask(0, 0, 0, 0); - glDepthMask(GL_FALSE); - /* this call clear's the result flag. Not really needed for this demo. */ - glGetBooleanv(GL_OCCLUSION_TEST_RESULT_HP, &result); - - glBegin(GL_POLYGON); - glVertex3f(-1, -1, 0); - glVertex3f( 1, -1, 0); - glVertex3f( 1, 1, 0); - glVertex3f(-1, 1, 0); - glEnd(); - - glGetBooleanv(GL_OCCLUSION_TEST_RESULT_HP, &result); - /* turn off occlusion testing */ - glDisable(GL_OCCLUSION_TEST_HP); - glColorMask(1, 1, 1, 1); - glDepthMask(GL_TRUE); - - /* draw the green rect, so we can see what's going on */ - glColor3f(0.8, 0.5, 0); - glBegin(GL_POLYGON); - glVertex3f(-1, -1, 0); - glVertex3f( 1, -1, 0); - glVertex3f( 1, 1, 0); - glVertex3f(-1, 1, 0); - glEnd(); - - glPopMatrix(); - - - /* Print result message */ - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glOrtho( -1.0, 1.0, -1.0, 1.0, -1.0, 1.0 ); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - - glColor3f(1, 1, 1); - glRasterPos3f(-0.25, -0.7, 0); - - if (result) - PrintString(" Visible"); - else - PrintString("Fully Occluded"); - - glutSwapBuffers(); -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 'a': - Anim = !Anim; - if (Anim) - glutIdleFunc( Idle ); - else - glutIdleFunc( NULL ); - break; - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void SpecialKey( int key, int x, int y ) -{ - const GLfloat step = 0.1; - (void) x; - (void) y; - switch (key) { - case GLUT_KEY_LEFT: - Xpos -= step; - break; - case GLUT_KEY_RIGHT: - Xpos += step; - break; - } - glutPostRedisplay(); -} - - -static void Init( void ) -{ - const char *ext = (const char *) glGetString(GL_EXTENSIONS); - if (!strstr(ext, "GL_HP_occlusion_test")) { - printf("Sorry, this demo requires the GL_HP_occlusion_test extension\n"); - exit(-1); - } - - glEnable(GL_DEPTH_TEST); -} - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 400, 400 ); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH ); - glutCreateWindow(argv[0]); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutSpecialFunc( SpecialKey ); - glutIdleFunc( Idle ); - glutDisplayFunc( Display ); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/packedpixels.c b/progs/tests/packedpixels.c deleted file mode 100644 index 34df95549a..0000000000 --- a/progs/tests/packedpixels.c +++ /dev/null @@ -1,377 +0,0 @@ -/* - * Test packed pixel formats for textures. - * Brian Paul - * 12 May 2004 - */ - -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <string.h> -#include <GL/glew.h> -#include <GL/glut.h> - - -struct pixel_format { - const char *name; - GLenum format; - GLenum type; - GLint bytes; - GLuint redTexel, greenTexel; /* with approx 51% alpha, when applicable */ -}; - -static const struct pixel_format Formats[] = { - - { "GL_RGBA/GL_UNSIGNED_INT_8_8_8_8", - GL_RGBA, GL_UNSIGNED_INT_8_8_8_8, 4, 0xff000080, 0x00ff0080 }, - { "GL_RGBA/GL_UNSIGNED_INT_8_8_8_8_REV", - GL_RGBA, GL_UNSIGNED_INT_8_8_8_8_REV, 4, 0x800000ff, 0x8000ff00 }, - { "GL_RGBA/GL_UNSIGNED_INT_10_10_10_2", - GL_RGBA, GL_UNSIGNED_INT_10_10_10_2, 4, 0xffc00002, 0x3ff002 }, - { "GL_RGBA/GL_UNSIGNED_INT_2_10_10_10_REV", - GL_RGBA, GL_UNSIGNED_INT_2_10_10_10_REV, 4, 0xc00003ff, 0xc00ffc00 }, - { "GL_RGBA/GL_UNSIGNED_SHORT_4_4_4_4", - GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4, 2, 0xf008, 0x0f08 }, - { "GL_RGBA/GL_UNSIGNED_SHORT_4_4_4_4_REV", - GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4_REV, 2, 0x800f, 0x80f0 }, - { "GL_RGBA/GL_UNSIGNED_SHORT_5_5_5_1", - GL_RGBA, GL_UNSIGNED_SHORT_5_5_5_1, 2, 0xf801, 0x7c1 }, - { "GL_RGBA/GL_UNSIGNED_SHORT_1_5_5_5_REV", - GL_RGBA, GL_UNSIGNED_SHORT_1_5_5_5_REV, 2, 0x801f, 0x83e0 }, - - { "GL_BGRA/GL_UNSIGNED_INT_8_8_8_8", - GL_BGRA, GL_UNSIGNED_INT_8_8_8_8, 4, 0x0000ff80, 0x00ff0080 }, - { "GL_BGRA/GL_UNSIGNED_INT_8_8_8_8_REV", - GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, 4, 0x80ff0000, 0x8000ff00 }, - { "GL_BGRA/GL_UNSIGNED_SHORT_4_4_4_4", - GL_BGRA, GL_UNSIGNED_SHORT_4_4_4_4, 2, 0x00f8, 0x0f08 }, - { "GL_BGRA/GL_UNSIGNED_SHORT_4_4_4_4_REV", - GL_BGRA, GL_UNSIGNED_SHORT_4_4_4_4_REV, 2, 0x8f00, 0x80f0 }, - { "GL_BGRA/GL_UNSIGNED_SHORT_5_5_5_1", - GL_BGRA, GL_UNSIGNED_SHORT_5_5_5_1, 2, 0x3f, 0x7c1 }, - { "GL_BGRA/GL_UNSIGNED_SHORT_1_5_5_5_REV", - GL_BGRA, GL_UNSIGNED_SHORT_1_5_5_5_REV, 2, 0xfc00, 0x83e0 }, - - { "GL_ABGR_EXT/GL_UNSIGNED_INT_8_8_8_8", - GL_ABGR_EXT, GL_UNSIGNED_INT_8_8_8_8, 4, 0x800000ff, 0x8000ff00 }, - { "GL_ABGR_EXT/GL_UNSIGNED_INT_8_8_8_8_REV", - GL_ABGR_EXT, GL_UNSIGNED_INT_8_8_8_8_REV, 4, 0xff000080, 0x00ff0080 }, - { "GL_ABGR_EXT/GL_UNSIGNED_SHORT_4_4_4_4", - GL_ABGR_EXT, GL_UNSIGNED_SHORT_4_4_4_4, 2, 0x800f, 0x80f0 }, - { "GL_ABGR_EXT/GL_UNSIGNED_SHORT_4_4_4_4_REV", - GL_ABGR_EXT, GL_UNSIGNED_SHORT_4_4_4_4_REV, 2, 0xf008, 0x0f08 }, - { "GL_ABGR_EXT/GL_UNSIGNED_SHORT_5_5_5_1", - GL_ABGR_EXT, GL_UNSIGNED_SHORT_5_5_5_1, 2, 0xf801, 0xf83e }, - { "GL_ABGR_EXT/GL_UNSIGNED_SHORT_1_5_5_5_REV", - GL_ABGR_EXT, GL_UNSIGNED_SHORT_1_5_5_5_REV, 2, 0x800f, 0x7c0f }, - - { "GL_RGB/GL_UNSIGNED_SHORT_5_6_5", - GL_RGB, GL_UNSIGNED_SHORT_5_6_5, 2, 0xf800, 0x7e0 }, - { "GL_RGB/GL_UNSIGNED_SHORT_5_6_5_REV", - GL_RGB, GL_UNSIGNED_SHORT_5_6_5_REV, 2, 0x1f, 0x7e0 }, - { "GL_RGB/GL_UNSIGNED_BYTE_3_3_2", - GL_RGB, GL_UNSIGNED_BYTE_3_3_2, 1, 0xe0, 0x1c }, - { "GL_RGB/GL_UNSIGNED_BYTE_2_3_3_REV", - GL_RGB, GL_UNSIGNED_BYTE_2_3_3_REV, 1, 0x7, 0x38 }, - - { NULL, 0, 0, 0, 0, 0 } -}; - - -struct name_format { - const char *name; - GLenum format; -}; - -static const struct name_format IntFormats[] = { - { "GL_RGBA", GL_RGBA }, - { "GL_RGBA2", GL_RGBA2 }, - { "GL_RGBA4", GL_RGBA4 }, - { "GL_RGB5_A1", GL_RGB5_A1 }, - { "GL_RGBA8", GL_RGBA8 }, - { "GL_RGBA12", GL_RGBA12 }, - { "GL_RGBA16", GL_RGBA16 }, - { "GL_RGB10_A2", GL_RGB10_A2 }, - - { "GL_RGB", GL_RGB }, - { "GL_R3_G3_B2", GL_R3_G3_B2 }, - { "GL_RGB4", GL_RGB4 }, - { "GL_RGB5", GL_RGB5 }, - { "GL_RGB8", GL_RGB8 }, - { "GL_RGB10", GL_RGB10 }, - { "GL_RGB12", GL_RGB12 }, - { "GL_RGB16", GL_RGB16 }, - -}; - -#define NUM_INT_FORMATS (sizeof(IntFormats) / sizeof(IntFormats[0])) -static GLuint CurFormat = 0; - -static GLboolean Test3D = GL_FALSE; -static GLboolean Blend = GL_FALSE; - - -static void -PrintString(const char *s) -{ - while (*s) { - glutBitmapCharacter(GLUT_BITMAP_8_BY_13, (int) *s); - s++; - } -} - - -static void -MakeTexture(const struct pixel_format *format, GLenum intFormat, GLboolean swap) -{ - GLubyte texBuffer[1000]; - int i; - - glPixelStorei(GL_UNPACK_SWAP_BYTES, swap); - - if (format->bytes == 1) { - for (i = 0; i < 8; i++) { - texBuffer[i] = format->redTexel; - } - for (i = 8; i < 16; i++) { - texBuffer[i] = format->greenTexel; - } - } - else if (format->bytes == 2) { - GLushort *us = (GLushort *) texBuffer; - for (i = 0; i < 8; i++) { - us[i] = format->redTexel; - } - for (i = 8; i < 16; i++) { - us[i] = format->greenTexel; - } - if (swap) { - for (i = 0; i < 16; i++) - us[i] = (us[i] << 8) | (us[i] >> 8); - } - } - else if (format->bytes == 4) { - GLuint *ui = (GLuint *) texBuffer; - for (i = 0; i < 8; i++) { - ui[i] = format->redTexel; - } - for (i = 8; i < 16; i++) { - ui[i] = format->greenTexel; - } - if (swap) { - for (i = 0; i < 16; i++) { - GLuint b = ui[i]; - ui[i] = (b >> 24) - | ((b >> 8) & 0xff00) - | ((b << 8) & 0xff0000) - | ((b << 24) & 0xff000000); - } - } - } - else { - abort(); - } - - if (Test3D) { - /* 4 x 4 x 4 texture, undefined data */ - glTexImage3D(GL_TEXTURE_3D, 0, intFormat, 4, 4, 4, 0, - format->format, format->type, NULL); - /* fill in Z=1 and Z=2 slices with the real texture data */ - glTexSubImage3D(GL_TEXTURE_3D, 0, - 0, 0, 1, /* offset */ - 4, 4, 1, /* size */ - format->format, format->type, texBuffer); - glTexSubImage3D(GL_TEXTURE_3D, 0, - 0, 0, 2, /* offset */ - 4, 4, 1, /* size */ - format->format, format->type, texBuffer); - } - else { - glTexImage2D(GL_TEXTURE_2D, 0, intFormat, 4, 4, 0, - format->format, format->type, texBuffer); - } - - if (0) { - GLint r, g, b, a, l, i; - glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_RED_SIZE, &r); - glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_GREEN_SIZE, &g); - glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_BLUE_SIZE, &b); - glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_ALPHA_SIZE, &a); - glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_LUMINANCE_SIZE, &l); - glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_INTENSITY_SIZE, &i); - printf("IntFormat: 0x%x R %d G %d B %d A %d L %d I %d\n", - intFormat, r, g, b, a, l, i); - glGetError(); - } - - if (glGetError()) { - printf("GL Error for %s\n", format->name); - memset(texBuffer, 255, 1000); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 4, 4, 0, - GL_RGB, GL_UNSIGNED_BYTE, texBuffer); - } -} - - - -static void -Draw(void) -{ - char s[1000]; - int w = 350, h = 20; - int i, swap; - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - for (swap = 0; swap < 2; swap++) { - for (i = 0; Formats[i].name; i++) { - glPushMatrix(); - glTranslatef(swap * (w + 2), i * (h + 2), 0); - - MakeTexture(Formats + i, IntFormats[CurFormat].format, swap); - - if (Test3D) - glEnable(GL_TEXTURE_3D); - else - glEnable(GL_TEXTURE_2D); - - if (Blend) - glEnable(GL_BLEND); - - glBegin(GL_POLYGON); - glTexCoord3f(0, 0, 0.5); glVertex2f(0, 0); - glTexCoord3f(1, 0, 0.5); glVertex2f(w, 0); - glTexCoord3f(1, 1, 0.5); glVertex2f(w, h); - glTexCoord3f(0, 1, 0.5); glVertex2f(0, h); - glEnd(); - - if (Test3D) - glDisable(GL_TEXTURE_3D); - else - glDisable(GL_TEXTURE_2D); - - glDisable(GL_BLEND); - - glColor3f(0, 0, 0); - glRasterPos2i(8, 6); - PrintString(Formats[i].name); - - glPopMatrix(); - } - } - - glPushMatrix(); - glTranslatef(2, i * (h + 2), 0); - glColor3f(1, 1, 1); - glRasterPos2i(8, 6); - PrintString("Normal"); - glRasterPos2i(w + 2, 6); - PrintString("Byte Swapped"); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(2, (i + 1) * (h + 2), 0); - glRasterPos2i(8, 6); - sprintf(s, "Internal Texture Format [f/F]: %s (%d of %lu)", - IntFormats[CurFormat].name, CurFormat + 1, (unsigned long) NUM_INT_FORMATS); - PrintString(s); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(2, (i + 2) * (h + 2), 0); - glRasterPos2i(8, 6); - if (Test3D) - PrintString("Target [2/3]: GL_TEXTURE_3D"); - else - PrintString("Target [2/3]: GL_TEXTURE_2D"); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(2, (i + 3) * (h + 2), 0); - glRasterPos2i(8, 6); - if (Blend) - PrintString("Blend: Yes"); - else - PrintString("Blend: No"); - glPopMatrix(); - - glutSwapBuffers(); -} - - -static void -Reshape(int width, int height) -{ - glViewport(0, 0, width, height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(0, width, 0, height, -1, 1); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - - -static void -Key(unsigned char key, int x, int y) -{ - (void) x; - (void) y; - switch (key) { - case 'b': - Blend = !Blend; - break; - case 'F': - if (CurFormat == 0) - CurFormat = NUM_INT_FORMATS - 1; - else - CurFormat--; - break; - case 'f': - CurFormat++; - if (CurFormat == NUM_INT_FORMATS) - CurFormat = 0; - break; - case '2': - Test3D = GL_FALSE; - break; - case '3': - Test3D = GL_TRUE; - break; - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void -Init(void) -{ - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); -} - - -int -main(int argc, char *argv[]) -{ - glutInit(&argc, argv); - glutInitWindowPosition(0, 0); - glutInitWindowSize(700, 800); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/pbo.c b/progs/tests/pbo.c deleted file mode 100644 index 9974486db3..0000000000 --- a/progs/tests/pbo.c +++ /dev/null @@ -1,297 +0,0 @@ -/* - * GL_EXT_pixel_buffer_object test - * - * Brian Paul - * 11 March 2004 - */ - - -#include <assert.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - -#include "../util/readtex.c" /* a hack, I know */ - -#define IMAGE_FILE "../images/girl.rgb" - -static int ImgWidth, ImgHeight; -static GLenum ImgFormat; -static GLubyte *Image = NULL; - -static int APosX, APosY; /* simple drawpixels */ -static int BPosX, BPosY; /* read/draw pixels */ -static int CPosX, CPosY; /* copypixels */ - -static GLboolean DrawFront = GL_FALSE; -static GLboolean ScaleAndBias = GL_FALSE; -static GLboolean Benchmark = GL_FALSE; - -static GLuint DrawPBO, TempPBO; - - -static GLenum ReadFormat = GL_BGRA; -static GLenum ReadType = GL_UNSIGNED_INT_8_8_8_8_REV; - - - -static void -CheckError(int line) -{ - GLenum err = glGetError(); - if (err) { - printf("GL Error 0x%x at line %d\n", (int) err, line); - } -} - - -static void -Reset( void ) -{ - APosX = 5; APosY = 20; - BPosX = APosX + ImgWidth + 5; BPosY = 20; - CPosX = BPosX + ImgWidth + 5; CPosY = 20; -} - - -static void -PrintString(const char *s) -{ - while (*s) { - glutBitmapCharacter(GLUT_BITMAP_8_BY_13, (int) *s); - s++; - } -} - - -static void -SetupPixelTransfer(GLboolean invert) -{ - if (invert) { - glPixelTransferf(GL_RED_SCALE, -1.0); - glPixelTransferf(GL_RED_BIAS, 1.0); - glPixelTransferf(GL_GREEN_SCALE, -1.0); - glPixelTransferf(GL_GREEN_BIAS, 1.0); - glPixelTransferf(GL_BLUE_SCALE, -1.0); - glPixelTransferf(GL_BLUE_BIAS, 1.0); - } - else { - glPixelTransferf(GL_RED_SCALE, 1.0); - glPixelTransferf(GL_RED_BIAS, 0.0); - glPixelTransferf(GL_GREEN_SCALE, 1.0); - glPixelTransferf(GL_GREEN_BIAS, 0.0); - glPixelTransferf(GL_BLUE_SCALE, 1.0); - glPixelTransferf(GL_BLUE_BIAS, 0.0); - } -} - - -static void -Display( void ) -{ - glClearColor(.3, .3, .3, 1); - glClear( GL_COLOR_BUFFER_BIT ); - - CheckError(__LINE__); - - /** Unbind UNPACK pixel buffer before calling glBitmap */ - glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_EXT, 0); - - glRasterPos2i(5, ImgHeight+25); - PrintString("f = toggle front/back s = toggle scale/bias b = benchmark"); - - glRasterPos2i(5, ImgHeight+40); - PrintString("GL_EXT_pixel_buffer_object test"); - - /* draw original image */ - glRasterPos2i(APosX, 5); - PrintString("Original"); - glRasterPos2i(APosX, APosY); - glEnable(GL_DITHER); - SetupPixelTransfer(GL_FALSE); - /*** Draw from the DrawPBO */ - glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_EXT, DrawPBO); - glDrawPixels(ImgWidth, ImgHeight, ImgFormat, GL_UNSIGNED_BYTE, 0); - glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_EXT, 0); - - CheckError(__LINE__); - - /* do readpixels, drawpixels */ - glRasterPos2i(BPosX, 5); - PrintString("Read/DrawPixels"); - SetupPixelTransfer(ScaleAndBias); - /*** read into the Temp PBO */ - glBindBufferARB(GL_PIXEL_PACK_BUFFER_EXT, TempPBO); - CheckError(__LINE__); - if (Benchmark) { - GLint reads = 0; - GLint endTime; - GLint startTime = glutGet(GLUT_ELAPSED_TIME); - GLdouble seconds, pixelsPerSecond; - printf("Benchmarking...\n"); - do { - glReadPixels(APosX, APosY, ImgWidth, ImgHeight, - ReadFormat, ReadType, 0); - reads++; - endTime = glutGet(GLUT_ELAPSED_TIME); - } while (endTime - startTime < 4000); /* 4 seconds */ - seconds = (double) (endTime - startTime) / 1000.0; - pixelsPerSecond = reads * ImgWidth * ImgHeight / seconds; - printf("Result: %d reads in %f seconds = %f pixels/sec\n", - reads, seconds, pixelsPerSecond); - Benchmark = GL_FALSE; - } - else { - glReadPixels(APosX, APosY, ImgWidth, ImgHeight, - ReadFormat, ReadType, 0); - } - CheckError(__LINE__); - glRasterPos2i(BPosX, BPosY); - glDisable(GL_DITHER); - SetupPixelTransfer(GL_FALSE); - - CheckError(__LINE__); - - /*** draw from the Temp PBO */ - glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_EXT, TempPBO); - glDrawPixels(ImgWidth, ImgHeight, ReadFormat, ReadType, 0); - glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_EXT, 0); - - CheckError(__LINE__); - - /* do copypixels */ - glRasterPos2i(CPosX, 5); - PrintString("CopyPixels"); - glRasterPos2i(CPosX, CPosY); - glDisable(GL_DITHER); - SetupPixelTransfer(ScaleAndBias); - glCopyPixels(APosX, APosY, ImgWidth, ImgHeight, GL_COLOR); - - CheckError(__LINE__); - - if (!DrawFront) - glutSwapBuffers(); - else - glFinish(); -} - - -static void -Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glOrtho( 0.0, width, 0.0, height, -1.0, 1.0 ); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); -} - - -static void -Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 'b': - Benchmark = GL_TRUE; - break; - case 's': - ScaleAndBias = !ScaleAndBias; - break; - case 'f': - DrawFront = !DrawFront; - if (DrawFront) { - glDrawBuffer(GL_FRONT); - glReadBuffer(GL_FRONT); - } - else { - glDrawBuffer(GL_BACK); - glReadBuffer(GL_BACK); - } - printf("glDrawBuffer(%s)\n", DrawFront ? "GL_FRONT" : "GL_BACK"); - break; - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void -Init(void) -{ - printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - - if (!glutExtensionSupported("GL_EXT_pixel_buffer_object")) { - printf("Sorry, this demo requires GL_EXT_pixel_buffer_object\n"); - exit(0); - } - - Image = LoadRGBImage( IMAGE_FILE, &ImgWidth, &ImgHeight, &ImgFormat ); - if (!Image) { - printf("Couldn't read %s\n", IMAGE_FILE); - exit(0); - } - - printf("Loaded %d by %d image\n", ImgWidth, ImgHeight ); - - if (ImgFormat == GL_RGB) { - /* convert to RGBA */ - int i; - GLubyte *image2 = (GLubyte *) malloc(ImgWidth * ImgHeight * 4); - printf("Converting RGB image to RGBA\n"); - for (i = 0; i < ImgWidth * ImgHeight; i++) { - image2[i*4+0] = Image[i*3+0]; - image2[i*4+1] = Image[i*3+1]; - image2[i*4+2] = Image[i*3+2]; - image2[i*4+3] = 255; - } - free(Image); - Image = image2; - ImgFormat = GL_RGBA; - } - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glPixelStorei(GL_UNPACK_ROW_LENGTH, ImgWidth); - glPixelStorei(GL_PACK_ALIGNMENT, 1); - glPixelStorei(GL_PACK_ROW_LENGTH, ImgWidth); - - Reset(); - - /* put image into DrawPBO */ - glGenBuffersARB(1, &DrawPBO); - glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_EXT, DrawPBO); - glBufferDataARB(GL_PIXEL_UNPACK_BUFFER_EXT, - ImgWidth * ImgHeight * 4, Image, GL_STATIC_DRAW); - - /* Setup TempPBO - used for glReadPixels & glDrawPixels */ - glGenBuffersARB(1, &TempPBO); - glBindBufferARB(GL_PIXEL_PACK_BUFFER_EXT, TempPBO); - glBufferDataARB(GL_PIXEL_PACK_BUFFER_EXT, - ImgWidth * ImgHeight * 4, NULL, GL_DYNAMIC_COPY); - -} - - -int -main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 750, 250 ); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE ); - glutCreateWindow(argv[0]); - glewInit(); - Init(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/persp_hint.c b/progs/tests/persp_hint.c deleted file mode 100644 index 27140d1f56..0000000000 --- a/progs/tests/persp_hint.c +++ /dev/null @@ -1,149 +0,0 @@ -/* - * Test the GL_PERSPECTIVE_CORRECTION_HINT setting and its effect on - * color interpolation. - * - * Press 'i' to toggle between GL_NICEST/GL_FASTEST/GL_DONT_CARE. - * - * Depending on the driver, the hint may make a difference, or not. - */ - - -#include <stdlib.h> -#include <stdio.h> -#include <GL/glut.h> - - -static GLenum PerspHint = GL_DONT_CARE; - - -static void -init(void) -{ - GLubyte image[256][256][4]; - GLuint i, j; - for (i = 0; i < 256; i++) { - for (j = 0; j < 256; j++) { - image[i][j][0] = j; - image[i][j][1] = j; - image[i][j][2] = j; - image[i][j][3] = 255; - } - } - glTexImage2D(GL_TEXTURE_2D, 0, 4, 256, 256, 0, - GL_RGBA, GL_UNSIGNED_BYTE, image); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); - - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); -} - - -static void -display(void) -{ - switch (PerspHint) { - case GL_NICEST: - printf("hint = GL_NICEST\n"); - break; - case GL_FASTEST: - printf("hint = GL_FASTEST\n"); - break; - case GL_DONT_CARE: - printf("hint = GL_DONT_CARE\n"); - break; - default: - ; - } - - glClear(GL_COLOR_BUFFER_BIT); - -#if 1 - glBegin(GL_QUADS); - /* exercise perspective interpolation */ - glColor3f(0.0, 0.0, 0.0); glVertex3f(-1.0, -1.0, -1.0); - glColor3f(0.0, 0.0, 0.0); glVertex3f(-1.0, 1.0, -1.0); - glColor3f(0.0, 1.0, 0.0); glVertex3f( 7.0, 1.0, -7.0); - glColor3f(0.0, 1.0, 0.0); glVertex3f( 7.0, -1.0, -7.0); - - /* stripe of linear interpolation */ - glColor3f(0.0, 0.0, 0.0); glVertex3f(-1.0, -0.1, -1.001); - glColor3f(0.0, 0.0, 0.0); glVertex3f(-1.0, 0.1, -1.001); - glColor3f(0.0, 1.0, 0.0); glVertex3f( 1.0, 0.1, -1.001); - glColor3f(0.0, 1.0, 0.0); glVertex3f( 1.0, -0.1, -1.001); - glEnd(); -#else - glEnable(GL_TEXTURE_2D); - glBegin(GL_QUADS); - glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, 0.0, -1.0); - glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, 1.0, -1.0); - glTexCoord2f(1.0, 1.0); glVertex3f( 5.0, 1.0, -7.0); - glTexCoord2f(1.0, 0.0); glVertex3f( 5.0, 0.0, -7.0); - - glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, -1.0, -1.001); - glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, 0.0, -1.001); - glTexCoord2f(1.0, 1.0); glVertex3f( 1.0, 0.0, -1.001); - glTexCoord2f(1.0, 0.0); glVertex3f( 1.0, -1.0, -1.001); - glEnd(); -#endif - - glFlush(); -} - - -static void -reshape(int w, int h) -{ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(90.0, (GLfloat) w / h, 1.0, 300.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - - -static void -key(unsigned char k, int x, int y) -{ - switch (k) { - case 27: /* Escape */ - exit(0); - break; - case 'i': - if (PerspHint == GL_FASTEST) - PerspHint = GL_NICEST; - else if (PerspHint == GL_NICEST) - PerspHint = GL_DONT_CARE; - else - PerspHint = GL_FASTEST; - glHint(GL_PERSPECTIVE_CORRECTION_HINT, PerspHint); - break; - default: - return; - } - glutPostRedisplay(); -} - - -int -main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); - glutInitWindowSize (500, 500); - glutCreateWindow (argv[0]); - glutReshapeFunc (reshape); - glutDisplayFunc(display); - glutKeyboardFunc(key); - - printf("Main quad: perspective projection\n"); - printf("Middle stripe: linear interpolation\n"); - printf("Press 'i' to toggle interpolation hint\n"); - init(); - - glutMainLoop(); - return 0; -} diff --git a/progs/tests/prim.c b/progs/tests/prim.c deleted file mode 100644 index 3e006e823d..0000000000 --- a/progs/tests/prim.c +++ /dev/null @@ -1,559 +0,0 @@ -#define GL_GLEXT_PROTOTYPES -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define PIXEL_CENTER(x) ((long)(x) + 0.5) - -#define GAP 10 -#define ROWS 3 -#define COLS 4 - -#define OPENGL_WIDTH 48 -#define OPENGL_HEIGHT 13 - - -GLenum provoking = GL_LAST_VERTEX_CONVENTION_EXT; -GLenum rgb, doubleBuffer, windType; -GLint windW, windH; - -GLenum mode1, mode2; -GLint boxW, boxH; -GLubyte OpenGL_bits[] = { - 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x7f, 0xfb, 0xff, 0xff, 0xff, 0x01, - 0x7f, 0xfb, 0xff, 0xff, 0xff, 0x01, - 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x3e, 0x8f, 0xb7, 0xf9, 0xfc, 0x01, - 0x63, 0xdb, 0xb0, 0x8d, 0x0d, 0x00, - 0x63, 0xdb, 0xb7, 0x8d, 0x0d, 0x00, - 0x63, 0xdb, 0xb6, 0x8d, 0x0d, 0x00, - 0x63, 0x8f, 0xf3, 0xcc, 0x0d, 0x00, - 0x63, 0x00, 0x00, 0x0c, 0x4c, 0x0a, - 0x63, 0x00, 0x00, 0x0c, 0x4c, 0x0e, - 0x63, 0x00, 0x00, 0x8c, 0xed, 0x0e, - 0x3e, 0x00, 0x00, 0xf8, 0x0c, 0x00, -}; - - -#include "tkmap.c" - -static void Init(void) -{ - - mode1 = GL_TRUE; - mode2 = GL_TRUE; -} - -static void Reshape(int width, int height) -{ - - windW = (GLint)width; - windH = (GLint)height; -} - -static void RotateColorMask(void) -{ - static GLint rotation = 0; - - rotation = (rotation + 1) & 0x3; - switch (rotation) { - case 0: - glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); - glIndexMask( 0xff ); - break; - case 1: - glColorMask(GL_FALSE, GL_TRUE, GL_TRUE, GL_TRUE); - glIndexMask(0xFE); - break; - case 2: - glColorMask(GL_TRUE, GL_FALSE, GL_TRUE, GL_TRUE); - glIndexMask(0xFD); - break; - case 3: - glColorMask(GL_TRUE, GL_TRUE, GL_FALSE, GL_TRUE); - glIndexMask(0xFB); - break; - } -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - case '1': - mode1 = !mode1; - break; - case '2': - mode2 = !mode2; - break; - case '3': - RotateColorMask(); - break; - case 'p': - if (provoking == GL_FIRST_VERTEX_CONVENTION_EXT) { - printf("provoke last\n"); - provoking = GL_LAST_VERTEX_CONVENTION_EXT; - } - else { - printf("provoke first\n"); - provoking = GL_FIRST_VERTEX_CONVENTION_EXT; - } - glProvokingVertexEXT(provoking); - break; - default: - return; - } - - glutPostRedisplay(); -} - -static void Viewport(GLint row, GLint column) -{ - GLint x, y; - - boxW = (windW - (COLS + 1) * GAP) / COLS; - boxH = (windH - (ROWS + 1) * GAP) / ROWS; - - x = GAP + column * (boxW + GAP); - y = GAP + row * (boxH + GAP); - - glViewport(x, y, boxW, boxH); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-boxW/2, boxW/2, -boxH/2, boxH/2, 0.0, 1.0); - glMatrixMode(GL_MODELVIEW); - - glEnable(GL_SCISSOR_TEST); - glScissor(x, y, boxW, boxH); -} - -static void Point(void) -{ - GLint i; - - glBegin(GL_POINTS); - SetColor(COLOR_WHITE); - glVertex2i(0, 0); - for (i = 1; i < 8; i++) { - GLint j = i * 2; - SetColor(COLOR_BLACK+i); - glVertex2i(-j, -j); - glVertex2i(-j, 0); - glVertex2i(-j, j); - glVertex2i(0, j); - glVertex2i(j, j); - glVertex2i(j, 0); - glVertex2i(j, -j); - glVertex2i(0, -j); - } - glEnd(); -} - -static void Lines(void) -{ - GLint i; - - glPushMatrix(); - - glTranslatef(-12, 0, 0); - for (i = 1; i < 8; i++) { - glBegin(GL_LINES); - SetColor(COLOR_BLACK+i); - glVertex2i(-boxW/4, -boxH/4); - SetColor(COLOR_BLACK+i+1); - glVertex2i(boxW/4, boxH/4); - glEnd(); - glTranslatef(4, 0, 0); - } - - glPopMatrix(); - - glBegin(GL_LINES); - glVertex2i(0, 0); - glEnd(); -} - -static void LineStrip(void) -{ - - glBegin(GL_LINE_STRIP); - SetColor(COLOR_RED); - glVertex2f(PIXEL_CENTER(-boxW/4), PIXEL_CENTER(-boxH/4)); - SetColor(COLOR_GREEN); - glVertex2f(PIXEL_CENTER(-boxW/4), PIXEL_CENTER(boxH/4)); - SetColor(COLOR_BLUE); - glVertex2f(PIXEL_CENTER(boxW/4), PIXEL_CENTER(boxH/4)); - SetColor(COLOR_WHITE); - glVertex2f(PIXEL_CENTER(boxW/4), PIXEL_CENTER(-boxH/4)); - glEnd(); - - glBegin(GL_LINE_STRIP); - glVertex2i(0, 0); - glEnd(); -} - -static void LineLoop(void) -{ - - glBegin(GL_LINE_LOOP); - SetColor(COLOR_RED); - glVertex2f(PIXEL_CENTER(-boxW/4), PIXEL_CENTER(-boxH/4)); - SetColor(COLOR_GREEN); - glVertex2f(PIXEL_CENTER(-boxW/4), PIXEL_CENTER(boxH/4)); - SetColor(COLOR_BLUE); - glVertex2f(PIXEL_CENTER(boxW/4), PIXEL_CENTER(boxH/4)); - SetColor(COLOR_WHITE); - glVertex2f(PIXEL_CENTER(boxW/4), PIXEL_CENTER(-boxH/4)); - glEnd(); - - glEnable(GL_LOGIC_OP); - glLogicOp(GL_XOR); - - glEnable(GL_BLEND); - glBlendFunc(GL_ONE, GL_ONE); - - SetColor(COLOR_MAGENTA); - glBegin(GL_LINE_LOOP); - glVertex2f(PIXEL_CENTER(-boxW/8), PIXEL_CENTER(-boxH/8)); - glVertex2f(PIXEL_CENTER(-boxW/8), PIXEL_CENTER(boxH/8)); - glEnd(); - glBegin(GL_LINE_LOOP); - glVertex2f(PIXEL_CENTER(-boxW/8), PIXEL_CENTER(boxH/8+5)); - glVertex2f(PIXEL_CENTER(boxW/8), PIXEL_CENTER(boxH/8+5)); - glEnd(); - glDisable(GL_LOGIC_OP); - glDisable(GL_BLEND); - - SetColor(COLOR_GREEN); - glBegin(GL_POINTS); - glVertex2i(0, 0); - glEnd(); - - glBegin(GL_LINE_LOOP); - glVertex2i(0, 0); - glEnd(); -} - -static void Bitmap(void) -{ - - glBegin(GL_LINES); - SetColor(COLOR_GREEN); - glVertex2i(-boxW/2, 0); - glVertex2i(boxW/2, 0); - glVertex2i(0, -boxH/2); - glVertex2i(0, boxH/2); - SetColor(COLOR_RED); - glVertex2i(0, -3); - glVertex2i(0, -3+OPENGL_HEIGHT); - SetColor(COLOR_BLUE); - glVertex2i(0, -3); - glVertex2i(OPENGL_WIDTH, -3); - glEnd(); - - SetColor(COLOR_GREEN); - - glPixelStorei(GL_UNPACK_LSB_FIRST, GL_TRUE); - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - - glRasterPos2i(0, 0); - glBitmap(OPENGL_WIDTH, OPENGL_HEIGHT, 0, 3, 0.0, 0.0, OpenGL_bits); -} - -static void Triangles(void) -{ - - glBegin(GL_TRIANGLES); - SetColor(COLOR_GREEN); - glVertex2i(-boxW/4, -boxH/4); - SetColor(COLOR_RED); - glVertex2i(-boxW/8, -boxH/16); - SetColor(COLOR_BLUE); - glVertex2i(boxW/8, -boxH/16); - - SetColor(COLOR_GREEN); - glVertex2i(-boxW/4, boxH/4); - SetColor(COLOR_RED); - glVertex2i(-boxW/8, boxH/16); - SetColor(COLOR_BLUE); - glVertex2i(boxW/8, boxH/16); - glEnd(); - - glBegin(GL_TRIANGLES); - glVertex2i(0, 0); - glVertex2i(-100, 100); - glEnd(); -} - -static void TriangleStrip(void) -{ - - glBegin(GL_TRIANGLE_STRIP); - SetColor(COLOR_GREEN); - glVertex2i(-boxW/4, -boxH/4); - SetColor(COLOR_RED); - glVertex2i(-boxW/4, boxH/4); - SetColor(COLOR_BLUE); - glVertex2i(0, -boxH/4); - SetColor(COLOR_WHITE); - glVertex2i(0, boxH/4); - SetColor(COLOR_CYAN); - glVertex2i(boxW/4, -boxH/4); - SetColor(COLOR_YELLOW); - glVertex2i(boxW/4, boxH/4); - glEnd(); - - glBegin(GL_TRIANGLE_STRIP); - glVertex2i(0, 0); - glVertex2i(-100, 100); - glEnd(); -} - -static void TriangleFan(void) -{ - GLint vx[8][2]; - GLint x0, y0, x1, y1, x2, y2, x3, y3; - GLint i; - - y0 = -boxH/4; - y1 = y0 + boxH/2/3; - y2 = y1 + boxH/2/3; - y3 = boxH/4; - x0 = -boxW/4; - x1 = x0 + boxW/2/3; - x2 = x1 + boxW/2/3; - x3 = boxW/4; - - vx[0][0] = x0; vx[0][1] = y1; - vx[1][0] = x0; vx[1][1] = y2; - vx[2][0] = x1; vx[2][1] = y3; - vx[3][0] = x2; vx[3][1] = y3; - vx[4][0] = x3; vx[4][1] = y2; - vx[5][0] = x3; vx[5][1] = y1; - vx[6][0] = x2; vx[6][1] = y0; - vx[7][0] = x1; vx[7][1] = y0; - - glBegin(GL_TRIANGLE_FAN); - SetColor(COLOR_WHITE); - glVertex2i(0, 0); - for (i = 0; i < 8; i++) { - SetColor(COLOR_WHITE-i); - glVertex2iv(vx[i]); - } - glEnd(); - - glBegin(GL_TRIANGLE_FAN); - glVertex2i(0, 0); - glVertex2i(-100, 100); - glEnd(); -} - -static void Rect(void) -{ - - SetColor(COLOR_GREEN); - glRecti(-boxW/4, -boxH/4, boxW/4, boxH/4); -} - -static void PolygonFunc(void) -{ - GLint vx[8][2]; - GLint x0, y0, x1, y1, x2, y2, x3, y3; - GLint i; - - y0 = -boxH/4; - y1 = y0 + boxH/2/3; - y2 = y1 + boxH/2/3; - y3 = boxH/4; - x0 = -boxW/4; - x1 = x0 + boxW/2/3; - x2 = x1 + boxW/2/3; - x3 = boxW/4; - - vx[0][0] = x0; vx[0][1] = y1; - vx[1][0] = x0; vx[1][1] = y2; - vx[2][0] = x1; vx[2][1] = y3; - vx[3][0] = x2; vx[3][1] = y3; - vx[4][0] = x3; vx[4][1] = y2; - vx[5][0] = x3; vx[5][1] = y1; - vx[6][0] = x2; vx[6][1] = y0; - vx[7][0] = x1; vx[7][1] = y0; - - glBegin(GL_POLYGON); - for (i = 0; i < 8; i++) { - SetColor(COLOR_WHITE-i); - glVertex2iv(vx[i]); - } - glEnd(); - - glBegin(GL_POLYGON); - glVertex2i(0, 0); - glVertex2i(100, 100); - glEnd(); -} - -static void Quads(void) -{ - - glBegin(GL_QUADS); - SetColor(COLOR_GREEN); - glVertex2i(-boxW/4, -boxH/4); - SetColor(COLOR_RED); - glVertex2i(-boxW/8, -boxH/16); - SetColor(COLOR_BLUE); - glVertex2i(boxW/8, -boxH/16); - SetColor(COLOR_WHITE); - glVertex2i(boxW/4, -boxH/4); - - SetColor(COLOR_GREEN); - glVertex2i(-boxW/4, boxH/4); - SetColor(COLOR_RED); - glVertex2i(-boxW/8, boxH/16); - SetColor(COLOR_BLUE); - glVertex2i(boxW/8, boxH/16); - SetColor(COLOR_WHITE); - glVertex2i(boxW/4, boxH/4); - glEnd(); - - glBegin(GL_QUADS); - glVertex2i(0, 0); - glVertex2i(100, 100); - glVertex2i(-100, 100); - glEnd(); -} - -static void QuadStrip(void) -{ - - glBegin(GL_QUAD_STRIP); - SetColor(COLOR_GREEN); - glVertex2i(-boxW/4, -boxH/4); - SetColor(COLOR_RED); - glVertex2i(-boxW/4, boxH/4); - SetColor(COLOR_BLUE); - glVertex2i(0, -boxH/4); - SetColor(COLOR_WHITE); - glVertex2i(0, boxH/4); - SetColor(COLOR_CYAN); - glVertex2i(boxW/4, -boxH/4); - SetColor(COLOR_YELLOW); - glVertex2i(boxW/4, boxH/4); - glEnd(); - - glBegin(GL_QUAD_STRIP); - glVertex2i(0, 0); - glVertex2i(100, 100); - glVertex2i(-100, 100); - glEnd(); -} - -static void Draw(void) -{ - - glViewport(0, 0, windW, windH); - glDisable(GL_SCISSOR_TEST); - - glPushAttrib(GL_COLOR_BUFFER_BIT); - - glColorMask(1, 1, 1, 1); - glIndexMask(~0); - - glClearColor(0.0, 0.0, 0.0, 0.0); - glClear(GL_COLOR_BUFFER_BIT); - - glPopAttrib(); - - if (mode1) { - glShadeModel(GL_SMOOTH); - } else { - glShadeModel(GL_FLAT); - } - - if (mode2) { - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); - } else { - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - } - - Viewport(0, 0); Point(); - Viewport(0, 1); Lines(); - Viewport(0, 2); LineStrip(); - Viewport(0, 3); LineLoop(); - - Viewport(1, 0); Bitmap(); - Viewport(1, 1); TriangleFan(); - Viewport(1, 2); Triangles(); - Viewport(1, 3); TriangleStrip(); - - Viewport(2, 0); Rect(); - Viewport(2, 1); PolygonFunc(); - Viewport(2, 2); Quads(); - Viewport(2, 3); QuadStrip(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - rgb = GL_TRUE; - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-ci") == 0) { - rgb = GL_FALSE; - } else if (strcmp(argv[i], "-rgb") == 0) { - rgb = GL_TRUE; - } else if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - printf("%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - windW = 600; - windH = 300; - glutInitWindowPosition(0, 0); glutInitWindowSize( windW, windH); - - windType = (rgb) ? GLUT_RGB : GLUT_INDEX; - windType |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(windType); - - if (glutCreateWindow("Primitive Test") == GL_FALSE) { - exit(1); - } - - InitMap(); - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/prog_parameter.c b/progs/tests/prog_parameter.c deleted file mode 100644 index 2de7e2994a..0000000000 --- a/progs/tests/prog_parameter.c +++ /dev/null @@ -1,292 +0,0 @@ -/* - * (C) Copyright IBM Corporation 2006 - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * on the rights to use, copy, modify, merge, publish, distribute, sub - * license, and/or sell copies of the Software, and to permit persons to whom - * the Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL - * IBM AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ - -/** - * \file prog_parameter.c - * - * Test various aspects of setting (and getting) low-level program parameters. - * This is primarilly intended as a test for GL_EXT_gpu_program_parameters, - * but it turns out that it hits some other functionality along the way. - * - * \author Ian Romanick <idr@us.ibm.com> - */ - -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - -#ifndef GL_EXT_gpu_program_parameters -typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC)(GLenum, - GLuint, GLsizei, const GLfloat *); -typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERS4FVEXTPROC)(GLenum, - GLuint, GLsizei, const GLfloat *); -#endif - -static PFNGLPROGRAMLOCALPARAMETER4FVARBPROC program_local_parameter4fv = NULL; -static PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC get_program_local_parameterfv = NULL; -static PFNGLPROGRAMENVPARAMETER4FVARBPROC program_env_parameter4fv = NULL; -static PFNGLGETPROGRAMENVPARAMETERFVARBPROC get_program_env_parameterfv = NULL; -static PFNGLBINDPROGRAMARBPROC bind_program = NULL; -static PFNGLGETPROGRAMIVARBPROC get_program = NULL; - -static PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC program_local_parameters4fv = NULL; -static PFNGLPROGRAMENVPARAMETERS4FVEXTPROC program_env_parameters4fv = NULL; - -static int Width = 400; -static int Height = 200; -static const GLfloat Near = 5.0, Far = 25.0; - - -static void Display( void ) -{ -} - - -static void Idle( void ) -{ -} - - -static void Visible( int vis ) -{ - if ( vis == GLUT_VISIBLE ) { - glutIdleFunc( Idle ); - } - else { - glutIdleFunc( NULL ); - } -} -static void Reshape( int width, int height ) -{ - GLfloat ar = (float) width / (float) height; - Width = width; - Height = height; - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -ar, ar, -1.0, 1.0, Near, Far ); -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static int set_parameter_batch( GLsizei count, GLfloat * param, - const char * name, - PFNGLPROGRAMLOCALPARAMETER4FVARBPROC set_parameter, - PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC set_parameters, - PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC get_parameter - ) -{ - unsigned i; - int pass = 1; - - - for ( i = 0 ; i < (4 * count) ; i++ ) { - param[i] = (GLfloat) rand() / (GLfloat) rand(); - } - - /* Try using the "classic" interface. - */ - printf("Testing glProgram%sParameter4fvARB (count = %u)...\n", name, count); - for ( i = 0 ; i < count ; i++ ) { - (*set_parameter)(GL_VERTEX_PROGRAM_ARB, i, & param[i * 4]); - } - - for ( i = 0 ; i < count ; i++ ) { - GLfloat temp[4]; - - (*get_parameter)(GL_VERTEX_PROGRAM_ARB, i, temp); - - if ( (temp[0] != param[(i * 4) + 0]) - || (temp[1] != param[(i * 4) + 1]) - || (temp[2] != param[(i * 4) + 2]) - || (temp[3] != param[(i * 4) + 3]) ) { - printf("Mismatch in glProgram%sParameter4fvARB index %u!\n", name, i); - printf("Got { %f, %f, %f, %f }, expected { %f, %f, %f, %f }!\n", - temp[0], temp[1], - temp[2], temp[3], - param[(i * 4) + 0], param[(i * 4) + 1], - param[(i * 4) + 2], param[(i * 4) + 3]); - pass = 0; - break; - } - } - - - if ( set_parameters == NULL ) { - return pass; - } - - - for ( i = 0 ; i < (4 * count) ; i++ ) { - param[i] = (GLfloat) rand() / (GLfloat) rand(); - } - - printf("Testing glProgram%sParameters4fvEXT (count = %u)...\n", name, count); - (*set_parameters)(GL_VERTEX_PROGRAM_ARB, 0, count, param); - - for ( i = 0 ; i < count ; i++ ) { - GLfloat temp[4]; - - (*get_parameter)(GL_VERTEX_PROGRAM_ARB, i, temp); - - if ( (temp[0] != param[(i * 4) + 0]) - || (temp[1] != param[(i * 4) + 1]) - || (temp[2] != param[(i * 4) + 2]) - || (temp[3] != param[(i * 4) + 3]) ) { - printf("Mismatch in glProgram%sParameters4fvEXT index %u!\n", name, i); - printf("Got { %f, %f, %f, %f }, expected { %f, %f, %f, %f }!\n", - temp[0], temp[1], - temp[2], temp[3], - param[(i * 4) + 0], param[(i * 4) + 1], - param[(i * 4) + 2], param[(i * 4) + 3]); - pass = 0; - break; - } - } - - - return pass; -} - - -static void Init( void ) -{ - const char * const ver_string = (const char * const) - glGetString( GL_VERSION ); - int pass = 1; - GLfloat * params; - GLint max_program_env_parameters; - GLint max_program_local_parameters; - int i; - - - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - printf("GL_VERSION = %s\n\n", ver_string); - - if ( !glutExtensionSupported("GL_ARB_vertex_program") ) { - printf("Sorry, this program requires GL_ARB_vertex_program\n"); - exit(2); - } - - - program_local_parameter4fv = (PFNGLPROGRAMLOCALPARAMETER4FVARBPROC) glutGetProcAddress( "glProgramLocalParameter4fvARB" ); - program_env_parameter4fv = (PFNGLPROGRAMENVPARAMETER4FVARBPROC) glutGetProcAddress( "glProgramEnvParameter4fvARB" ); - - get_program_local_parameterfv = (PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC) glutGetProcAddress( "glGetProgramLocalParameterfvARB" ); - get_program_env_parameterfv = (PFNGLGETPROGRAMENVPARAMETERFVARBPROC) glutGetProcAddress( "glGetProgramEnvParameterfvARB" ); - - bind_program = (PFNGLBINDPROGRAMARBPROC) glutGetProcAddress( "glBindProgramARB" ); - get_program = (PFNGLGETPROGRAMIVARBPROC) glutGetProcAddress( "glGetProgramivARB" ); - - if ( glutExtensionSupported("GL_EXT_gpu_program_parameters") ) { - printf("GL_EXT_gpu_program_parameters available, testing that path.\n"); - - program_local_parameters4fv = (PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC) glutGetProcAddress( "glProgramLocalParameters4fvEXT" ); - program_env_parameters4fv = (PFNGLPROGRAMENVPARAMETERS4FVEXTPROC) glutGetProcAddress( "glProgramEnvParameters4fvEXT" ); - } - else { - printf("GL_EXT_gpu_program_parameters not available.\n"); - - program_local_parameters4fv = NULL; - program_env_parameters4fv = NULL; - } - - - - /* Since the test sets program local parameters, a program must be bound. - * Program source, however, is not needed. - */ - (*bind_program)(GL_VERTEX_PROGRAM_ARB, 1); - - - (*get_program)(GL_VERTEX_PROGRAM_ARB, GL_MAX_PROGRAM_ENV_PARAMETERS_ARB, - & max_program_env_parameters); - - params = malloc(max_program_env_parameters * 4 * sizeof(GLfloat)); - - for (i = 0; i < max_program_env_parameters * 4; i++) { - params[i] = 0.0F; - } - - pass &= set_parameter_batch(max_program_env_parameters, params, "Env", - program_env_parameter4fv, - program_env_parameters4fv, - get_program_env_parameterfv); - - - (*get_program)(GL_VERTEX_PROGRAM_ARB, GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB, - & max_program_local_parameters); - - if (max_program_local_parameters > max_program_env_parameters) { - params = realloc(params, - max_program_local_parameters * 4 * sizeof(GLfloat)); - } - - pass &= set_parameter_batch(max_program_local_parameters, params, "Local", - program_local_parameter4fv, - program_local_parameters4fv, - get_program_local_parameterfv); - - free(params); - - if (! pass) { - printf("FAIL!\n"); - exit(1); - } - - printf("PASS!\n"); -} - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( Width, Height ); - glutInitDisplayMode( GLUT_RGB ); - glutCreateWindow( "Program Parameters Test" ); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - glutVisibilityFunc( Visible ); - - Init(); - - return 0; -} diff --git a/progs/tests/quads.c b/progs/tests/quads.c deleted file mode 100644 index e5b9920b66..0000000000 --- a/progs/tests/quads.c +++ /dev/null @@ -1,262 +0,0 @@ -/** - * Draw colored quads. - */ - - -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - -#define NUM_QUADS 20 - - -static int Win; -static GLfloat Xrot = 40, Yrot = 0, Zrot = 0; -static GLboolean Anim = GL_TRUE; -static GLuint Vbuffer = 0; - -#if 1 -#else -static GLfloat buf[NUM_QUADS * 6 * 4]; -#endif - -static GLboolean doSwapBuffers = GL_TRUE; - -static GLint Frames = 0, T0 = 0; - - -static void -Idle(void) -{ - Xrot += 3.0; - Yrot += 4.0; - Zrot += 2.0; - glutPostRedisplay(); -} - - -static void -Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glPushMatrix(); - glRotatef(Xrot, 1, 0, 0); - glRotatef(Yrot, 0, 1, 0); - glRotatef(Zrot, 0, 0, 1); - - glDrawArrays(GL_QUADS, 0, NUM_QUADS*4); - - glPopMatrix(); - - if (doSwapBuffers) - glutSwapBuffers(); - /* - else - glFinish(); - */ - - { - GLint t = glutGet(GLUT_ELAPSED_TIME); - Frames++; - if (t - T0 >= 5000) { - GLfloat seconds = (t - T0) / 1000.0; - GLfloat fps = Frames / seconds; - printf("%d frames in %6.3f seconds = %6.3f FPS\n", - Frames, seconds, fps); - T0 = t; - Frames = 0; - } - } -} - - -static void -Reshape(int width, int height) -{ - glViewport(0, 0, width, height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-1.0, 1.0, -1.0, 1.0, 5.0, 25.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0, 0.0, -8.0); -} - - -static void -Key(unsigned char key, int x, int y) -{ - const GLfloat step = 3.0; - (void) x; - (void) y; - switch (key) { - case 's': - doSwapBuffers = !doSwapBuffers; - break; - case 'a': - Anim = !Anim; - if (Anim) - glutIdleFunc(Idle); - else - glutIdleFunc(NULL); - break; - case 'z': - Zrot -= step; - break; - case 'Z': - Zrot += step; - break; - case 27: - glutDestroyWindow(Win); - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void -SpecialKey(int key, int x, int y) -{ - const GLfloat step = 3.0; - (void) x; - (void) y; - switch (key) { - case GLUT_KEY_UP: - Xrot -= step; - break; - case GLUT_KEY_DOWN: - Xrot += step; - break; - case GLUT_KEY_LEFT: - Yrot -= step; - break; - case GLUT_KEY_RIGHT: - Yrot += step; - break; - } - glutPostRedisplay(); -} - - -static void -quad(float x, float y, float z, float *v) -{ - int k = 0; - - /* color */ - v[k++] = x * 0.5 + 0.5; - v[k++] = y * 0.5 + 0.5; - v[k++] = z * 0.5 + 0.5; - /* vert */ - v[k++] = x; - v[k++] = y; - v[k++] = z; - - /* color */ - v[k++] = -x * 0.5 + 0.5; - v[k++] = -y * 0.5 + 0.5; - v[k++] = z * 0.5 + 0.5; - /* vert */ - v[k++] = -x; - v[k++] = -y; - v[k++] = z; - - /* color */ - v[k++] = -x * 0.5 + 0.5; - v[k++] = -y * 0.5 + 0.5; - v[k++] = -z * 0.5 + 0.5; - /* vert */ - v[k++] = -x; - v[k++] = -y; - v[k++] = -z; - - /* color */ - v[k++] = x * 0.5 + 0.5; - v[k++] = y * 0.5 + 0.5; - v[k++] = -z * 0.5 + 0.5; - /* vert */ - v[k++] = x; - v[k++] = y; - v[k++] = -z; -} - -static void -gen_quads(GLfloat *buf) -{ - float *v = buf; - float r = 1.0; - int i; - - for (i = 0; i < NUM_QUADS; i++) { - float angle = i / (float) NUM_QUADS * M_PI; - float x = r * cos(angle); - float y = r * sin(angle); - float z = 1.10; - quad(x, y, z, v); - v += 24; - } - - if (0) { - float *p = buf; - for (i = 0; i < NUM_QUADS * 4 * 2; i++) { - printf("%d: %f %f %f\n", i, p[0], p[1], p[2]); - p += 3; - } - } -} - - -static void -Init(void) -{ - int bytes = NUM_QUADS * 4 * 2 * 3 * sizeof(float); - GLfloat *f; - -#if 1 - glGenBuffers(1, &Vbuffer); - glBindBuffer(GL_ARRAY_BUFFER, Vbuffer); - glBufferData(GL_ARRAY_BUFFER_ARB, bytes, NULL, GL_STATIC_DRAW_ARB); - f = (float *) glMapBuffer(GL_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB); - gen_quads(f); - glUnmapBuffer(GL_ARRAY_BUFFER_ARB); - glColorPointer(3, GL_FLOAT, 6*sizeof(float), (void *) 0); - glVertexPointer(3, GL_FLOAT, 6*sizeof(float), (void *) 12); -#else - f = buf; - gen_quads(f); - glColorPointer(3, GL_FLOAT, 6*sizeof(float), buf); - glVertexPointer(3, GL_FLOAT, 6*sizeof(float), buf + 3); -#endif - - glEnableClientState(GL_COLOR_ARRAY); - glEnableClientState(GL_VERTEX_ARRAY); - - glEnable(GL_DEPTH_TEST); - - glClearColor(0.5, 0.5, 0.5, 0.0); -} - - -int -main(int argc, char *argv[]) -{ - glutInit(&argc, argv); - glutInitWindowPosition(0, 0); - glutInitWindowSize(600, 600); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); - Win = glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutSpecialFunc(SpecialKey); - glutDisplayFunc(Draw); - if (Anim) - glutIdleFunc(Idle); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/random.c b/progs/tests/random.c deleted file mode 100644 index 604b4d4088..0000000000 --- a/progs/tests/random.c +++ /dev/null @@ -1,458 +0,0 @@ -/** - * Random rendering, to check for crashes, hangs, etc. - * - * Brian Paul - * 21 June 2007 - */ - - -#include <assert.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - -static int Win; -static GLboolean Anim = GL_TRUE; -static int Width = 200, Height = 200; -static int DB = 0; -static int MinVertexCount = 0, MaxVertexCount = 1000; -static int Count = 0; - -struct vertex -{ - int type; - float v[4]; -}; - -static int BufferSize = 10000; -static struct vertex *Vbuffer = NULL; -static int Vcount, Vprim; - -enum { - BEGIN, - END, - VERTEX2, - VERTEX3, - VERTEX4, - COLOR3, - COLOR4, - TEX2, - TEX3, - TEX4, - SECCOLOR3, - NORMAL3 -}; - - - -/** - * This can be called from within gdb after a crash: - * (gdb) call ReportState() - */ -static void -ReportState(void) -{ - static const struct { - GLenum token; - char *str; - GLenum type; - } state [] = { - { GL_ALPHA_TEST, "GL_ALPHA_TEST", GL_INT }, - { GL_BLEND, "GL_BLEND", GL_INT }, - { GL_CLIP_PLANE0, "GL_CLIP_PLANE0", GL_INT }, - { GL_DEPTH_TEST, "GL_DEPTH_TEST", GL_INT }, - { GL_LIGHTING, "GL_LIGHTING", GL_INT }, - { GL_LINE_WIDTH, "GL_LINE_WIDTH", GL_FLOAT }, - { GL_POINT_SIZE, "GL_POINT_SIZE", GL_FLOAT }, - { GL_SHADE_MODEL, "GL_SHADE_MODEL", GL_INT }, - { GL_SCISSOR_TEST, "GL_SCISSOR_TEST", GL_INT }, - { 0, NULL, 0 } - }; - - GLint i; - - for (i = 0; state[i].token; i++) { - if (state[i].type == GL_INT) { - GLint v; - glGetIntegerv(state[i].token, &v); - printf("%s = %d\n", state[i].str, v); - } - else { - GLfloat v; - glGetFloatv(state[i].token, &v); - printf("%s = %f\n", state[i].str, v); - } - } -} - -static void -PrintVertex(const char *f, const struct vertex *v, int sz) -{ - int i; - printf("%s(", f); - for (i = 0; i < sz; i++) { - printf("%g%s", v->v[i], (i == sz-1) ? "" : ", "); - } - printf(");\n"); -} - -/** - * This can be called from within gdb after a crash: - * (gdb) call ReportState() - */ -static void -LastPrim(void) -{ - int i; - for (i = 0; i < Vcount; i++) { - switch (Vbuffer[i].type) { - case BEGIN: - printf("glBegin(%d);\n", (int) Vbuffer[i].v[0]); - break; - case END: - printf("glEnd();\n"); - break; - case VERTEX2: - PrintVertex("glVertex2f", Vbuffer + i, 2); - break; - case VERTEX3: - PrintVertex("glVertex3f", Vbuffer + i, 3); - break; - case VERTEX4: - PrintVertex("glVertex4f", Vbuffer + i, 4); - break; - case COLOR3: - PrintVertex("glColor3f", Vbuffer + i, 3); - break; - case COLOR4: - PrintVertex("glColor4f", Vbuffer + i, 4); - break; - case TEX2: - PrintVertex("glTexCoord2f", Vbuffer + i, 2); - break; - case TEX3: - PrintVertex("glTexCoord3f", Vbuffer + i, 3); - break; - case TEX4: - PrintVertex("glTexCoord4f", Vbuffer + i, 4); - break; - case SECCOLOR3: - PrintVertex("glSecondaryColor3f", Vbuffer + i, 3); - break; - case NORMAL3: - PrintVertex("glNormal3f", Vbuffer + i, 3); - break; - default: - abort(); - } - } -} - - -static int -RandomInt(int max) -{ - if (max == 0) - return 0; - return rand() % max; -} - -static float -RandomFloat(float min, float max) -{ - int k = rand() % 10000; - float x = min + (max - min) * k / 10000.0; - return x; -} - -/* - * Return true if random number in [0,1] is <= percentile. - */ -static GLboolean -RandomChoice(float percentile) -{ - return RandomFloat(0.0, 1.0) <= percentile; -} - -static void -RandomStateChange(void) -{ - int k = RandomInt(19); - switch (k) { - case 0: - glEnable(GL_BLEND); - break; - case 1: - glDisable(GL_BLEND); - break; - case 2: - glEnable(GL_ALPHA_TEST); - break; - case 3: - glEnable(GL_ALPHA_TEST); - break; - case 4: - glEnable(GL_DEPTH_TEST); - break; - case 5: - glEnable(GL_DEPTH_TEST); - break; - case 6: - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - break; - case 7: - glPointSize(10.0); - break; - case 8: - glPointSize(1.0); - break; - case 9: - glLineWidth(10.0); - break; - case 10: - glLineWidth(1.0); - break; - case 11: - glEnable(GL_LIGHTING); - break; - case 12: - glDisable(GL_LIGHTING); - break; - case 13: - glEnable(GL_SCISSOR_TEST); - break; - case 14: - glDisable(GL_SCISSOR_TEST); - break; - case 15: - glEnable(GL_CLIP_PLANE0); - break; - case 16: - glDisable(GL_CLIP_PLANE0); - break; - case 17: - glShadeModel(GL_FLAT); - break; - case 18: - glShadeModel(GL_SMOOTH); - break; - } -} - - -static void -RandomPrimitive(void) -{ - int i; - int len = MinVertexCount + RandomInt(MaxVertexCount - MinVertexCount); - - Vprim = RandomInt(10); - - glBegin(Vprim); - Vbuffer[Vcount].type = BEGIN; - Vbuffer[Vcount].v[0] = Vprim; - Vcount++; - - for (i = 0; i < len; i++) { - int k = RandomInt(9); - Vbuffer[Vcount].v[0] = RandomFloat(-3, 3); - Vbuffer[Vcount].v[1] = RandomFloat(-3, 3); - Vbuffer[Vcount].v[2] = RandomFloat(-3, 3); - Vbuffer[Vcount].v[3] = RandomFloat(-3, 3); - switch (k) { - case 0: - glVertex2fv(Vbuffer[Vcount].v); - Vbuffer[Vcount].type = VERTEX2; - break; - case 1: - glVertex3fv(Vbuffer[Vcount].v); - Vbuffer[Vcount].type = VERTEX3; - break; - case 2: - glVertex4fv(Vbuffer[Vcount].v); - Vbuffer[Vcount].type = VERTEX4; - break; - case 3: - glColor3fv(Vbuffer[Vcount].v); - Vbuffer[Vcount].type = COLOR3; - break; - case 4: - glColor4fv(Vbuffer[Vcount].v); - Vbuffer[Vcount].type = COLOR4; - break; - case 5: - glTexCoord2fv(Vbuffer[Vcount].v); - Vbuffer[Vcount].type = TEX2; - break; - case 6: - glTexCoord3fv(Vbuffer[Vcount].v); - Vbuffer[Vcount].type = TEX3; - break; - case 7: - glTexCoord4fv(Vbuffer[Vcount].v); - Vbuffer[Vcount].type = TEX4; - break; - case 8: - glSecondaryColor3fv(Vbuffer[Vcount].v); - Vbuffer[Vcount].type = SECCOLOR3; - break; - case 9: - glNormal3fv(Vbuffer[Vcount].v); - Vbuffer[Vcount].type = NORMAL3; - break; - default: - abort(); - } - Vcount++; - - if (Vcount >= BufferSize - 2) { - /* reset */ - Vcount = 0; - } - } - - Vbuffer[Vcount++].type = END; - - glEnd(); -} - - -static void -RandomDraw(void) -{ - int i; - GLboolean dlist = RandomChoice(0.1); - if (dlist) - glNewList(1, GL_COMPILE); - for (i = 0; i < 3; i++) { - RandomStateChange(); - } - RandomPrimitive(); - - if (dlist) { - glEndList(); - glCallList(1); - } -} - - -static void -Idle(void) -{ - glutPostRedisplay(); -} - - -static void -Draw(void) -{ -#if 1 - RandomDraw(); - Count++; -#else - /* cut & paste temp code here */ -#endif - - assert(glGetError() == 0); - - if (DB) - glutSwapBuffers(); - else - glFinish(); -} - - -static void -Reshape(int width, int height) -{ - Width = width; - Height = height; - glViewport(0, 0, width, height); - glScissor(20, 20, Width-40, Height-40); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-1.0, 1.0, -1.0, 1.0, 5.0, 25.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0, 0.0, -15.0); -} - - -static void -Key(unsigned char key, int x, int y) -{ - (void) x; - (void) y; - switch (key) { - case 27: - glutDestroyWindow(Win); - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void -Init(void) -{ - static const GLdouble plane[4] = {1, 1, 0, 0}; - glDrawBuffer(GL_FRONT); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glEnable(GL_LIGHT0); - glClipPlane(GL_CLIP_PLANE0, plane); - - Vbuffer = (struct vertex *) - malloc(BufferSize * sizeof(struct vertex)); - - /* silence warnings */ - (void) ReportState; - (void) LastPrim; -} - - -static void -ParseArgs(int argc, char *argv[]) -{ - int i; - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-s") == 0) { - int j = atoi(argv[i + 1]); - printf("Random seed value: %d\n", j); - srand(j); - i++; - } - else if (strcmp(argv[i], "-a") == 0) { - i++; - MinVertexCount = atoi(argv[i]); - } - else if (strcmp(argv[i], "-b") == 0) { - i++; - MaxVertexCount = atoi(argv[i]); - } - } -} - - -int -main(int argc, char *argv[]) -{ - glutInit(&argc, argv); - glutInitWindowPosition(0, 0); - glutInitWindowSize(Width, Height); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); - Win = glutCreateWindow(argv[0]); - glewInit(); - ParseArgs(argc, argv); - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - if (Anim) - glutIdleFunc(Idle); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/readrate.c b/progs/tests/readrate.c deleted file mode 100644 index 6bdda04907..0000000000 --- a/progs/tests/readrate.c +++ /dev/null @@ -1,286 +0,0 @@ -/* - * Test glReadPixels speed - * Brian Paul - * 9 April 2004 - * - * Compile: - * gcc readrate.c -L/usr/X11R6/lib -lglut -lGLU -lGL -lX11 -o readrate - */ - -#include <assert.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - -/* Hack, to test drawing instead of reading */ -#define DRAW 0 - -#define MAX_WIDTH 1280 -#define MAX_HEIGHT 1024 - -#define NUM_WIDTHS 4 -#define NUM_HEIGHTS 4 -static const GLint Widths[] = {256, 512, 1024, 1280}; -static const GLint Heights[] = {4, 32, 256, 512, 768, 1024}; -static int WidthIndex = 1, HeightIndex = 3; -static GLubyte *Buffer = NULL; -static GLboolean Benchmark = GL_TRUE; - -#define NUM_PBO 2 - -static GLuint PBObjects[4]; - -static GLboolean HavePBO = GL_FALSE; - - -struct format_type { - const char *Name; - GLuint Bytes; - GLenum Format; - GLenum Type; -}; - -static struct format_type Formats[] = { - { "GL_RGB, GLubyte", 3, GL_RGB, GL_UNSIGNED_BYTE }, - { "GL_BGR, GLubyte", 3, GL_BGR, GL_UNSIGNED_BYTE }, - { "GL_RGBA, GLubyte", 4, GL_RGBA, GL_UNSIGNED_BYTE }, - { "GL_BGRA, GLubyte", 4, GL_BGRA, GL_UNSIGNED_BYTE }, - { "GL_ABGR, GLubyte", 4, GL_ABGR_EXT, GL_UNSIGNED_BYTE }, - { "GL_RGBA, GLuint_8_8_8_8", 4, GL_RGBA, GL_UNSIGNED_INT_8_8_8_8 }, - { "GL_BGRA, GLuint_8_8_8_8", 4, GL_BGRA_EXT, GL_UNSIGNED_INT_8_8_8_8 }, - { "GL_BGRA, GLuint_8_8_8_8_rev", 4, GL_BGRA_EXT, GL_UNSIGNED_INT_8_8_8_8_REV }, -#ifdef GL_EXT_packed_depth_stencil - { "GL_DEPTH_STENCIL_EXT, GLuint24+8", 4, GL_DEPTH_STENCIL_EXT, GL_UNSIGNED_INT_24_8_EXT }, -#endif - { "GL_DEPTH_COMPONENT, GLfloat", 4, GL_DEPTH_COMPONENT, GL_FLOAT }, - { "GL_DEPTH_COMPONENT, GLuint", 4, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT } -}; - -#define NUM_FORMATS (sizeof(Formats) / sizeof(struct format_type)) - - -static void -PrintString(const char *s) -{ - while (*s) { - glutBitmapCharacter(GLUT_BITMAP_8_BY_13, (int) *s); - s++; - } -} - - -static void -MeasureFormat(struct format_type *fmt, GLint width, GLint height, GLuint pbo) -{ - double t0 = glutGet(GLUT_ELAPSED_TIME) * 0.001; - double t1; - int j; - - for (j = 0; ; j++) { - - glBegin(GL_POINTS); - glVertex2f(1,1); - glEnd(); - -#if DRAW - glWindowPos2iARB(0,0); - glDrawPixels(width, height, - fmt->Format, fmt->Type, Buffer); - glFinish(); -#else - if (pbo) { - glBindBufferARB(GL_PIXEL_PACK_BUFFER_EXT, PBObjects[j % NUM_PBO]); - glReadPixels(0, 0, width, height, - fmt->Format, fmt->Type, 0); - } - else { - glReadPixels(0, 0, width, height, - fmt->Format, fmt->Type, Buffer); - } -#endif - - t1 = glutGet(GLUT_ELAPSED_TIME) * 0.001; - if (t1 - t0 > 2.0) { - GLdouble rate = width * height / (1024.0 * 1024.0) * j / (t1 - t0); -#if DRAW - printf("%-32s %.2f draws/sec %.2f MPixels/sec %.2f MBytes/sec\n", - fmt->Name, j / (t1-t0), rate, rate * fmt->Bytes); -#else - printf("%-32s %.2f reads/sec %.2f MPixels/sec %.2f MBytes/sec\n", - fmt->Name, j / (t1-t0), rate, rate * fmt->Bytes); -#endif - break; - } - - if (j == 0) { - /* check for error */ - GLenum err = glGetError(); - if (err) { - printf("GL Error 0x%x for %s\n", err, fmt->Name); - return; - } - } - } -} - - - -static void -Draw(void) -{ - char str[1000]; - int width = Widths[WidthIndex]; - int height = Heights[HeightIndex]; - int y = MAX_HEIGHT - 50; - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glWindowPos2iARB(10, y); - sprintf(str, "ReadPixels size: %d x %d", width, height); - PrintString(str); - y -= 14; - - glWindowPos2iARB(10, y); - PrintString("Press up/down/left/right to change image size."); - y -= 14; - - glWindowPos2iARB(10, y); - PrintString("Press 'b' to run benchmark test."); - y -= 14; - - if (Benchmark) { - glWindowPos2iARB(10, y); - PrintString("Testing..."); - } - - glutSwapBuffers(); - - if (Benchmark) { - GLuint i, pbo; -#if DRAW - printf("Draw size: Width=%d Height=%d\n", width, height); -#else - printf("Read size: Width=%d Height=%d\n", width, height); -#endif - for (pbo = 0; pbo <= HavePBO; pbo++) { - printf("Pixel Buffer Object: %d\n", pbo); - - if (pbo == 0) { - glBindBufferARB(GL_PIXEL_PACK_BUFFER_EXT, 0); - } - - for (i = 0; i < NUM_FORMATS; i++) { - MeasureFormat(Formats + i, width, height, pbo); - } - } - - Benchmark = GL_FALSE; - - /* redraw window text */ - glutPostRedisplay(); - } - -} - - -static void -Reshape(int width, int height) -{ - glViewport(0, 0, width, height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1, 1, -1, 1, -1, 1); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - - -static void -Key(unsigned char key, int x, int y) -{ - (void) x; - (void) y; - switch (key) { - case 'b': - Benchmark = 1; - break; - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void -SpecialKey(int key, int x, int y) -{ - (void) x; - (void) y; - switch (key) { - case GLUT_KEY_UP: - if (HeightIndex + 1 < NUM_WIDTHS) - HeightIndex++; - break; - case GLUT_KEY_DOWN: - if (HeightIndex > 0) - HeightIndex--; - break; - case GLUT_KEY_LEFT: - if (WidthIndex > 0) - WidthIndex--; - break; - case GLUT_KEY_RIGHT: - if (WidthIndex + 1 < NUM_HEIGHTS) - WidthIndex++; - break; - } - glutPostRedisplay(); -} - - -static void -Init(void) -{ - Buffer = malloc(MAX_WIDTH * MAX_HEIGHT * 4); - assert(Buffer); -#if DRAW - printf("glDrawPixels test report:\n"); -#else - printf("glReadPixels test report:\n"); -#endif - printf("GL_RENDERER: %s\n", (char *) glGetString(GL_RENDERER)); - printf("GL_VERSION: %s\n", (char *) glGetString(GL_VERSION)); - - if (glutExtensionSupported("GL_ARB_pixel_buffer_object")) { - int i; - HavePBO = 1; - glGenBuffersARB(NUM_PBO, PBObjects); - for (i = 0; i < NUM_PBO; i++) { - glBindBufferARB(GL_PIXEL_PACK_BUFFER_EXT, PBObjects[i]); - glBufferDataARB(GL_PIXEL_PACK_BUFFER_EXT, - MAX_WIDTH * MAX_HEIGHT * 4, NULL, GL_STREAM_READ); - } - } -} - - -int -main(int argc, char *argv[]) -{ - glutInit(&argc, argv); - glutInitWindowPosition(0, 0); - glutInitWindowSize(MAX_WIDTH, MAX_HEIGHT); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH | GLUT_STENCIL); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutSpecialFunc(SpecialKey); - glutDisplayFunc(Draw); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/rubberband.c b/progs/tests/rubberband.c deleted file mode 100644 index 866a0f519e..0000000000 --- a/progs/tests/rubberband.c +++ /dev/null @@ -1,246 +0,0 @@ -/** - * Test rubber-band selection box w/ logicops and blend. - */ - -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> -#include "readtex.c" - -#define IMAGE_FILE "../images/arch.rgb" - -static int ImgWidth, ImgHeight; -static GLenum ImgFormat; -static GLubyte *Image = NULL; - -static int Win; -static int Width = 512, Height = 512; - -struct rect -{ - int x0, y0, x1, y1; -}; - -static struct rect OldRect, NewRect; - -static GLboolean ButtonDown = GL_FALSE; -static GLboolean LogicOp = 0*GL_TRUE; - -static GLboolean RedrawBackground = GL_TRUE; - -static const GLfloat red[4] = {1.0, 0.2, 0.2, 1.0}; -static const GLfloat green[4] = {0.2, 1.0, 0.2, 1.0}; -static const GLfloat blue[4] = {0.2, 0.2, 1.0, 1.0}; - - -/* - * Draw rubberband box in front buffer - */ -static void -DrawRect(const struct rect *r) -{ - glDrawBuffer(GL_FRONT); - - if (LogicOp) { - glLogicOp(GL_XOR); - glEnable(GL_COLOR_LOGIC_OP); - } - else { - glEnable(GL_BLEND); - glBlendFunc(GL_ONE, GL_ONE); - glBlendEquation(GL_FUNC_SUBTRACT); - } - - glColor3f(1, 1, 1); - - glLineWidth(3.0); - - glBegin(GL_LINE_LOOP); - glVertex2i(r->x0, r->y0); - glVertex2i(r->x1, r->y0); - glVertex2i(r->x1, r->y1); - glVertex2i(r->x0, r->y1); - glEnd(); - - glDisable(GL_COLOR_LOGIC_OP); - glDisable(GL_BLEND); - - glDrawBuffer(GL_BACK); -} - - -static void -PrintString(const char *s) -{ - while (*s) { - glutBitmapCharacter(GLUT_BITMAP_8_BY_13, (int) *s); - s++; - } -} - - -static void -DrawBackground(void) -{ - char s[100]; - - sprintf(s, "[L/B] %s mode. Use mouse to make selection box.", - LogicOp ? "LogicOp" : "Blend"); - - glClear(GL_COLOR_BUFFER_BIT); - - glWindowPos2i((Width - ImgWidth) / 2, (Height - ImgHeight) / 2); - glDrawPixels(ImgWidth, ImgHeight, ImgFormat, GL_UNSIGNED_BYTE, Image); - - glWindowPos2i(10, 10); - PrintString(s); - - glutSwapBuffers(); -} - - -static void -Draw(void) -{ - if (RedrawBackground) { - DrawBackground(); - } - - if (ButtonDown) { - if (!RedrawBackground) - DrawRect(&OldRect); /* erase old */ - - DrawRect(&NewRect); /* draw new */ - - OldRect = NewRect; - } - - RedrawBackground = GL_FALSE; -} - - -static void -Reshape(int width, int height) -{ - Width = width; - Height = height; - - glViewport(0, 0, width, height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(0, Width, Height, 0, -1, 1); /* Inverted Y! */ - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - - RedrawBackground = GL_TRUE; -} - - -static void -Key(unsigned char key, int x, int y) -{ - (void) x; - (void) y; - switch (key) { - case 'b': - case 'B': - LogicOp = GL_FALSE; - break; - case 'l': - case 'L': - LogicOp = GL_TRUE; - break; - case 27: - glutDestroyWindow(Win); - exit(0); - break; - } - RedrawBackground = GL_TRUE; - glutPostRedisplay(); -} - - -static void -SpecialKey(int key, int x, int y) -{ - (void) x; - (void) y; - switch (key) { - case GLUT_KEY_UP: - break; - case GLUT_KEY_DOWN: - break; - case GLUT_KEY_LEFT: - break; - case GLUT_KEY_RIGHT: - break; - } - glutPostRedisplay(); -} - - -static void -MouseMotion(int x, int y) -{ - if (ButtonDown) { - NewRect.x1 = x; - NewRect.y1 = y; - glutPostRedisplay(); - } -} - - -static void -MouseButton(int button, int state, int x, int y) -{ - if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN) { - ButtonDown = GL_TRUE; - RedrawBackground = GL_TRUE; - NewRect.x0 = NewRect.x1 = x; - NewRect.y0 = NewRect.y1 = y; - OldRect = NewRect; - } - else if (button == GLUT_LEFT_BUTTON && state == GLUT_UP) { - ButtonDown = GL_FALSE; - } - glutPostRedisplay(); -} - - -static void -Init(void) -{ - Image = LoadRGBImage(IMAGE_FILE, &ImgWidth, &ImgHeight, &ImgFormat); - if (!Image) { - printf("Couldn't read %s\n", IMAGE_FILE); - exit(0); - } - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glPixelStorei(GL_PACK_ALIGNMENT, 1); -} - - -int -main(int argc, char *argv[]) -{ - glutInit(&argc, argv); - glutInitWindowSize(Width, Height); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); - Win = glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutSpecialFunc(SpecialKey); - glutMotionFunc(MouseMotion); - glutMouseFunc(MouseButton); - glutDisplayFunc(Draw); - Init(); - glutPostRedisplay(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/scissor-viewport.c b/progs/tests/scissor-viewport.c deleted file mode 100644 index 4ef307b424..0000000000 --- a/progs/tests/scissor-viewport.c +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * Copyright (c) 2009 VMware, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - -struct program -{ - unsigned width; - unsigned height; - int i; -}; - -struct program prog; - -static void init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - prog.i = 0; -} - -static void reshape(int width, int height) -{ - glViewport(0, 0, 100, 100); - - prog.width = width; - prog.height = height; - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - glutPostRedisplay(); - return; - } -} - -static void drawQuad(void) -{ - glBegin(GL_QUADS); - glVertex2d(-1.0, -1.0); - glVertex2d( 1.0, -1.0); - glVertex2d( 1.0, 1.0); - glVertex2d(-1.0, 1.0); - glEnd(); -} - -static void draw(void) -{ - int i; - - glClearColor(0.0, 0.0, 1.0, 0.0); - glClear(GL_COLOR_BUFFER_BIT); - - i = prog.i++; - if (prog.i >= 3) - prog.i = 0; - - glEnable(GL_SCISSOR_TEST); - - { - glColor4d(1.0, 0.0, 0.0, 1.0); - - glScissor(i, i, 10 - 2*i, 10 - 2*i); - drawQuad(); - } - - glDisable(GL_SCISSOR_TEST); - - /* glutSwapBuffers(); */ - glFlush(); -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - prog.width = 200; - prog.height = 200; - - glutInitWindowPosition(100, 0); - glutInitWindowSize(prog.width, prog.height); - - /* type = GLUT_RGB | GLUT_DOUBLE; */ - type = GLUT_RGB | GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - init(); - - glutReshapeFunc(reshape); - glutKeyboardFunc(key); - glutDisplayFunc(draw); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/scissor.c b/progs/tests/scissor.c deleted file mode 100644 index e5a68ffabd..0000000000 --- a/progs/tests/scissor.c +++ /dev/null @@ -1,168 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * Copyright (c) 2009 VMware, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - -struct program -{ - unsigned width; - unsigned height; - unsigned quads; -}; - -struct program prog; - -static void init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); -} - -static void reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - prog.width = width; - prog.height = height; - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - prog.quads = !prog.quads; - glutPostRedisplay(); - return; - } -} - -static void drawQuad(void) -{ - - if (prog.quads) { - glBegin(GL_QUADS); - glVertex2d(-1.0, -1.0); - glVertex2d( 1.0, -1.0); - glVertex2d( 1.0, 1.0); - glVertex2d(-1.0, 1.0); - glEnd(); - } else { - glClear(GL_COLOR_BUFFER_BIT); - } -} - -static void draw(void) -{ - glClearColor(0.0, 0.0, 1.0, 0.0); - glClear(GL_COLOR_BUFFER_BIT); - - printf("drawing with %s\n", prog.quads ? "quads" : "clears"); - - glEnable(GL_SCISSOR_TEST); - - { - glClearColor(1.0, 0.0, 0.0, 1.0); - glColor4d(1.0, 0.0, 0.0, 1.0); - - glScissor(1, 1, 10, 10); - drawQuad(); - glScissor(1, prog.height - 11, 10, 10); - drawQuad(); - glScissor(prog.width - 11, prog.height - 11, 10, 10); - drawQuad(); - } - - { - glClearColor(0.0, 1.0, 0.0, 1.0); - glColor4d(0.0, 1.0, 0.0, 1.0); - - glScissor(12, 1, 10, 10); - drawQuad(); - glScissor(12, prog.height - 11, 10, 10); - drawQuad(); - glScissor(prog.width - 22, prog.height - 11, 10, 10); - drawQuad(); - } - - { - glClearColor(1.0, 1.0, 0.0, 1.0); - glColor4d(1.0, 1.0, 0.0, 1.0); - - glScissor(1, 12, 10, 10); - drawQuad(); - glScissor(1, prog.height - 22, 10, 10); - drawQuad(); - glScissor(prog.width - 11, prog.height - 22, 10, 10); - drawQuad(); - } - - glDisable(GL_SCISSOR_TEST); - - /* glutSwapBuffers(); */ - glFlush(); -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - prog.width = 200; - prog.height = 200; - - glutInitWindowPosition(100, 0); - glutInitWindowSize(prog.width, prog.height); - - /* type = GLUT_RGB | GLUT_DOUBLE; */ - type = GLUT_RGB | GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - init(); - - glutReshapeFunc(reshape); - glutKeyboardFunc(key); - glutDisplayFunc(draw); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/seccolor.c b/progs/tests/seccolor.c deleted file mode 100644 index f1ba314ef0..0000000000 --- a/progs/tests/seccolor.c +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Exercise GL_EXT_secondary_color - */ - - -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - -static int Width = 600; -static int Height = 200; -static GLfloat Near = 5.0, Far = 25.0; - - -static void Display( void ) -{ - GLfloat t; - - glClearColor(0.2, 0.2, 0.8, 0); - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - for (t = 0.0; t <= 1.0; t += 0.25) { - GLfloat x = t * 10.0 - 5.0; - GLfloat g = t; - - /* top row: untextured */ - glColor3f(1, 0, 0); - glPushMatrix(); - glTranslatef(x, 1.2, 0); -#if defined(GL_EXT_secondary_color) - glSecondaryColor3fEXT(0, g, 0); -#endif - glBegin(GL_POLYGON); - glVertex2f(-1, -1); - glVertex2f( 1, -1); - glVertex2f( 1, 1); - glVertex2f(-1, 1); - glEnd(); - glPopMatrix(); - - /* bottom row: textured */ - glColor3f(1, 1, 1); - glEnable(GL_TEXTURE_2D); - glPushMatrix(); - glTranslatef(x, -1.2, 0); -#if defined(GL_EXT_secondary_color) - glSecondaryColor3fEXT(0, g, 0); -#endif - glBegin(GL_POLYGON); - glTexCoord2f(0, 0); glVertex2f(-1, -1); - glTexCoord2f(1, 0); glVertex2f( 1, -1); - glTexCoord2f(1, 1); glVertex2f( 1, 1); - glTexCoord2f(0, 1); glVertex2f(-1, 1); - glEnd(); - glPopMatrix(); - glDisable(GL_TEXTURE_2D); - } - glutSwapBuffers(); -} - - -static void Reshape( int width, int height ) -{ - GLfloat ar = (float) width / (float) height; - Width = width; - Height = height; - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -ar, ar, -1.0, 1.0, Near, Far ); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - glTranslatef( 0.0, 0.0, -15.0 ); -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void Init( void ) -{ - GLubyte image[4*4][3]; - GLint i; - if (!glutExtensionSupported("GL_EXT_secondary_color")) { - printf("Sorry, this program requires GL_EXT_secondary_color\n"); - exit(1); - } - - /* setup red texture with one back texel */ - for (i = 0; i < 4*4; i++) { - if (i == 0) { - image[i][0] = 0; - image[i][1] = 0; - image[i][2] = 0; - } - else { - image[i][0] = 255; - image[i][1] = 0; - image[i][2] = 0; - } - } - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 4, 4, 0, - GL_RGB, GL_UNSIGNED_BYTE, image); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - -#if defined(GL_EXT_secondary_color) - glEnable(GL_COLOR_SUM_EXT); -#endif - glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL, GL_SEPARATE_SPECULAR_COLOR); - - printf("Squares should be colored from red -> orange -> yellow.\n"); - printf("Top row is untextured.\n"); - printf("Bottom row is textured (red texture with one black texel).\n"); - printf("Rows should be identical, except for lower-left texel.\n"); -} - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( Width, Height ); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE ); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/shader_api.c b/progs/tests/shader_api.c deleted file mode 100644 index fa0a992540..0000000000 --- a/progs/tests/shader_api.c +++ /dev/null @@ -1,350 +0,0 @@ -/* Tests to validate fixes to various bugs in src/mesa/shader/shader_api.c - * - * Written by Bruce Merry - */ -#include <string.h> -#include <stdio.h> -#include <stdlib.h> -#include <GL/glew.h> -#include <GL/glut.h> - -#ifndef APIENTRY -#define APIENTRY -#endif - -static void assert_test(const char *file, int line, int cond, const char *msg) -{ - if (!cond) - fprintf(stderr, "%s:%d assertion \"%s\" failed\n", file, line, msg); -} - -#undef assert -#define assert(x) assert_test(__FILE__, __LINE__, (x), #x) - -static void assert_no_error_test(const char *file, int line) -{ - GLenum err; - - err = glGetError(); - if (err != GL_NO_ERROR) - fprintf(stderr, "%s:%d received error %s\n", - file, line, gluErrorString(err)); -} - -#define assert_no_error() assert_no_error_test(__FILE__, __LINE__) - -static void assert_error_test(const char *file, int line, GLenum expect) -{ - GLenum err; - - err = glGetError(); - if (err != expect) - fprintf(stderr, "%s:%d expected %s but received %s\n", - file, line, gluErrorString(expect), gluErrorString(err)); - while (glGetError()); /* consume any following errors */ -} - -#define assert_error(err) assert_error_test(__FILE__, __LINE__, (err)) - -static void check_status(GLuint id, GLenum pname, void (APIENTRY *query)(GLuint, GLenum, GLint *)) -{ - GLint status; - - query(id, pname, &status); - if (!status) - { - char info[65536]; - - fprintf(stderr, "Compilation/link failure:\n"); - glGetInfoLogARB(id, sizeof(info), NULL, info); - fprintf(stderr, "%s\n", info); - exit(1); - } -} - -static void check_compile_status(GLuint id) -{ - check_status(id, GL_COMPILE_STATUS, glGetShaderiv); -} - -static void check_link_status(GLuint id) -{ - check_status(id, GL_LINK_STATUS, glGetProgramiv); -} - -static GLuint make_shader(GLenum type, const char *src) -{ - GLuint id; - - assert_no_error(); - id = glCreateShader(type); - glShaderSource(id, 1, &src, NULL); - glCompileShader(id); - check_compile_status(id); - assert_no_error(); - return id; -} - -static GLuint make_program(const char *vs_src, const char *fs_src) -{ - GLuint id, vs, fs; - - assert_no_error(); - id = glCreateProgram(); - if (vs_src) { - vs = make_shader(GL_VERTEX_SHADER, vs_src); - glAttachShader(id, vs); - glDeleteShader(vs); - } - if (fs_src) { - fs = make_shader(GL_FRAGMENT_SHADER, fs_src); - glAttachShader(id, fs); - glDeleteShader(fs); - } - glLinkProgram(id); - check_link_status(id); - glUseProgram(id); - glDeleteProgram(id); - assert_no_error(); - return id; -} - -static void test_uniform_size_type1(const char *glslType, GLenum glType, const char *el) -{ - char buffer[1024]; - GLuint program; - GLint active, i; - GLenum type; - GLint size; - - printf(" Running subtest %s\n", glslType); - fflush(stdout); - sprintf(buffer, "#version 120\nuniform %s m[60];\nvoid main() { gl_Position[0] = m[59]%s; }\n", - glslType, el); - - program = make_program(buffer, NULL); - glGetProgramiv(program, GL_ACTIVE_UNIFORMS, &active); - assert_no_error(); - for (i = 0; i < active; i++) { - size = -1; - type = 0; - glGetActiveUniform(program, i, sizeof(buffer), NULL, &size, &type, buffer); - assert_no_error(); - if (strncmp(buffer, "m", 1) == 0) - break; - } - assert(i < active); /* Otherwise the compiler optimised it out */ - assert(type == glType); - assert(size == 60); -} - -static void test_uniform_size_type(void) -{ - test_uniform_size_type1("float", GL_FLOAT, ""); - test_uniform_size_type1("vec2", GL_FLOAT_VEC2, "[0]"); - test_uniform_size_type1("vec3", GL_FLOAT_VEC3, "[0]"); - test_uniform_size_type1("vec4", GL_FLOAT_VEC4, "[0]"); - - test_uniform_size_type1("bool", GL_BOOL, " ? 1.0 : 0.0"); - test_uniform_size_type1("bvec2", GL_BOOL_VEC2, "[0] ? 1.0 : 0.0"); - test_uniform_size_type1("bvec3", GL_BOOL_VEC3, "[0] ? 1.0 : 0.0"); - test_uniform_size_type1("bvec4", GL_BOOL_VEC4, "[0] ? 1.0 : 0.0"); - - test_uniform_size_type1("int", GL_INT, ""); - test_uniform_size_type1("ivec2", GL_INT_VEC2, "[0]"); - test_uniform_size_type1("ivec3", GL_INT_VEC3, "[0]"); - test_uniform_size_type1("ivec4", GL_INT_VEC4, "[0]"); - - test_uniform_size_type1("mat2", GL_FLOAT_MAT2, "[0][0]"); - test_uniform_size_type1("mat3", GL_FLOAT_MAT3, "[0][0]"); - test_uniform_size_type1("mat4", GL_FLOAT_MAT4, "[0][0]"); - test_uniform_size_type1("mat2x3", GL_FLOAT_MAT2x3, "[0][0]"); - test_uniform_size_type1("mat2x4", GL_FLOAT_MAT2x4, "[0][0]"); - test_uniform_size_type1("mat3x2", GL_FLOAT_MAT3x2, "[0][0]"); - test_uniform_size_type1("mat3x4", GL_FLOAT_MAT3x4, "[0][0]"); - test_uniform_size_type1("mat4x2", GL_FLOAT_MAT4x2, "[0][0]"); - test_uniform_size_type1("mat4x3", GL_FLOAT_MAT4x3, "[0][0]"); -} - -static void test_attrib_size_type1(const char *glslType, GLenum glType, const char *el) -{ - char buffer[1024]; - GLuint program; - GLint active, i; - GLenum type; - GLint size; - - printf(" Running subtest %s\n", glslType); - fflush(stdout); - sprintf(buffer, "#version 120\nattribute %s m;\nvoid main() { gl_Position[0] = m%s; }\n", - glslType, el); - - program = make_program(buffer, NULL); - glGetProgramiv(program, GL_ACTIVE_ATTRIBUTES, &active); - assert_no_error(); - for (i = 0; i < active; i++) { - size = -1; - type = -1; - glGetActiveAttrib(program, i, sizeof(buffer), NULL, &size, &type, buffer); - assert_no_error(); - if (strncmp(buffer, "m", 1) == 0) - break; - } - assert(i < active); /* Otherwise the compiler optimised it out */ - assert(type == glType); - assert(size == 1); -} - -static void test_attrib_size_type(void) -{ - test_attrib_size_type1("float", GL_FLOAT, ""); - test_attrib_size_type1("vec2", GL_FLOAT_VEC2, "[0]"); - test_attrib_size_type1("vec3", GL_FLOAT_VEC3, "[0]"); - test_attrib_size_type1("vec4", GL_FLOAT_VEC4, "[0]"); - - test_attrib_size_type1("mat2", GL_FLOAT_MAT2, "[0][0]"); - test_attrib_size_type1("mat3", GL_FLOAT_MAT3, "[0][0]"); - test_attrib_size_type1("mat4", GL_FLOAT_MAT4, "[0][0]"); - test_attrib_size_type1("mat2x3", GL_FLOAT_MAT2x3, "[0][0]"); - test_attrib_size_type1("mat2x4", GL_FLOAT_MAT2x4, "[0][0]"); - test_attrib_size_type1("mat3x2", GL_FLOAT_MAT3x2, "[0][0]"); - test_attrib_size_type1("mat3x4", GL_FLOAT_MAT3x4, "[0][0]"); - test_attrib_size_type1("mat4x2", GL_FLOAT_MAT4x2, "[0][0]"); - test_attrib_size_type1("mat4x3", GL_FLOAT_MAT4x3, "[0][0]"); -} - -static void test_uniform_array_overflow(void) -{ - GLuint program; - GLint location; - GLfloat data[128]; - - program = make_program("#version 120\nuniform vec2 x[10];\nvoid main() { gl_Position.xy = x[9]; }\n", NULL); - location = glGetUniformLocation(program, "x"); - assert_no_error(); - glUniform2fv(location, 64, data); - assert_no_error(); -} - -static void test_uniform_scalar_count(void) -{ - GLuint program; - GLint location; - GLfloat data[128]; - - program = make_program("#version 110\nuniform vec2 x;\nvoid main() { gl_Position.xy = x; }\n", NULL); - location = glGetUniformLocation(program, "x"); - assert_no_error(); - glUniform2fv(location, 64, data); - assert_error(GL_INVALID_OPERATION); -} - -static void test_uniform_query_matrix(void) -{ - GLuint program; - GLfloat data[18]; - GLint i, r, c; - GLint location; - - program = make_program("#version 110\nuniform mat3 m[2];\nvoid main() { gl_Position.xyz = m[1][2]; }\n", NULL); - location = glGetUniformLocation(program, "m"); - for (i = 0; i < 9; i++) - data[i] = i; - for (i = 9; i < 18; i++) - data[i] = 321.0; - glUniformMatrix3fv(location, 1, GL_TRUE, data); - - for (i = 0; i < 18; i++) - data[i] = 123.0; - glGetUniformfv(program, location, data); - for (c = 0; c < 3; c++) - for (r = 0; r < 3; r++) - assert(data[c * 3 + r] == r * 3 + c); - for (i = 9; i < 18; i++) - assert(data[i] == 123.0); -} - -static void test_uniform_neg_location(void) -{ - GLuint program; - GLfloat data[4]; - - program = make_program("#version 110\nvoid main() { gl_Position = vec4(1.0, 1.0, 1.0, 1.0); }\n", NULL); - assert_no_error(); - glUniform1i(-1, 1); - assert_no_error(); - glUniform1i(-200, 1); - assert_error(GL_INVALID_OPERATION); - glUniformMatrix2fv(-1, 1, GL_FALSE, data); - assert_no_error(); - glUniformMatrix2fv(-200, 1, GL_FALSE, data); - assert_error(GL_INVALID_OPERATION); -} - -static void test_uniform_bool_conversion(void) -{ - GLuint program; - GLint location; - GLint value[16]; /* in case glGetUniformiv goes nuts on the stack */ - - assert_no_error(); - program = make_program("uniform bool b;\nvoid main() { gl_Position.x = b ? 1.5 : 0.5; }\n", NULL); - location = glGetUniformLocation(program, "b"); - assert(location != -1); - assert_no_error(); - glUniform1i(location, 5); - assert_no_error(); - glGetUniformiv(program, location, &value[0]); - assert_no_error(); - assert(value[0] == 1); -} - -static void test_uniform_multiple_samplers(void) -{ - GLuint program; - GLint location; - GLint values[2] = {0, 1}; - - assert_no_error(); - program = make_program(NULL, "uniform sampler2D s[2];\nvoid main() { gl_FragColor = texture2D(s[1], vec2(0.0, 0.0)); }\n"); - location = glGetUniformLocation(program, "s[0]"); - assert(location != -1); - assert_no_error(); - glUniform1iv(location, 2, values); - assert_no_error(); -} - -static void run_test(const char *name, void (*callback)(void)) -{ - printf("Running %s\n", name); - fflush(stdout); - callback(); -} - -#define RUN_TEST(name) run_test(#name, (name)) - -int main(int argc, char **argv) -{ - const char *version; - - glutInit(&argc, argv); - glutCreateWindow("Mesa bug demo"); - glewInit(); - - version = (const char *) glGetString(GL_VERSION); - if (version[0] == '1') { - printf("Sorry, this test requires OpenGL 2.x GLSL support\n"); - exit(0); - } - - RUN_TEST(test_uniform_size_type); - RUN_TEST(test_attrib_size_type); - RUN_TEST(test_uniform_array_overflow); - RUN_TEST(test_uniform_scalar_count); - RUN_TEST(test_uniform_query_matrix); - RUN_TEST(test_uniform_neg_location); - RUN_TEST(test_uniform_bool_conversion); - /* Leave this one at the end, since it crashes Mesa's shader compiler */ - RUN_TEST(test_uniform_multiple_samplers); - return 0; -} diff --git a/progs/tests/sharedtex.c b/progs/tests/sharedtex.c deleted file mode 100644 index 2337b88d3f..0000000000 --- a/progs/tests/sharedtex.c +++ /dev/null @@ -1,439 +0,0 @@ - -/* - * Test sharing of display lists and texture objects between GLX contests. - * Brian Paul - * Summer 2000 - * - * - * Copyright (C) 2000 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - - -#include <GL/gl.h> -#include <GL/glx.h> -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> -#include <string.h> - - -struct window { - char DisplayName[1000]; - Display *Dpy; - Window Win; - GLXContext Context; - float Angle; - int Id; -}; - - -#define MAX_WINDOWS 20 -static struct window Windows[MAX_WINDOWS]; -static int NumWindows = 0; - - -static GLuint Textures[3]; -static GLuint CubeList; - - - -static void -Error(const char *display, const char *msg) -{ - fprintf(stderr, "Error on display %s - %s\n", display, msg); - exit(1); -} - - -static struct window * -AddWindow(const char *displayName, int xpos, int ypos, - const struct window *shareWindow) -{ - Display *dpy; - Window win; - GLXContext ctx; - int attrib[] = { GLX_RGBA, - GLX_RED_SIZE, 1, - GLX_GREEN_SIZE, 1, - GLX_BLUE_SIZE, 1, - GLX_DOUBLEBUFFER, - GLX_DEPTH_SIZE, 1, - None }; - int scrnum; - XSetWindowAttributes attr; - unsigned long mask; - Window root; - XVisualInfo *visinfo; - int width = 300, height = 300; - - if (NumWindows >= MAX_WINDOWS) - return NULL; - - dpy = XOpenDisplay(displayName); - if (!dpy) { - Error(displayName, "Unable to open display"); - return NULL; - } - - scrnum = DefaultScreen(dpy); - root = RootWindow(dpy, scrnum); - - visinfo = glXChooseVisual(dpy, scrnum, attrib); - if (!visinfo) { - Error(displayName, "Unable to find RGB, double-buffered visual"); - return NULL; - } - - /* window attributes */ - attr.background_pixel = 0; - attr.border_pixel = 0; - attr.colormap = XCreateColormap(dpy, root, visinfo->visual, AllocNone); - attr.event_mask = StructureNotifyMask | ExposureMask | KeyPressMask; - mask = CWBackPixel | CWBorderPixel | CWColormap | CWEventMask; - - win = XCreateWindow(dpy, root, xpos, ypos, width, height, - 0, visinfo->depth, InputOutput, - visinfo->visual, mask, &attr); - if (!win) { - Error(displayName, "Couldn't create window"); - return NULL; - } - - { - XSizeHints sizehints; - sizehints.x = xpos; - sizehints.y = ypos; - sizehints.width = width; - sizehints.height = height; - sizehints.flags = USSize | USPosition; - XSetNormalHints(dpy, win, &sizehints); - XSetStandardProperties(dpy, win, displayName, displayName, - None, (char **)NULL, 0, &sizehints); - } - - - ctx = glXCreateContext(dpy, visinfo, - shareWindow ? shareWindow->Context : NULL, - True); - if (!ctx) { - Error(displayName, "Couldn't create GLX context"); - return NULL; - } - - XMapWindow(dpy, win); - - if (!glXMakeCurrent(dpy, win, ctx)) { - Error(displayName, "glXMakeCurrent failed"); - printf("glXMakeCurrent failed in Redraw()\n"); - return NULL; - } - - /* save the info for this window */ - { - static int id = 0; - struct window *h = &Windows[NumWindows]; - strcpy(h->DisplayName, displayName); - h->Dpy = dpy; - h->Win = win; - h->Context = ctx; - h->Angle = 0.0; - h->Id = id++; - NumWindows++; - return &Windows[NumWindows-1]; - } - -} - - -static void -InitGLstuff(struct window *h) -{ - if (!glXMakeCurrent(h->Dpy, h->Win, h->Context)) { - Error(h->DisplayName, "glXMakeCurrent failed in InitGLstuff"); - return; - } - - glGenTextures(3, Textures); - - /* setup first texture object */ - { - GLubyte image[16][16][4]; - GLint i, j; - glBindTexture(GL_TEXTURE_2D, Textures[0]); - - /* red/white checkerboard */ - for (i = 0; i < 16; i++) { - for (j = 0; j < 16; j++) { - if ((i ^ j) & 1) { - image[i][j][0] = 255; - image[i][j][1] = 255; - image[i][j][2] = 255; - image[i][j][3] = 255; - } - else { - image[i][j][0] = 255; - image[i][j][1] = 0; - image[i][j][2] = 0; - image[i][j][3] = 255; - } - } - } - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 16, 16, 0, GL_RGBA, - GL_UNSIGNED_BYTE, image); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - } - - /* setup second texture object */ - { - GLubyte image[8][8][3]; - GLint i, j; - glBindTexture(GL_TEXTURE_2D, Textures[1]); - - /* green/yellow checkerboard */ - for (i = 0; i < 8; i++) { - for (j = 0; j < 8; j++) { - if ((i ^ j) & 1) { - image[i][j][0] = 0; - image[i][j][1] = 255; - image[i][j][2] = 0; - } - else { - image[i][j][0] = 255; - image[i][j][1] = 255; - image[i][j][2] = 0; - } - } - } - - glPixelStorei(GL_UNPACK_ALIGNMENT, 2); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 8, 8, 0, GL_RGB, - GL_UNSIGNED_BYTE, image); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - } - - /* setup second texture object */ - { - GLubyte image[4][4][3]; - GLint i, j; - glBindTexture(GL_TEXTURE_2D, Textures[2]); - - /* blue/gray checkerboard */ - for (i = 0; i < 4; i++) { - for (j = 0; j < 4; j++) { - if ((i ^ j) & 1) { - image[i][j][0] = 0; - image[i][j][1] = 0; - image[i][j][2] = 255; - } - else { - image[i][j][0] = 200; - image[i][j][1] = 200; - image[i][j][2] = 200; - } - } - } - - glPixelStorei(GL_UNPACK_ALIGNMENT, 2); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 4, 4, 0, GL_RGB, - GL_UNSIGNED_BYTE, image); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - } - - /* Now make the cube object display list */ - CubeList = glGenLists(1); - glNewList(CubeList, GL_COMPILE); - { - glBindTexture(GL_TEXTURE_2D, Textures[0]); - glBegin(GL_POLYGON); - glTexCoord2f(0, 0); glVertex3f(-1, -1, -1); - glTexCoord2f(1, 0); glVertex3f(-1, 1, -1); - glTexCoord2f(1, 1); glVertex3f(-1, 1, 1); - glTexCoord2f(0, 1); glVertex3f(-1, -1, 1); - glEnd(); - glBegin(GL_POLYGON); - glTexCoord2f(0, 0); glVertex3f(1, -1, -1); - glTexCoord2f(1, 0); glVertex3f(1, 1, -1); - glTexCoord2f(1, 1); glVertex3f(1, 1, 1); - glTexCoord2f(0, 1); glVertex3f(1, -1, 1); - glEnd(); - - glBindTexture(GL_TEXTURE_2D, Textures[1]); - glBegin(GL_POLYGON); - glTexCoord2f(0, 0); glVertex3f(-1, -1, -1); - glTexCoord2f(1, 0); glVertex3f( 1, -1, -1); - glTexCoord2f(1, 1); glVertex3f( 1, -1, 1); - glTexCoord2f(0, 1); glVertex3f(-1, -1, 1); - glEnd(); - glBegin(GL_POLYGON); - glTexCoord2f(0, 0); glVertex3f(-1, 1, -1); - glTexCoord2f(1, 0); glVertex3f( 1, 1, -1); - glTexCoord2f(1, 1); glVertex3f( 1, 1, 1); - glTexCoord2f(0, 1); glVertex3f(-1, 1, 1); - glEnd(); - - glBindTexture(GL_TEXTURE_2D, Textures[2]); - glBegin(GL_POLYGON); - glTexCoord2f(0, 0); glVertex3f(-1, -1, -1); - glTexCoord2f(1, 0); glVertex3f( 1, -1, -1); - glTexCoord2f(1, 1); glVertex3f( 1, 1, -1); - glTexCoord2f(0, 1); glVertex3f(-1, 1, -1); - glEnd(); - glBegin(GL_POLYGON); - glTexCoord2f(0, 0); glVertex3f(-1, -1, 1); - glTexCoord2f(1, 0); glVertex3f( 1, -1, 1); - glTexCoord2f(1, 1); glVertex3f( 1, 1, 1); - glTexCoord2f(0, 1); glVertex3f(-1, 1, 1); - glEnd(); - } - glEndList(); - - printf("GL_RENDERER: %s\n", (char *) glGetString(GL_RENDERER)); - printf("GL_VERSION: %s\n", (char *) glGetString(GL_VERSION)); - printf("GL_VENDOR: %s\n", (char *) glGetString(GL_VENDOR)); -} - - - -static void -Redraw(struct window *h) -{ - if (!glXMakeCurrent(h->Dpy, h->Win, h->Context)) { - Error(h->DisplayName, "glXMakeCurrent failed"); - printf("glXMakeCurrent failed in Redraw()\n"); - return; - } - - h->Angle += 1.0; - - glShadeModel(GL_FLAT); - glClearColor(0.25, 0.25, 0.25, 1.0); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glEnable(GL_TEXTURE_2D); - glEnable(GL_DEPTH_TEST); - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - - glColor3f(1, 1, 1); - - glPushMatrix(); - if (h->Id == 0) - glRotatef(h->Angle, 0, 1, -1); - else if (h->Id == 1) - glRotatef(-(h->Angle), 0, 1, -1); - else if (h->Id == 2) - glRotatef(h->Angle, 0, 1, 1); - else if (h->Id == 3) - glRotatef(-(h->Angle), 0, 1, 1); - glCallList(CubeList); - glPopMatrix(); - - glXSwapBuffers(h->Dpy, h->Win); -} - - - -static void -Resize(const struct window *h, unsigned int width, unsigned int height) -{ - if (!glXMakeCurrent(h->Dpy, h->Win, h->Context)) { - Error(h->DisplayName, "glXMakeCurrent failed in Resize()"); - return; - } - glViewport(0, 0, width, height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-1, 1, -1, 1, 2, 10); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0, 0, -4.5); -} - - - -static void -EventLoop(void) -{ - while (1) { - int i; - for (i = 0; i < NumWindows; i++) { - struct window *h = &Windows[i]; - while (XPending(h->Dpy) > 0) { - XEvent event; - XNextEvent(h->Dpy, &event); - if (event.xany.window == h->Win) { - switch (event.type) { - case Expose: - Redraw(h); - break; - case ConfigureNotify: - Resize(h, event.xconfigure.width, event.xconfigure.height); - break; - case KeyPress: - return; - default: - /*no-op*/ ; - } - } - else { - printf("window mismatch\n"); - } - } - Redraw(h); - } - usleep(1); - } -} - - -#if 0 -static void -PrintInfo(const struct window *h) -{ - printf("Name: %s\n", h->DisplayName); - printf(" Display: %p\n", (void *) h->Dpy); - printf(" Window: 0x%x\n", (int) h->Win); - printf(" Context: 0x%x\n", (int) h->Context); -} -#endif - - -int -main(int argc, char *argv[]) -{ - const char *dpyName = XDisplayName(NULL); - - struct window *h0; - - /* four windows and contexts sharing display lists and texture objects */ - h0 = AddWindow(dpyName, 10, 10, NULL); - (void) AddWindow(dpyName, 330, 10, h0); - (void) AddWindow(dpyName, 10, 350, h0); - (void) AddWindow(dpyName, 330, 350, h0); - - InitGLstuff(h0); - - EventLoop(); - return 0; -} diff --git a/progs/tests/stencil_twoside.c b/progs/tests/stencil_twoside.c deleted file mode 100644 index 7d871e5877..0000000000 --- a/progs/tests/stencil_twoside.c +++ /dev/null @@ -1,299 +0,0 @@ -/* - * (C) Copyright IBM Corporation 2004 - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * on the rights to use, copy, modify, merge, publish, distribute, sub - * license, and/or sell copies of the Software, and to permit persons to whom - * the Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL - * VA LINUX SYSTEM, IBM AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - * USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/** - * \file stencil_twoside.c - * - * Simple test of GL_ATI_separate_stencil (or the OGL 2.0 equivalent) functionality. - * Four squares are drawn - * with different stencil modes, but all should be rendered with the same - * final color. - */ - -#include <stdio.h> -#include <stdlib.h> -#include <GL/glew.h> -#include <GL/glut.h> - -static int use20syntax = 1; -static int Width = 550; -static int Height = 200; -static const GLfloat Near = 5.0, Far = 25.0; - - -static PFNGLSTENCILFUNCSEPARATEPROC stencil_func_separate = NULL; -static PFNGLSTENCILFUNCSEPARATEATIPROC stencil_func_separate_ati = NULL; -static PFNGLSTENCILOPSEPARATEPROC stencil_op_separate = NULL; - -static void Display( void ) -{ - GLint max_stencil; - GLint stencil_bits; - unsigned i; - - - glGetIntegerv( GL_STENCIL_BITS, & stencil_bits ); - max_stencil = (1U << stencil_bits) - 1; - printf( "Stencil bits = %u, maximum stencil value = 0x%08x\n", - stencil_bits, max_stencil ); - - glClearStencil( 1 ); - glClearColor( 0.2, 0.2, 0.8, 0 ); - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT - | GL_STENCIL_BUFFER_BIT ); - - - glPushMatrix(); - - /* This is the "reference" square. - */ - - glDisable(GL_STENCIL_TEST); - glTranslatef(-6.0, 0, 0); - glBegin(GL_QUADS); - glColor3f( 0.5, 0.5, 0.5 ); - glVertex2f(-1, -1); - glVertex2f( 1, -1); - glVertex2f( 1, 1); - glVertex2f(-1, 1); - glEnd(); - - - glEnable(GL_STENCIL_TEST); - - /* Draw the first two squares using incr for the affected face - */ - - if (use20syntax) { - stencil_func_separate(GL_FRONT, GL_ALWAYS, 0, ~0); - stencil_func_separate(GL_BACK, GL_ALWAYS, 0, ~0); - } - else { - stencil_func_separate_ati(GL_ALWAYS, GL_ALWAYS, 0, ~0); - } - stencil_op_separate(GL_FRONT, GL_KEEP, GL_KEEP, GL_INCR); - stencil_op_separate(GL_BACK, GL_KEEP, GL_KEEP, GL_DECR); - - glTranslatef(3.0, 0, 0); - glBegin(GL_QUADS); - glColor3f( 0.9, 0.9, 0.9 ); - /* this should be front facing */ - for ( i = 0 ; i < (max_stencil + 5) ; i++ ) { - glVertex2f(-1, -1); - glVertex2f( 1, -1); - glVertex2f( 1, 1); - glVertex2f(-1, 1); - } - glEnd(); - - glStencilFunc(GL_EQUAL, max_stencil, ~0); - glBegin(GL_QUADS); - glColor3f( 0.5, 0.5, 0.5 ); - glVertex2f(-1, -1); - glVertex2f( 1, -1); - glVertex2f( 1, 1); - glVertex2f(-1, 1); - glEnd(); - - if (use20syntax) { - stencil_func_separate(GL_FRONT, GL_ALWAYS, 0, ~0); - stencil_func_separate(GL_BACK, GL_ALWAYS, 0, ~0); - } - else { - stencil_func_separate_ati(GL_ALWAYS, GL_ALWAYS, 0, ~0); - } - stencil_op_separate(GL_FRONT, GL_KEEP, GL_KEEP, GL_DECR); - stencil_op_separate(GL_BACK, GL_KEEP, GL_KEEP, GL_INCR); - - glTranslatef(3.0, 0, 0); - glBegin(GL_QUADS); - glColor3f( 0.9, 0.9, 0.9 ); - - /* this should be back facing */ - for ( i = 0 ; i < (max_stencil + 5) ; i++ ) { - glVertex2f(-1, -1); - glVertex2f(-1, 1); - glVertex2f( 1, 1); - glVertex2f( 1, -1); - } - glEnd(); - - glStencilFunc(GL_EQUAL, max_stencil, ~0); - glBegin(GL_QUADS); - glColor3f( 0.5, 0.5, 0.5 ); - glVertex2f(-1, -1); - glVertex2f( 1, -1); - glVertex2f( 1, 1); - glVertex2f(-1, 1); - glEnd(); - - if (use20syntax) { - stencil_func_separate(GL_FRONT, GL_NEVER, 0, ~0); - stencil_func_separate(GL_BACK, GL_ALWAYS, 0, ~0); - } - else { - stencil_func_separate_ati(GL_NEVER, GL_ALWAYS, 0, ~0); - } - stencil_op_separate(GL_FRONT, GL_KEEP, GL_KEEP, GL_DECR); - stencil_op_separate(GL_BACK, GL_KEEP, GL_KEEP, GL_INCR); - - glTranslatef(3.0, 0, 0); - glBegin(GL_QUADS); - glColor3f( 0.9, 0.9, 0.9 ); - - /* this should be back facing */ - for ( i = 0 ; i < (max_stencil + 5) ; i++ ) { - /* this should be back facing */ - glVertex2f(-1, -1); - glVertex2f(-1, 1); - glVertex2f( 1, 1); - glVertex2f( 1, -1); - /* this should be front facing */ - glVertex2f(-1, -1); - glVertex2f( 1, -1); - glVertex2f( 1, 1); - glVertex2f(-1, 1); - } - glEnd(); - - glStencilFunc(GL_EQUAL, max_stencil, ~0); - glBegin(GL_QUADS); - glColor3f( 0.5, 0.5, 0.5 ); - glVertex2f(-1, -1); - glVertex2f( 1, -1); - glVertex2f( 1, 1); - glVertex2f(-1, 1); - glEnd(); - - if (use20syntax) { - stencil_func_separate(GL_FRONT, GL_ALWAYS, 0, ~0); - stencil_func_separate(GL_BACK, GL_ALWAYS, 0, ~0); - } - else { - stencil_func_separate_ati(GL_ALWAYS, GL_ALWAYS, 0, ~0); - } - stencil_op_separate(GL_FRONT, GL_KEEP, GL_KEEP, GL_DECR); - stencil_op_separate(GL_BACK, GL_KEEP, GL_KEEP, GL_INCR); - - glTranslatef(3.0, 0, 0); - glBegin(GL_QUADS); - glColor3f( 0.9, 0.9, 0.9 ); - - /* this should be back facing */ - for ( i = 0 ; i < (max_stencil + 5) ; i++ ) { - /* this should be back facing */ - glVertex2f(-1, -1); - glVertex2f(-1, 1); - glVertex2f( 1, 1); - glVertex2f( 1, -1); - /* this should be front facing */ - glVertex2f(-1, -1); - glVertex2f( 1, -1); - glVertex2f( 1, 1); - glVertex2f(-1, 1); - } - glEnd(); - - glStencilFunc(GL_EQUAL, 1, ~0); - glBegin(GL_QUADS); - glColor3f( 0.5, 0.5, 0.5 ); - glVertex2f(-1, -1); - glVertex2f( 1, -1); - glVertex2f( 1, 1); - glVertex2f(-1, 1); - glEnd(); - - glPopMatrix(); - - glutSwapBuffers(); -} - - -static void Reshape( int width, int height ) -{ - GLfloat ar = (float) width / (float) height; - Width = width; - Height = height; - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -ar, ar, -1.0, 1.0, Near, Far ); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - glTranslatef( 0.0, 0.0, -15.0 ); -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void Init( void ) -{ - const char * const ver_string = (const char * const) - glGetString( GL_VERSION ); - - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - printf("GL_VERSION = %s\n", ver_string); - - if ( !glutExtensionSupported("GL_ATI_separate_stencil") - && (atof( ver_string ) < 2.0) ) { - printf("Sorry, this program requires either GL_ATI_separate_stencil or OpenGL 2.0.\n"); - exit(1); - } - if (atof( ver_string ) < 2.0) { - use20syntax = 0; - } - stencil_func_separate = (PFNGLSTENCILFUNCSEPARATEPROC) glutGetProcAddress( "glStencilFuncSeparate" ); - stencil_func_separate_ati = (PFNGLSTENCILFUNCSEPARATEATIPROC) glutGetProcAddress( "glStencilFuncSeparateATI" ); - stencil_op_separate = (PFNGLSTENCILOPSEPARATEPROC) glutGetProcAddress( "glStencilOpSeparate" ); - - printf("\nAll 5 squares should be the same color.\n"); -} - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( Width, Height ); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH | GLUT_STENCIL ); - glutCreateWindow( "GL_ATI_separate_stencil test" ); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/stencil_wrap.c b/progs/tests/stencil_wrap.c deleted file mode 100644 index 28307fef4f..0000000000 --- a/progs/tests/stencil_wrap.c +++ /dev/null @@ -1,259 +0,0 @@ -/* - * (C) Copyright IBM Corporation 2004 - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * on the rights to use, copy, modify, merge, publish, distribute, sub - * license, and/or sell copies of the Software, and to permit persons to whom - * the Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL - * VA LINUX SYSTEM, IBM AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - * USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/** - * \file stencil_wrap.c - * - * Simple test of GL_EXT_stencil_wrap functionality. Four squares are drawn - * with different stencil modes, but all should be rendered with the same - * final color. - * - * \author Ian Romanick <idr@us.ibm.com> - */ - -#include <stdio.h> -#include <stdlib.h> -#include <GL/glew.h> -#include <GL/glut.h> - -static int Width = 550; -static int Height = 200; -static const GLfloat Near = 5.0, Far = 25.0; - - -static void Display( void ) -{ - GLint max_stencil; - GLint stencil_bits; - unsigned i; - - - glGetIntegerv( GL_STENCIL_BITS, & stencil_bits ); - max_stencil = (1U << stencil_bits) - 1; - printf( "Stencil bits = %u, maximum stencil value = 0x%08x\n", - stencil_bits, max_stencil ); - - glClearStencil( 0 ); - glClearColor( 0.2, 0.2, 0.8, 0 ); - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT - | GL_STENCIL_BUFFER_BIT ); - - - glPushMatrix(); - - /* This is the "reference" square. - */ - - glDisable(GL_STENCIL_TEST); - glTranslatef(-6.0, 0, 0); - glBegin(GL_QUADS); - glColor3f( 0.5, 0.5, 0.5 ); - glVertex2f(-1, -1); - glVertex2f( 1, -1); - glVertex2f( 1, 1); - glVertex2f(-1, 1); - glEnd(); - - - glEnable(GL_STENCIL_TEST); - - /* Draw the first two squares using the two non-wrap (i.e., saturate) - * modes. - */ - - glStencilFunc(GL_ALWAYS, 0, ~0); - glStencilOp(GL_KEEP, GL_KEEP, GL_INCR); - - glTranslatef(3.0, 0, 0); - glBegin(GL_QUADS); - glColor3f( 0.9, 0.9, 0.9 ); - - for ( i = 0 ; i < (max_stencil + 5) ; i++ ) { - glVertex2f(-1, -1); - glVertex2f( 1, -1); - glVertex2f( 1, 1); - glVertex2f(-1, 1); - } - glEnd(); - - glStencilFunc(GL_EQUAL, max_stencil, ~0); - glBegin(GL_QUADS); - glColor3f( 0.5, 0.5, 0.5 ); - glVertex2f(-1, -1); - glVertex2f( 1, -1); - glVertex2f( 1, 1); - glVertex2f(-1, 1); - glEnd(); - - - glStencilFunc(GL_ALWAYS, 0, ~0); - glStencilOp(GL_KEEP, GL_KEEP, GL_DECR); - - glTranslatef(3.0, 0, 0); - glBegin(GL_QUADS); - glColor3f( 0.9, 0.9, 0.9 ); - - for ( i = 0 ; i < (max_stencil + 5) ; i++ ) { - glVertex2f(-1, -1); - glVertex2f( 1, -1); - glVertex2f( 1, 1); - glVertex2f(-1, 1); - } - glEnd(); - - glStencilFunc(GL_EQUAL, 0, ~0); - glBegin(GL_QUADS); - glColor3f( 0.5, 0.5, 0.5 ); - glVertex2f(-1, -1); - glVertex2f( 1, -1); - glVertex2f( 1, 1); - glVertex2f(-1, 1); - glEnd(); - - - - - /* Draw the last two squares using the two wrap modes. - */ - - glStencilFunc(GL_ALWAYS, 0, ~0); - glStencilOp(GL_KEEP, GL_KEEP, GL_INCR_WRAP); - - glTranslatef(3.0, 0, 0); - glBegin(GL_QUADS); - glColor3f( 0.9, 0.9, 0.9 ); - - for ( i = 0 ; i < (max_stencil + 5) ; i++ ) { - glVertex2f(-1, -1); - glVertex2f( 1, -1); - glVertex2f( 1, 1); - glVertex2f(-1, 1); - } - glEnd(); - - glStencilFunc(GL_EQUAL, 4, ~0); - glBegin(GL_QUADS); - glColor3f( 0.5, 0.5, 0.5 ); - glVertex2f(-1, -1); - glVertex2f( 1, -1); - glVertex2f( 1, 1); - glVertex2f(-1, 1); - glEnd(); - - - - glStencilFunc(GL_ALWAYS, 0, ~0); - glStencilOp(GL_KEEP, GL_KEEP, GL_DECR_WRAP); - - glTranslatef(3.0, 0, 0); - glBegin(GL_QUADS); - glColor3f( 0.9, 0.9, 0.9 ); - - for ( i = 0 ; i < 5 ; i++ ) { - glVertex2f(-1, -1); - glVertex2f( 1, -1); - glVertex2f( 1, 1); - glVertex2f(-1, 1); - } - glEnd(); - - glStencilFunc(GL_EQUAL, (max_stencil - 4), ~0); - glBegin(GL_QUADS); - glColor3f( 0.5, 0.5, 0.5 ); - glVertex2f(-1, -1); - glVertex2f( 1, -1); - glVertex2f( 1, 1); - glVertex2f(-1, 1); - glEnd(); - - - - glPopMatrix(); - - glutSwapBuffers(); -} - - -static void Reshape( int width, int height ) -{ - GLfloat ar = (float) width / (float) height; - Width = width; - Height = height; - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -ar, ar, -1.0, 1.0, Near, Far ); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - glTranslatef( 0.0, 0.0, -15.0 ); -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void Init( void ) -{ - const char * const ver_string = (const char * const) - glGetString( GL_VERSION ); - - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - printf("GL_VERSION = %s\n", ver_string); - - if ( !glutExtensionSupported("GL_EXT_stencil_wrap") - && (atof( ver_string ) < 1.4) ) { - printf("Sorry, this program requires either GL_EXT_stencil_wrap or OpenGL 1.4.\n"); - exit(1); - } - - printf("\nAll 5 squares should be the same color.\n"); - glEnable( GL_BLEND ); -} - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( Width, Height ); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH | GLUT_STENCIL ); - glutCreateWindow( "GL_EXT_stencil_wrap test" ); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/stencilwrap.c b/progs/tests/stencilwrap.c deleted file mode 100644 index d396fc2a53..0000000000 --- a/progs/tests/stencilwrap.c +++ /dev/null @@ -1,283 +0,0 @@ -/* Test GL_EXT_stencil_wrap extension. - * This is by no means complete, just a quick check. - * - * Brian Paul 30 October 2002 - */ - -#include <assert.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - -GLboolean wrapping; - -static void RunTest(void) -{ - const GLenum prim = GL_QUAD_STRIP; - GLubyte val; - int bits, max, i; - int expected; - GLboolean failed; - - glGetIntegerv(GL_STENCIL_BITS, &bits); - max = (1 << bits) - 1; - - - glEnable(GL_STENCIL_TEST); - glStencilFunc(GL_ALWAYS, 0, ~0); - - /* test GL_KEEP */ - glClearStencil(max); - glClear(GL_STENCIL_BUFFER_BIT); - glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); - failed = GL_FALSE; - printf("Testing GL_KEEP...\n"); - expected = max; - glBegin(prim); - glVertex2f(0, 0); - glVertex2f(10, 0); - glVertex2f(0, 10); - glVertex2f(10, 10); - glEnd(); - glReadPixels(0, 0, 1, 1, GL_STENCIL_INDEX, GL_UNSIGNED_BYTE, &val); - if (val != expected) { - printf("Failed GL_KEEP test(got %u, expected %u)\n", val, expected); - failed = GL_TRUE; - } - else - printf("OK!\n"); - - /* test GL_ZERO */ - glClearStencil(max); - glClear(GL_STENCIL_BUFFER_BIT); - glStencilOp(GL_KEEP, GL_KEEP, GL_ZERO); - failed = GL_FALSE; - printf("Testing GL_ZERO...\n"); - expected = 0; - glBegin(prim); - glVertex2f(0, 0); - glVertex2f(10, 0); - glVertex2f(0, 10); - glVertex2f(10, 10); - glEnd(); - glReadPixels(0, 0, 1, 1, GL_STENCIL_INDEX, GL_UNSIGNED_BYTE, &val); - if (val != expected) { - printf("Failed GL_ZERO test(got %u, expected %u)\n", val, expected); - failed = GL_TRUE; - } - else - printf("OK!\n"); - - /* test GL_REPLACE */ - glClearStencil(max); - glClear(GL_STENCIL_BUFFER_BIT); - glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE); - failed = GL_FALSE; - printf("Testing GL_REPLACE...\n"); - expected = 0; - glBegin(prim); - glVertex2f(0, 0); - glVertex2f(10, 0); - glVertex2f(0, 10); - glVertex2f(10, 10); - glEnd(); - glReadPixels(0, 0, 1, 1, GL_STENCIL_INDEX, GL_UNSIGNED_BYTE, &val); - if (val != expected) { - printf("Failed GL_REPLACE test(got %u, expected %u)\n", val, expected); - failed = GL_TRUE; - } - else - printf("OK!\n"); - - /* test GL_INCR (saturation) */ - glClearStencil(0); - glClear(GL_STENCIL_BUFFER_BIT); - glStencilOp(GL_KEEP, GL_KEEP, GL_INCR); - failed = GL_FALSE; - printf("Testing GL_INCR...\n"); - for (i = 1; i < max+10; i++) { - expected = (i > max) ? max : i; - glBegin(prim); - glVertex2f(0, 0); glVertex2f(10, 0); - glVertex2f(0, 10); glVertex2f(10, 10); - glEnd(); - - glReadPixels(0, 0, 1, 1, GL_STENCIL_INDEX, GL_UNSIGNED_BYTE, &val); - if (val != expected) { - printf( "Failed GL_INCR test on iteration #%u " - "(got %u, expected %u)\n", i, val, expected ); - failed = GL_TRUE; - } - } - if ( !failed ) - printf("OK!\n"); - - /* test GL_DECR (saturation) */ - glClearStencil(max); - glClear(GL_STENCIL_BUFFER_BIT); - glStencilOp(GL_KEEP, GL_KEEP, GL_DECR); - failed = GL_FALSE; - printf("Testing GL_DECR...\n"); - for (i = max-1; i > -10; i--) { - expected = (i < 0) ? 0 : i; - glBegin(prim); - glVertex2f(0, 0); glVertex2f(10, 0); - glVertex2f(0, 10); glVertex2f(10, 10); - glEnd(); - glReadPixels(0, 0, 1, 1, GL_STENCIL_INDEX, GL_UNSIGNED_BYTE, &val); - if (val != expected) { - printf( "Failed GL_DECR test on iteration #%u " - "(got %u, expected %u)\n", max - i, val, expected ); - failed = GL_TRUE; - } - } - if ( !failed ) - printf("OK!\n"); - - /* test GL_INVERT */ - glClearStencil(0); - glClear(GL_STENCIL_BUFFER_BIT); - glStencilOp(GL_KEEP, GL_KEEP, GL_INVERT); - failed = GL_FALSE; - printf("Testing GL_INVERT...\n"); - expected = max; - glBegin(prim); - glVertex2f(0, 0); - glVertex2f(10, 0); - glVertex2f(0, 10); - glVertex2f(10, 10); - glEnd(); - glReadPixels(0, 0, 1, 1, GL_STENCIL_INDEX, GL_UNSIGNED_BYTE, &val); - if (val != expected) { - printf("Failed GL_INVERT test(got %u, expected %u)\n", val, expected); - failed = GL_TRUE; - } - else - printf("OK!\n"); - - if(wrapping) - { - /* test GL_INCR_WRAP_EXT (wrap around) */ - glClearStencil(0); - glClear(GL_STENCIL_BUFFER_BIT); - glStencilOp(GL_KEEP, GL_KEEP, GL_INCR_WRAP_EXT); - failed = GL_FALSE; - printf("Testing GL_INCR_WRAP_EXT...\n"); - for (i = 1; i < max+10; i++) { - expected = i % (max + 1); - glBegin(prim); - glVertex2f(0, 0); glVertex2f(10, 0); - glVertex2f(0, 10); glVertex2f(10, 10); - glEnd(); - glReadPixels(0, 0, 1, 1, GL_STENCIL_INDEX, GL_UNSIGNED_BYTE, &val); - if (val != expected) { - printf( "Failed GL_INCR_WRAP test on iteration #%u " - "(got %u, expected %u)\n", i, val, expected ); - failed = GL_TRUE; - } - } - if ( !failed ) - printf("OK!\n"); - - /* test GL_DECR_WRAP_EXT (wrap-around) */ - glClearStencil(max); - glClear(GL_STENCIL_BUFFER_BIT); - glStencilOp(GL_KEEP, GL_KEEP, GL_DECR_WRAP_EXT); - failed = GL_FALSE; - printf("Testing GL_DECR_WRAP_EXT...\n"); - for (i = max-1; i > -10; i--) { - expected = (i < 0) ? max + i + 1: i; - glBegin(prim); - glVertex2f(0, 0); glVertex2f(10, 0); - glVertex2f(0, 10); glVertex2f(10, 10); - glEnd(); - glReadPixels(0, 0, 1, 1, GL_STENCIL_INDEX, GL_UNSIGNED_BYTE, &val); - if (val != expected) { - printf( "Failed GL_DECR_WRAP test on iteration #%u " - "(got %u, expected %u)\n", max - i, val, expected ); - failed = GL_TRUE; - } - } - if ( !failed ) - printf("OK!\n"); - } - - glDisable(GL_STENCIL_TEST); -} - - -static void Display( void ) -{ - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - RunTest(); - - glutSwapBuffers(); -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glOrtho(0, width, 0, height, -1, 1); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void Init( void ) -{ - const char * ver_str; - float version; - - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - - - /* Check for both the extension string and GL version 1.4 on the - * outside chance that some vendor exports version 1.4 but doesn't - * export the extension string. The stencil-wrap modes are a required - * part of GL 1.4. - */ - - ver_str = (char *) glGetString( GL_VERSION ); - version = (ver_str == NULL) ? 1.0 : atof( ver_str ); - - wrapping = (glutExtensionSupported("GL_EXT_stencil_wrap") || (version >= 1.4)); - if (!wrapping) - printf("GL_EXT_stencil_wrap not supported. Only testing the rest.\n"); -} - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 400, 400 ); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_STENCIL ); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/streaming_rect.c b/progs/tests/streaming_rect.c deleted file mode 100644 index f65ac4ce36..0000000000 --- a/progs/tests/streaming_rect.c +++ /dev/null @@ -1,327 +0,0 @@ -/* - * GL_ARB_pixel_buffer_object test - * - * Command line options: - * -w WIDTH -h HEIGHT sets window size - * - */ - -#include <math.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <GL/glew.h> -#include <GL/glut.h> - -#include "readtex.h" - - -#define ANIMATE 10 -#define PBO 11 -#define QUIT 100 - -static GLuint DrawPBO; - -static GLboolean Animate = GL_TRUE; -static GLboolean use_pbo = 1; -static GLboolean whole_rect = 1; - -static GLfloat Drift = 0.0; -static GLfloat drift_increment = 1/255.0; -static GLfloat Xrot = 20.0, Yrot = 30.0; - -static GLuint Width = 1024; -static GLuint Height = 512; - - -static void Idle( void ) -{ - if (Animate) { - - Drift += drift_increment; - if (Drift >= 1.0) - Drift = 0.0; - - glutPostRedisplay(); - } -} - -/*static int max( int a, int b ) { return a > b ? a : b; }*/ - -#ifndef min -static int min( int a, int b ) { return a < b ? a : b; } -#endif - -static void DrawObject() -{ - GLint size = Width * Height * 4; - - if (use_pbo) { - /* XXX: This is extremely important - semantically makes the buffer - * contents undefined, but in practice means that the driver can - * release the old copy of the texture and allocate a new one - * without waiting for outstanding rendering to complete. - */ - glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_EXT, DrawPBO); - glBufferDataARB(GL_PIXEL_UNPACK_BUFFER_EXT, size, NULL, GL_STREAM_DRAW_ARB); - - { - char *image = glMapBufferARB(GL_PIXEL_UNPACK_BUFFER_EXT, GL_WRITE_ONLY_ARB); - - printf("char %d\n", (unsigned char)(Drift * 255)); - - memset(image, (unsigned char)(Drift * 255), size); - - glUnmapBufferARB(GL_PIXEL_UNPACK_BUFFER_EXT); - } - - - /* BGRA is required for most hardware paths: - */ - glTexImage2D(GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA, Width, Height, 0, - GL_BGRA, GL_UNSIGNED_BYTE, NULL); - } - else { - static char *image = NULL; - - if (image == NULL) - image = malloc(size); - - glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_EXT, 0); - - memset(image, (unsigned char)(Drift * 255), size); - - /* BGRA should be the fast path for regular uploads as well. - */ - glTexImage2D(GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA, Width, Height, 0, - GL_BGRA, GL_UNSIGNED_BYTE, image); - } - - { - int x,y,w,h; - - if (whole_rect) { - x = y = 0; - w = Width; - h = Height; - } - else { - x = y = 0; - w = min(10, Width); - h = min(10, Height); - } - - glBegin(GL_QUADS); - - glTexCoord2f( x, y); - glVertex2f( x, y ); - - glTexCoord2f( x, y + h); - glVertex2f( x, y + h); - - glTexCoord2f( x + w + .5, y + h); - glVertex2f( x + w, y + h ); - - glTexCoord2f( x + w, y + .5); - glVertex2f( x + w, y ); - - glEnd(); - } -} - - - -static void Display( void ) -{ - static GLint T0 = 0; - static GLint Frames = 0; - GLint t; - - glClear( GL_COLOR_BUFFER_BIT ); - - glPushMatrix(); - DrawObject(); - glPopMatrix(); - - glutSwapBuffers(); - - Frames++; - - t = glutGet(GLUT_ELAPSED_TIME); - if (t - T0 >= 1000) { - GLfloat seconds = (t - T0) / 1000.0; - - GLfloat fps = Frames / seconds; - printf("%d frames in %6.3f seconds = %6.3f FPS\n", Frames, seconds, fps); - fflush(stdout); - - drift_increment = 2.2 * seconds / Frames; - T0 = t; - Frames = 0; - } -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); -/* glFrustum( -1.0, 1.0, -1.0, 1.0, 10.0, 100.0 ); */ - gluOrtho2D( 0, width, height, 0 ); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - glTranslatef(0.375, 0.375, 0); -} - - -static void ModeMenu(int entry) -{ - if (entry==ANIMATE) { - Animate = !Animate; - } - else if (entry==PBO) { - use_pbo = !use_pbo; - } - else if (entry==QUIT) { - exit(0); - } - - glutPostRedisplay(); -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void SpecialKey( int key, int x, int y ) -{ - float step = 3.0; - (void) x; - (void) y; - - switch (key) { - case GLUT_KEY_UP: - Xrot += step; - break; - case GLUT_KEY_DOWN: - Xrot -= step; - break; - case GLUT_KEY_LEFT: - Yrot += step; - break; - case GLUT_KEY_RIGHT: - Yrot -= step; - break; - } - glutPostRedisplay(); -} - - -static void Init( int argc, char *argv[] ) -{ - const char *exten = (const char *) glGetString(GL_EXTENSIONS); - GLuint texObj; - GLint size; - - - if (!strstr(exten, "GL_ARB_pixel_buffer_object")) { - printf("Sorry, GL_ARB_pixel_buffer_object not supported by this renderer.\n"); - exit(1); - } - - glGetIntegerv(GL_MAX_TEXTURE_SIZE, &size); - printf("%d x %d max texture size\n", size, size); - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - - /* allocate two texture objects */ - glGenTextures(1, &texObj); - - /* setup the texture objects */ - glActiveTextureARB(GL_TEXTURE0_ARB); - glBindTexture(GL_TEXTURE_RECTANGLE_ARB, texObj); - - glTexParameteri(GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - - glGenBuffersARB(1, &DrawPBO); - - glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_EXT, DrawPBO); - glBufferDataARB(GL_PIXEL_UNPACK_BUFFER_EXT, - Width * Height * 4, NULL, GL_STREAM_DRAW); - - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - - glEnable(GL_TEXTURE_RECTANGLE_ARB); - - glShadeModel(GL_SMOOTH); - glClearColor(0.3, 0.3, 0.4, 1.0); - - if (argc > 1 && strcmp(argv[1], "-info")==0) { - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - printf("GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - printf("GL_EXTENSIONS = %s\n", (char *) glGetString(GL_EXTENSIONS)); - } -} - - -int main( int argc, char *argv[] ) -{ - GLint i; - - glutInit( &argc, argv ); - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-w") == 0) { - Width = atoi(argv[i+1]); - if (Width <= 0) { - printf("Error, bad width\n"); - exit(1); - } - i++; - } - else if (strcmp(argv[i], "-h") == 0) { - Height = atoi(argv[i+1]); - if (Height <= 0) { - printf("Error, bad height\n"); - exit(1); - } - i++; - } - } - - glutInitWindowSize( Width, Height ); - glutInitWindowPosition( 0, 0 ); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE ); - glutCreateWindow(argv[0] ); - glewInit(); - - Init( argc, argv ); - - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutSpecialFunc( SpecialKey ); - glutDisplayFunc( Display ); - glutIdleFunc( Idle ); - - glutCreateMenu(ModeMenu); - glutAddMenuEntry("Toggle Animation", ANIMATE); - glutAddMenuEntry("Toggle PBO", PBO); - glutAddMenuEntry("Quit", QUIT); - glutAttachMenu(GLUT_RIGHT_BUTTON); - - glutMainLoop(); - return 0; -} diff --git a/progs/tests/subtex.c b/progs/tests/subtex.c deleted file mode 100644 index 86b737c01f..0000000000 --- a/progs/tests/subtex.c +++ /dev/null @@ -1,225 +0,0 @@ -/* - * Test glTexSubImage mid-way through a frame. - * - * The same texture is used for both quads but it gets redefined - * with glTexSubImage (or glTexImage) after the first quad. - */ - - -#include <assert.h> -#include <stdio.h> -#include <stdlib.h> -#include "GL/glew.h" -#include "GL/glut.h" - -static GLuint Window = 0; -static GLboolean Anim = GL_FALSE; -static GLfloat Angle = 0.0f; - - - -static void -first_texture(void) -{ - static int width=8, height=8; - static GLubyte tex1[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 1, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 1, 1, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0 }; - - GLubyte tex[64][3]; - GLint i, j; - - /* red on white */ - for (i=0;i<height;i++) { - for (j=0;j<width;j++) { - int p = i*width+j; - if (tex1[(height-i-1)*width+j]) { - tex[p][0] = 255; tex[p][1] = 0; tex[p][2] = 0; - } - else { - tex[p][0] = 255; tex[p][1] = 255; tex[p][2] = 255; - } - } - } - - glTexImage2D( GL_TEXTURE_2D, 0, 3, width, height, 0, - GL_RGB, GL_UNSIGNED_BYTE, tex ); -} - - -static void -second_texture(void) -{ - static int width=8, height=8; - - static GLubyte tex2[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2, 2, 0, 0, 0, - 0, 0, 2, 0, 0, 2, 0, 0, - 0, 0, 0, 0, 0, 2, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 2, 0, 0, 0, 0, - 0, 0, 2, 2, 2, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0 }; - - GLubyte tex[64][3]; - GLint i, j; - - /* green on blue */ - for (i=0;i<height;i++) { - for (j=0;j<width;j++) { - int p = i*width+j; - if (tex2[(height-i-1)*width+j]) { - tex[p][0] = 0; tex[p][1] = 255; tex[p][2] = 0; - } - else { - tex[p][0] = 0; tex[p][1] = 0; tex[p][2] = 255; - } - } - } -#if 0 - glTexImage2D( GL_TEXTURE_2D, 0, 3, width, height, 0, - GL_RGB, GL_UNSIGNED_BYTE, tex ); -#else - glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, width, height, - GL_RGB, GL_UNSIGNED_BYTE, tex ); -#endif -} - - - -static void draw( void ) -{ - glClear( GL_COLOR_BUFFER_BIT ); - - glColor3f( 1.0, 1.0, 1.0 ); - - /* draw first polygon */ - glPushMatrix(); - glTranslatef( -1.0, 0.0, 0.0 ); - glRotatef( Angle, 0.0, 0.0, 1.0 ); - - first_texture(); - - glBegin( GL_POLYGON ); - glTexCoord2f( 0.0, 0.0 ); glVertex2f( -1.0, -1.0 ); - glTexCoord2f( 1.0, 0.0 ); glVertex2f( 1.0, -1.0 ); - glTexCoord2f( 1.0, 1.0 ); glVertex2f( 1.0, 1.0 ); - glTexCoord2f( 0.0, 1.0 ); glVertex2f( -1.0, 1.0 ); - glEnd(); - glPopMatrix(); - - /* draw second polygon */ - glPushMatrix(); - glTranslatef( 1.0, 0.0, 0.0 ); - glRotatef( Angle-90.0, 0.0, 1.0, 0.0 ); - - second_texture(); - - glBegin( GL_POLYGON ); - glTexCoord2f( 0.0, 0.0 ); glVertex2f( -1.0, -1.0 ); - glTexCoord2f( 1.0, 0.0 ); glVertex2f( 1.0, -1.0 ); - glTexCoord2f( 1.0, 1.0 ); glVertex2f( 1.0, 1.0 ); - glTexCoord2f( 0.0, 1.0 ); glVertex2f( -1.0, 1.0 ); - glEnd(); - glPopMatrix(); - - glutSwapBuffers(); -} - - - -static void idle( void ) -{ - static double t0 = -1.; - double dt, t = glutGet(GLUT_ELAPSED_TIME) / 1000.0; - if (t0 < 0.0) - t0 = t; - dt = t - t0; - t0 = t; - Angle += 120.0*dt; - glutPostRedisplay(); -} - - - -/* change view Angle, exit upon ESC */ -static void key(unsigned char k, int x, int y) -{ - (void) x; - (void) y; - switch (k) { - case 'a': - Anim = !Anim; - if (Anim) - glutIdleFunc( idle ); - else - glutIdleFunc( NULL ); - break; - case 27: - glutDestroyWindow(Window); - exit(0); - } -} - - - -/* new window size or exposure */ -static void reshape( int width, int height ) -{ - glViewport(0, 0, (GLint)width, (GLint)height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - /* glOrtho( -3.0, 3.0, -3.0, 3.0, -10.0, 10.0 );*/ - glFrustum( -2.0, 2.0, -2.0, 2.0, 6.0, 20.0 ); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef( 0.0, 0.0, -8.0 ); -} - - -static void init( void ) -{ - /* Setup texturing */ - glEnable( GL_TEXTURE_2D ); - glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL ); - - - glBindTexture( GL_TEXTURE_2D, 0 ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT ); -} - - - -int main( int argc, char *argv[] ) -{ - glutInit(&argc, argv); - glutInitWindowPosition(0, 0); - glutInitWindowSize(300, 300); - glutInitDisplayMode( GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE ); - - Window = glutCreateWindow("Texture Objects"); - glewInit(); - if (!Window) { - exit(1); - } - - init(); - - glutReshapeFunc( reshape ); - glutKeyboardFunc( key ); - if (Anim) - glutIdleFunc( idle ); - glutDisplayFunc( draw ); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/subtexrate.c b/progs/tests/subtexrate.c deleted file mode 100644 index 4bda970d06..0000000000 --- a/progs/tests/subtexrate.c +++ /dev/null @@ -1,351 +0,0 @@ -/* - * Measure glTexSubImage and glCopyTexSubImage speed - * - * Brian Paul - * 26 Jan 2006 - */ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - -static GLint WinWidth = 1024, WinHeight = 512; -static GLint TexWidth = 512, TexHeight = 512; - -static GLuint TexObj = 1; - -static GLenum IntFormat = GL_RGBA8; -static GLenum ReadFormat = GL_RGBA; /* for glReadPixels */ - -static GLboolean DrawQuad = GL_TRUE; - - -/** - * draw teapot image, size TexWidth by TexHeight - */ -static void -DrawTestImage(void) -{ - GLfloat ar; - - glViewport(0, 0, TexWidth, TexHeight); - glScissor(0, 0, TexWidth, TexHeight); - glEnable(GL_SCISSOR_TEST); - - glClearColor(0.5, 0.5, 0.5, 0.0); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - ar = (float) TexWidth / TexHeight; - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-ar, ar, -1.0, 1.0, 5.0, 25.0); - glMatrixMode(GL_MODELVIEW); - - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_DEPTH_TEST); - glFrontFace(GL_CW); - glPushMatrix(); - glRotatef(45, 1, 0, 0); - glRotatef(45, 0, 1, 0); - glutSolidTeapot(2.3); - glPopMatrix(); - glFrontFace(GL_CCW); - glDisable(GL_DEPTH_TEST); - glDisable(GL_LIGHTING); - - glDisable(GL_SCISSOR_TEST); - - glViewport(0, 0, WinWidth, WinHeight); - glFinish(); -} - - -/** - * Do glCopyTexSubImage2D call (update texture with framebuffer data) - * If doSubRect is true, do the copy in four pieces instead of all at once. - */ -static void -DoCopyTex(GLboolean doSubRect) -{ - if (doSubRect) { - /* copy in four parts */ - int w = TexWidth / 2, h = TexHeight / 2; - int x0 = 0, y0 = 0; - int x1 = w, y1 = h; -#if 1 - glCopyTexSubImage2D(GL_TEXTURE_2D, 0, x0, y0, x0, y0, w, h); - glCopyTexSubImage2D(GL_TEXTURE_2D, 0, x1, y0, x1, y0, w, h); - glCopyTexSubImage2D(GL_TEXTURE_2D, 0, x0, y1, x0, y1, w, h); - glCopyTexSubImage2D(GL_TEXTURE_2D, 0, x1, y1, x1, y1, w, h); -#else - /* scramble */ - glCopyTexSubImage2D(GL_TEXTURE_2D, 0, x0, y0, x1, y1, w, h); - glCopyTexSubImage2D(GL_TEXTURE_2D, 0, x1, y0, x0, y1, w, h); - glCopyTexSubImage2D(GL_TEXTURE_2D, 0, x0, y1, x1, y0, w, h); - glCopyTexSubImage2D(GL_TEXTURE_2D, 0, x1, y1, x0, y0, w, h); -#endif - } - else { - glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, TexWidth, TexHeight); - } -} - - -/** - * Do glTexSubImage2D (update texture w/ user data) - * If doSubRect, do update in four pieces, else all at once. - */ -static void -SubTex(GLboolean doSubRect, const GLubyte *image) -{ - if (doSubRect) { - /* four pieces */ - int w = TexWidth / 2, h = TexHeight / 2; - int x0 = 0, y0 = 0; - int x1 = w, y1 = h; - glPixelStorei(GL_UNPACK_ROW_LENGTH, TexWidth); - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - - glPixelStorei(GL_UNPACK_SKIP_ROWS, y0); - glPixelStorei(GL_UNPACK_SKIP_PIXELS, x0); - glTexSubImage2D(GL_TEXTURE_2D, 0, x0, y0, w, h, - ReadFormat, GL_UNSIGNED_BYTE, image); - - glPixelStorei(GL_UNPACK_SKIP_ROWS, y0); - glPixelStorei(GL_UNPACK_SKIP_PIXELS, x1); - glTexSubImage2D(GL_TEXTURE_2D, 0, x1, y0, w, h, - ReadFormat, GL_UNSIGNED_BYTE, image); - - glPixelStorei(GL_UNPACK_SKIP_ROWS, y1); - glPixelStorei(GL_UNPACK_SKIP_PIXELS, x0); - glTexSubImage2D(GL_TEXTURE_2D, 0, x0, y1, w, h, - ReadFormat, GL_UNSIGNED_BYTE, image); - - glPixelStorei(GL_UNPACK_SKIP_ROWS, y1); - glPixelStorei(GL_UNPACK_SKIP_PIXELS, x1); - glTexSubImage2D(GL_TEXTURE_2D, 0, x1, y1, w, h, - ReadFormat, GL_UNSIGNED_BYTE, image); - } - else { - /* all at once */ - glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, TexWidth, TexHeight, - ReadFormat, GL_UNSIGNED_BYTE, image); - } -} - - -/** - * Measure gl[Copy]TexSubImage rate. - * This actually also includes time to render a quad and SwapBuffers. - */ -static void -RunTest(GLboolean copyTex, GLboolean doSubRect) -{ - double t0, t1; - int iters = 0; - float copyRate, mbRate; - float rot = 0.0; - int bpp, r, g, b, a; - int w, h; - GLubyte *image = NULL; - - glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_RED_SIZE, &r); - glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_GREEN_SIZE, &g); - glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_BLUE_SIZE, &b); - glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_ALPHA_SIZE, &a); - bpp = (r + g + b + a) / 8; - - if (!copyTex) { - /* read image from frame buffer */ - image = (GLubyte *) malloc(TexWidth * TexHeight * bpp); - glPixelStorei(GL_PACK_ALIGNMENT, 1); - glReadPixels(0, 0, TexWidth, TexHeight, - ReadFormat, GL_UNSIGNED_BYTE, image); - } - - glEnable(GL_TEXTURE_2D); - glViewport(WinWidth / 2, 0, WinWidth / 2, WinHeight); - - t0 = glutGet(GLUT_ELAPSED_TIME) / 1000.0; - - do { - if (copyTex) - /* Framebuffer -> Texture */ - DoCopyTex(doSubRect); - else { - /* Main Mem -> Texture */ - SubTex(doSubRect, image); - } - - /* draw textured quad */ - if (DrawQuad) { - glPushMatrix(); - glRotatef(rot, 0, 0, 1); - glTranslatef(1, 0, 0); - glBegin(GL_POLYGON); - glTexCoord2f(0, 0); glVertex2f(-1, -1); - glTexCoord2f(1, 0); glVertex2f( 1, -1); - glTexCoord2f(1, 1); glVertex2f( 1, 1); - glTexCoord2f(0, 1); glVertex2f(-1, 1); - glEnd(); - glPopMatrix(); - } - - iters++; - rot += 2.0; - - t1 = glutGet(GLUT_ELAPSED_TIME) / 1000.0; - if (DrawQuad) { - glutSwapBuffers(); - } - } while (t1 - t0 < 5.0); - - glDisable(GL_TEXTURE_2D); - if (image) - free(image); - - if (doSubRect) { - w = TexWidth / 2; - h = TexHeight / 2; - iters *= 4; - } - else { - w = TexWidth; - h = TexHeight; - } - - copyRate = iters / (t1 - t0); - mbRate = w * h * bpp * copyRate / (1024 * 1024); - - if (copyTex) - printf("glCopyTexSubImage: %d x %d, %d Bpp:\n", w, h, bpp); - else - printf("glTexSubImage: %d x %d, %d Bpp:\n", w, h, bpp); - printf(" %d calls in %.2f = %.2f calls/sec, %.2f MB/s\n", - iters, t1-t0, copyRate, mbRate); -} - - -static void -Draw(void) -{ - glClearColor(0.2, 0.2, 0.8, 0); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - DrawTestImage(); - if (!DrawQuad) { - glutSwapBuffers(); - } - - RunTest(GL_FALSE, GL_FALSE); - RunTest(GL_FALSE, GL_TRUE); - RunTest(GL_TRUE, GL_FALSE); - RunTest(GL_TRUE, GL_TRUE); - - glutSwapBuffers(); - - printf("exiting\n"); - exit(0); -} - - -static void -Reshape(int width, int height) -{ - glViewport(0, 0, width, height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-1.0, 1.0, -1.0, 1.0, 5.0, 25.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0, 0.0, -15.0); -} - - -static void -Key(unsigned char key, int x, int y) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void -SpecialKey(int key, int x, int y) -{ - (void) x; - (void) y; - switch (key) { - case GLUT_KEY_UP: - break; - case GLUT_KEY_DOWN: - break; - case GLUT_KEY_LEFT: - break; - case GLUT_KEY_RIGHT: - break; - } - glutPostRedisplay(); -} - - -static void -Init(void) -{ - /* create initial, empty teximage */ - glBindTexture(GL_TEXTURE_2D, TexObj); - glTexImage2D(GL_TEXTURE_2D, 0, IntFormat, TexWidth, TexHeight, 0, - GL_RGBA, GL_UNSIGNED_BYTE, NULL); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); -} - - - -static void -ParseArgs(int argc, char *argv[]) -{ - int i; - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-nodraw") == 0) - DrawQuad = GL_FALSE; - } -} - - -int -main(int argc, char *argv[]) -{ - GLint mode = GLUT_RGB | GLUT_ALPHA | GLUT_DOUBLE | GLUT_DEPTH; - glutInit(&argc, argv); - - ParseArgs(argc, argv); - - glutInitWindowPosition(0, 0); - glutInitWindowSize(WinWidth, WinHeight); - glutInitDisplayMode(mode); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutSpecialFunc(SpecialKey); - glutDisplayFunc(Draw); - - printf("GL_RENDERER: %s\n", (char *) glGetString(GL_RENDERER)); - Init(); - - glutMainLoop(); - return 0; -} diff --git a/progs/tests/tex1d.c b/progs/tests/tex1d.c deleted file mode 100644 index 7d67451c0d..0000000000 --- a/progs/tests/tex1d.c +++ /dev/null @@ -1,143 +0,0 @@ - -/* Exercise 1D textures - */ - -#include <assert.h> -#include <math.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include "GL/glew.h" -#include "GL/glut.h" - -static GLuint Window = 0; -static GLuint TexObj[2]; -static GLfloat Angle = 0.0f; - - -static void draw( void ) -{ - glClear( GL_COLOR_BUFFER_BIT ); - - glColor3f( 1.0, 1.0, 1.0 ); - - /* draw first polygon */ - glPushMatrix(); - glTranslatef( -1.0, 0.0, 0.0 ); - glRotatef( Angle, 0.0, 0.0, 1.0 ); - glBindTexture( GL_TEXTURE_1D, TexObj[0] ); - glBegin( GL_POLYGON ); - glTexCoord1f( 0.0 ); glVertex2f( -1.0, -1.0 ); - glTexCoord1f( 1.0 ); glVertex2f( 1.0, -1.0 ); - glTexCoord1f( 1.0 ); glVertex2f( 1.0, 1.0 ); - glTexCoord1f( 0.0 ); glVertex2f( -1.0, 1.0 ); - glEnd(); - glPopMatrix(); - - glutSwapBuffers(); -} - - - -/* -static void idle( void ) -{ - Angle += 2.0; - glutPostRedisplay(); -} -*/ - - - -/* change view Angle, exit upon ESC */ -static void key(unsigned char k, int x, int y) -{ - (void) x; - (void) y; - switch (k) { - case 27: - exit(0); - } -} - - - -/* new window size or exposure */ -static void reshape( int width, int height ) -{ - glViewport(0, 0, (GLint)width, (GLint)height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - /* glOrtho( -3.0, 3.0, -3.0, 3.0, -10.0, 10.0 );*/ - glFrustum( -2.0, 2.0, -2.0, 2.0, 6.0, 20.0 ); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef( 0.0, 0.0, -8.0 ); -} - - -static void init( void ) -{ - GLubyte tex[256][3]; - GLint i; - - - glDisable( GL_DITHER ); - - /* Setup texturing */ - glEnable( GL_TEXTURE_1D ); - glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL ); - - - /* generate texture object IDs */ - glGenTextures( 2, TexObj ); - - /* setup first texture object */ - glBindTexture( GL_TEXTURE_1D, TexObj[0] ); - - - for (i = 0; i < 256; i++) { - GLfloat f; - - /* map 0..255 to -PI .. PI */ - f = ((i / 255.0) - .5) * (3.141592 * 2); - - f = sin(f); - - /* map -1..1 to 0..255 */ - tex[i][0] = (f+1.0)/2.0 * 255.0; - tex[i][1] = 0; - tex[i][2] = 0; - } - - glTexImage1D( GL_TEXTURE_1D, 0, 3, 256, 0, GL_RGB, GL_UNSIGNED_BYTE, tex ); - glTexParameteri( GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_NEAREST ); - glTexParameteri( GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_NEAREST ); - glTexParameteri( GL_TEXTURE_1D, GL_TEXTURE_WRAP_S, GL_REPEAT ); - glTexParameteri( GL_TEXTURE_1D, GL_TEXTURE_WRAP_T, GL_REPEAT ); -} - - - -int main( int argc, char *argv[] ) -{ - glutInit(&argc, argv); - glutInitWindowPosition(0, 0); - glutInitWindowSize(300, 300); - glutInitDisplayMode( GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE ); - - Window = glutCreateWindow("Texture Objects"); - glewInit(); - if (!Window) { - exit(1); - } - - init(); - - glutReshapeFunc( reshape ); - glutKeyboardFunc( key ); -/* glutIdleFunc( idle ); */ - glutDisplayFunc( draw ); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/texcmp.c b/progs/tests/texcmp.c deleted file mode 100644 index c5d352fdae..0000000000 --- a/progs/tests/texcmp.c +++ /dev/null @@ -1,438 +0,0 @@ -/* - * Compressed texture demo. Written by Daniel Borca. - * This program is in the public domain. - */ - -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <string.h> -#include <GL/glew.h> -#include <GL/glut.h> - -#include "readtex.c" /* I know, this is a hack. */ -#define TEXTURE_FILE "../images/tree2.rgba" - - -static float Rot = 0.0; -static GLboolean Anim = 1; - -typedef struct { - GLubyte *data; - GLuint size; - GLenum format; - GLuint w, h; - - GLenum TC; - - GLubyte *cData; - GLuint cSize; - GLenum cFormat; -} TEXTURE; - -static TEXTURE *Tx, t1, t2, t3; -static GLboolean fxt1, dxtc, s3tc; - - -static const char *TextureName (GLenum TC) -{ - switch (TC) { - case GL_RGB: - return "RGB"; - case GL_RGBA: - return "RGBA"; - case GL_COMPRESSED_RGB: - return "COMPRESSED_RGB"; - case GL_COMPRESSED_RGBA: - return "COMPRESSED_RGBA"; - case GL_COMPRESSED_RGB_FXT1_3DFX: - return "GL_COMPRESSED_RGB_FXT1_3DFX"; - case GL_COMPRESSED_RGBA_FXT1_3DFX: - return "GL_COMPRESSED_RGBA_FXT1_3DFX"; - case GL_COMPRESSED_RGB_S3TC_DXT1_EXT: - return "GL_COMPRESSED_RGB_S3TC_DXT1_EXT"; - case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: - return "GL_COMPRESSED_RGBA_S3TC_DXT1_EXT"; - case GL_COMPRESSED_RGBA_S3TC_DXT3_EXT: - return "GL_COMPRESSED_RGBA_S3TC_DXT3_EXT"; - case GL_COMPRESSED_RGBA_S3TC_DXT5_EXT: - return "GL_COMPRESSED_RGBA_S3TC_DXT5_EXT"; - case GL_RGB_S3TC: - return "GL_RGB_S3TC"; - case GL_RGB4_S3TC: - return "GL_RGB4_S3TC"; - case GL_RGBA_S3TC: - return "GL_RGBA_S3TC"; - case GL_RGBA4_S3TC: - return "GL_RGBA4_S3TC"; - case 0: - return "Invalid format"; - default: - return "Unknown format"; - } -} - - -static void -PrintString(const char *s) -{ - while (*s) { - glutBitmapCharacter(GLUT_BITMAP_8_BY_13, (int) *s); - s++; - } -} - - -static void Idle( void ) -{ - float t = glutGet(GLUT_ELAPSED_TIME) * 0.001; /* in seconds */ - Rot = t * 360 / 4; /* 1 rotation per 4 seconds */ - glutPostRedisplay(); -} - - -static void Display( void ) -{ - /* draw background gradient */ - glDisable(GL_TEXTURE_2D); - glBegin(GL_POLYGON); - glColor3f(1.0, 0.0, 0.2); glVertex2f(-1.5, -1.0); - glColor3f(1.0, 0.0, 0.2); glVertex2f( 1.5, -1.0); - glColor3f(0.0, 0.0, 1.0); glVertex2f( 1.5, 1.0); - glColor3f(0.0, 0.0, 1.0); glVertex2f(-1.5, 1.0); - glEnd(); - - glPushMatrix(); - glRotatef(Rot, 0, 0, 1); - - glEnable(GL_TEXTURE_2D); - glEnable(GL_BLEND); - - glBegin(GL_POLYGON); - glTexCoord2f(0, 1); glVertex2f(-1, -0.5); - glTexCoord2f(1, 1); glVertex2f( 1, -0.5); - glTexCoord2f(1, 0); glVertex2f( 1, 0.5); - glTexCoord2f(0, 0); glVertex2f(-1, 0.5); - glEnd(); - - glPopMatrix(); - - glDisable(GL_TEXTURE_2D); - - /* info */ - glDisable(GL_BLEND); - glColor4f(1, 1, 1, 1); - - glRasterPos3f(-1.2, -0.7, 0); - PrintString("Selected: "); - PrintString(TextureName(Tx->TC)); - if (Tx->cData) { - char tmp[64]; - glRasterPos3f(-1.2, -0.8, 0); - PrintString("Internal: "); - PrintString(TextureName(Tx->cFormat)); - glRasterPos3f(-1.2, -0.9, 0); - PrintString("Size : "); - sprintf(tmp, "%d (%d%% of %d)", Tx->cSize, Tx->cSize * 100 / Tx->size, Tx->size); - PrintString(tmp); - } - - glutSwapBuffers(); -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glOrtho( -1.5, 1.5, -1.0, 1.0, -1.0, 1.0 ); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); -} - - -static void ReInit( GLenum TC, TEXTURE *Tx ) -{ - GLint rv, v; - - if ((Tx->TC == TC) && (Tx->cData != NULL)) { - glCompressedTexImage2DARB(GL_TEXTURE_2D, /* target */ - 0, /* level */ - Tx->cFormat, /* real format */ - Tx->w, /* original width */ - Tx->h, /* original height */ - 0, /* border */ - Tx->cSize, /* compressed size*/ - Tx->cData); /* compressed data*/ - } else { - glTexImage2D(GL_TEXTURE_2D, /* target */ - 0, /* level */ - TC, /* internal format */ - Tx->w, Tx->h, /* width, height */ - 0, /* border */ - Tx->format, /* texture format */ - GL_UNSIGNED_BYTE, /* texture type */ - Tx->data); /* the texture */ - - - v = 0; - glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, - GL_TEXTURE_INTERNAL_FORMAT, &v); - printf("Requested internal format = 0x%x, actual = 0x%x\n", TC, v); - - if (0) { - GLint r, g, b, a, l, i; - glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_RED_SIZE, &r); - glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_GREEN_SIZE, &g); - glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_BLUE_SIZE, &b); - glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_ALPHA_SIZE, &a); - glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_LUMINANCE_SIZE, &l); - glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_INTENSITY_SIZE, &i); - printf("Compressed Bits per R: %d G: %d B: %d A: %d L: %d I: %d\n", - r, g, b, a, l, i); - } - - /* okay, now cache the compressed texture */ - Tx->TC = TC; - if (Tx->cData != NULL) { - free(Tx->cData); - Tx->cData = NULL; - } - glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_COMPRESSED_ARB, &rv); - if (rv) { - glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_INTERNAL_FORMAT, (GLint *)&Tx->cFormat); - glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB, (GLint *)&Tx->cSize); - if ((Tx->cData = malloc(Tx->cSize)) != NULL) { - glGetCompressedTexImageARB(GL_TEXTURE_2D, 0, Tx->cData); - } - } - } -} - - -static void Init( void ) -{ - /* HEIGHT * WIDTH + 1 (for trailing '\0') */ - static char pattern[8 * 32 + 1] = {"\ - \ - MMM EEEE SSS AAA \ - M M M E S S A A \ - M M M EEEE SS A A \ - M M M E SS AAAAA \ - M M E S S A A \ - M M EEEE SSS A A \ - " - }; - - GLuint i, j; - - GLubyte (*texture1)[8 * 32][4]; - GLubyte (*texture2)[256][256][4]; - - t1.w = 32; - t1.h = 8; - t1.size = t1.w * t1.h * 4; - t1.data = malloc(t1.size); - t1.format = GL_RGBA; - t1.TC = GL_RGBA; - - texture1 = (GLubyte (*)[8 * 32][4])t1.data; - for (i = 0; i < sizeof(pattern) - 1; i++) { - switch (pattern[i]) { - default: - case ' ': - (*texture1)[i][0] = 255; - (*texture1)[i][1] = 255; - (*texture1)[i][2] = 255; - (*texture1)[i][3] = 64; - break; - case 'M': - (*texture1)[i][0] = 255; - (*texture1)[i][1] = 0; - (*texture1)[i][2] = 0; - (*texture1)[i][3] = 255; - break; - case 'E': - (*texture1)[i][0] = 0; - (*texture1)[i][1] = 255; - (*texture1)[i][2] = 0; - (*texture1)[i][3] = 255; - break; - case 'S': - (*texture1)[i][0] = 0; - (*texture1)[i][1] = 0; - (*texture1)[i][2] = 255; - (*texture1)[i][3] = 255; - break; - case 'A': - (*texture1)[i][0] = 255; - (*texture1)[i][1] = 255; - (*texture1)[i][2] = 0; - (*texture1)[i][3] = 255; - break; - } - } - - t2.w = 256; - t2.h = 256; - t2.size = t2.w * t2.h * 4; - t2.data = malloc(t2.size); - t2.format = GL_RGBA; - t2.TC = GL_RGBA; - - texture2 = (GLubyte (*)[256][256][4])t2.data; - for (j = 0; j < t2.h; j++) { - for (i = 0; i < t2.w; i++) { - (*texture2)[j][i][0] = sqrt(i * j * 255 * 255 / (t2.w * t2.h)); - (*texture2)[j][i][1] = 0; - (*texture2)[j][i][2] = 0; - (*texture2)[j][i][3] = 255; - } - } - - t3.data = LoadRGBImage(TEXTURE_FILE, (GLint *)&t3.w, (GLint *)&t3.h, &t3.format); - t3.size = t3.w * t3.h * ((t3.format == GL_RGB) ? 3 : 4); - t3.TC = GL_RGBA; - - ReInit(GL_RGBA, Tx = &t1); - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - glEnable(GL_TEXTURE_2D); - - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - case ' ': - Anim = !Anim; - if (Anim) - glutIdleFunc( Idle ); - else - glutIdleFunc( NULL ); - break; - case 't': - if (Tx == &t1) { - Tx = &t2; - } else if (Tx == &t2) { - Tx = &t3; - } else { - Tx = &t1; - } - ReInit(Tx->TC, Tx); - break; - case '9': - ReInit(GL_RGB, Tx); - break; - case '0': - ReInit(GL_RGBA, Tx); - break; - case '1': - ReInit(GL_COMPRESSED_RGB, Tx); - break; - case '2': - ReInit(GL_COMPRESSED_RGBA, Tx); - break; - case '3': - if (fxt1) ReInit(GL_COMPRESSED_RGB_FXT1_3DFX, Tx); - break; - case '4': - if (fxt1) ReInit(GL_COMPRESSED_RGBA_FXT1_3DFX, Tx); - break; - case '5': - if (dxtc) ReInit(GL_COMPRESSED_RGB_S3TC_DXT1_EXT, Tx); - break; - case '6': - if (dxtc) ReInit(GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, Tx); - break; - case '7': - if (dxtc) ReInit(GL_COMPRESSED_RGBA_S3TC_DXT3_EXT, Tx); - break; - case '8': - if (dxtc) ReInit(GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, Tx); - break; - case 'a': - if (s3tc) ReInit(GL_RGB_S3TC, Tx); - break; - case 's': - if (s3tc) ReInit(GL_RGB4_S3TC, Tx); - break; - case 'd': - if (s3tc) ReInit(GL_RGBA_S3TC, Tx); - break; - case 'f': - if (s3tc) ReInit(GL_RGBA4_S3TC, Tx); - break; - } - glutPostRedisplay(); -} - - -int main( int argc, char *argv[] ) -{ - float gl_version; - GLint num_formats; - GLint i; - GLint formats[64]; - - - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 400, 300 ); - - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE ); - - if (glutCreateWindow(argv[0]) <= 0) { - printf("Couldn't create window\n"); - exit(0); - } - - glewInit(); - gl_version = atof( (const char *) glGetString( GL_VERSION ) ); - if ( (gl_version < 1.3) - && !glutExtensionSupported("GL_ARB_texture_compression") ) { - printf("Sorry, GL_ARB_texture_compression not supported\n"); - exit(0); - } - if (glutExtensionSupported("GL_3DFX_texture_compression_FXT1")) { - fxt1 = GL_TRUE; - } - if (glutExtensionSupported("GL_EXT_texture_compression_s3tc")) { - dxtc = GL_TRUE; - } - if (glutExtensionSupported("GL_S3_s3tc")) { - s3tc = GL_TRUE; - } - - glGetIntegerv( GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB, & num_formats ); - - (void) memset( formats, 0, sizeof( formats ) ); - glGetIntegerv( GL_COMPRESSED_TEXTURE_FORMATS_ARB, formats ); - - printf( "The following texture formats are supported:\n" ); - for ( i = 0 ; i < num_formats ; i++ ) { - printf( "\t%s\n", TextureName( formats[i] ) ); - } - - Init(); - - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - if (Anim) - glutIdleFunc( Idle ); - - glutMainLoop(); - return 0; -} diff --git a/progs/tests/texcomp_image.h b/progs/tests/texcomp_image.h deleted file mode 100644 index a3884d4d0d..0000000000 --- a/progs/tests/texcomp_image.h +++ /dev/null @@ -1,4100 +0,0 @@ -#define ImgSize 131072 -static unsigned char ImgData[131072] = -{ - 0x4d, 0xbc, 0x0b, 0xb4, 0xda, 0x0a, 0x78, 0xa8, 0x8d, 0xbc, 0x0c, 0xac, 0x8b, 0x7f, 0xeb, 0xf7, 0x8d, 0xbc, 0xeb, 0xab, 0xba, 0xb7, 0x82, 0xa2, 0x8d, 0xbc, 0x2b, 0xb4, 0xa2, 0xfd, 0xee, 0x2f, - 0x6d, 0xbc, 0x0b, 0xac, 0xd6, 0x03, 0x0a, 0x80, 0x8c, 0xbc, 0x6a, 0x9b, 0x00, 0xb8, 0xad, 0x0a, 0x6c, 0xbc, 0xeb, 0xab, 0x00, 0x09, 0x0a, 0xaa, 0x8d, 0xc4, 0x4b, 0xb4, 0xbf, 0xfe, 0xfe, 0xfb, - 0x6d, 0xc4, 0x4b, 0xb4, 0xaa, 0xfa, 0xea, 0xfb, 0x8d, 0xc4, 0x4b, 0xb4, 0xa6, 0xaa, 0xea, 0xa6, 0x8d, 0xc4, 0x6c, 0xbc, 0xfa, 0xba, 0xab, 0xe7, 0x8d, 0xc4, 0x6c, 0xbc, 0xd9, 0x76, 0x2b, 0x6b, - 0xee, 0xcc, 0x6c, 0xbc, 0xdf, 0xfd, 0x72, 0x55, 0xee, 0xcc, 0x6c, 0xbc, 0x55, 0x55, 0x73, 0xd5, 0xad, 0xbc, 0x6c, 0xbc, 0xdd, 0xb7, 0xff, 0x57, 0xad, 0xc4, 0x6c, 0xbc, 0x37, 0x9b, 0xb5, 0xd7, - 0xad, 0xbc, 0x6c, 0xbc, 0xfc, 0xea, 0xd7, 0xea, 0xad, 0xc4, 0x6c, 0xbc, 0xa2, 0xab, 0xfb, 0x25, 0xad, 0xc4, 0x6c, 0xbc, 0xad, 0xae, 0xfe, 0x5e, 0x8d, 0xbc, 0x6c, 0xbc, 0xba, 0xba, 0xad, 0xaa, - 0xad, 0xc4, 0x8c, 0xb4, 0xff, 0xfa, 0xbf, 0xab, 0xad, 0xc4, 0x6c, 0xb4, 0xfd, 0xaf, 0xaf, 0xeb, 0x8d, 0xc4, 0x6c, 0xbc, 0xe7, 0x79, 0x6e, 0x7f, 0x8c, 0xc4, 0xad, 0xbc, 0xe0, 0xaf, 0xc0, 0xee, - 0xae, 0xc4, 0x8c, 0xbc, 0xda, 0xb4, 0x27, 0xab, 0x8c, 0xc4, 0xce, 0xbc, 0xeb, 0xaf, 0xaa, 0xba, 0x8c, 0xc4, 0xad, 0xbc, 0xbd, 0xff, 0xaa, 0xff, 0xce, 0xcc, 0x8c, 0xc4, 0xa9, 0x0f, 0xaf, 0xa7, - 0xcd, 0xcc, 0xac, 0xc4, 0xfb, 0x8b, 0x8b, 0xda, 0xad, 0xcc, 0x8c, 0xc4, 0xf2, 0xfe, 0xd7, 0x55, 0xad, 0xc4, 0x4b, 0xbc, 0xf0, 0xda, 0xf6, 0xa8, 0xad, 0xc4, 0x6c, 0xbc, 0x7d, 0x2e, 0xab, 0x0e, - 0xad, 0xc4, 0x2b, 0xb4, 0xea, 0xeb, 0xd8, 0xae, 0xad, 0xc4, 0x4c, 0xbc, 0x35, 0x7d, 0xeb, 0xbf, 0x8d, 0xc4, 0x2b, 0xb4, 0x7a, 0x2a, 0xaa, 0x80, 0x8c, 0xc4, 0x2b, 0xb4, 0xad, 0x28, 0xa0, 0xd6, - 0x8d, 0xc4, 0x4c, 0xbc, 0xaf, 0xab, 0xf7, 0xea, 0x8d, 0xc4, 0x4b, 0xbc, 0xea, 0xb2, 0x6a, 0x5b, 0x8c, 0xc4, 0xca, 0xab, 0x00, 0x80, 0xaa, 0xd7, 0x6c, 0xbc, 0x4b, 0xb4, 0x03, 0xdf, 0xfd, 0xe3, - 0x8d, 0xc4, 0x2b, 0xb4, 0xfa, 0xdb, 0xaf, 0x8a, 0x8d, 0xc4, 0x2b, 0xbc, 0xad, 0xaa, 0xa8, 0xfa, 0x6c, 0xbc, 0x2b, 0xb4, 0x78, 0xda, 0x8c, 0xe0, 0x6c, 0xbc, 0xea, 0xab, 0xd7, 0xbb, 0xaa, 0x2a, - 0x6c, 0xbc, 0x2b, 0xb4, 0x5f, 0xaa, 0xa2, 0xbc, 0x6c, 0xbc, 0x2b, 0xb4, 0xff, 0x23, 0xbf, 0xb8, 0x6b, 0xbc, 0x2c, 0xb4, 0xbf, 0xa8, 0xef, 0xff, 0x6c, 0xbc, 0x2b, 0xb4, 0x08, 0xa8, 0xd7, 0xba, - 0x6c, 0xbc, 0x2b, 0xb4, 0x28, 0xea, 0x75, 0xfe, 0x6c, 0xbc, 0x0b, 0xb4, 0xe0, 0xdf, 0x79, 0xef, 0x6c, 0xbc, 0x0b, 0xb4, 0xf3, 0xfe, 0x3d, 0xae, 0x6c, 0xbc, 0x2b, 0xb4, 0x7a, 0xab, 0xdf, 0xde, - 0x6c, 0xc4, 0x4c, 0xb4, 0xf7, 0xaf, 0x2f, 0xaf, 0x6c, 0xc4, 0x4b, 0xb4, 0xef, 0xff, 0xfe, 0xea, 0x6c, 0xbc, 0x2b, 0xb4, 0x8b, 0xaa, 0xbc, 0x78, 0x4c, 0xbc, 0x0b, 0xb4, 0x70, 0xd8, 0xe6, 0xab, - 0x4c, 0xbc, 0x0b, 0xb4, 0xad, 0xaf, 0x8a, 0x02, 0x4c, 0xbc, 0x2b, 0xb4, 0xb9, 0x2b, 0xa2, 0x02, 0x6d, 0xbc, 0x2b, 0xb4, 0x2f, 0x2b, 0x2e, 0xba, 0x8c, 0xc4, 0x4b, 0xbc, 0x3d, 0xbd, 0x55, 0x5d, - 0x6c, 0xc4, 0x0b, 0xb4, 0x5c, 0xea, 0xaa, 0xaf, 0x6c, 0xc4, 0x2b, 0xb4, 0xab, 0xab, 0x6e, 0x7b, 0x4c, 0xbc, 0xea, 0xab, 0xa8, 0xfc, 0xde, 0x2a, 0x6c, 0xbc, 0xca, 0xa3, 0xaa, 0xa9, 0x4a, 0xe0, - 0x6c, 0xbc, 0x28, 0x9b, 0x28, 0x00, 0xa9, 0x22, 0x6c, 0xbc, 0xca, 0xab, 0xd0, 0xbc, 0xa2, 0x8a, 0x6c, 0xbc, 0x2b, 0xb4, 0xff, 0xde, 0x7d, 0xbd, 0x6c, 0xbc, 0x2b, 0xb4, 0xaf, 0xba, 0x6f, 0xa5, - 0x6c, 0xbc, 0x2b, 0xb4, 0x0a, 0xb7, 0xff, 0x7f, 0x4c, 0xb4, 0xeb, 0xab, 0x7e, 0xa0, 0xe0, 0xa2, 0x4c, 0xbc, 0x0b, 0xac, 0xbf, 0xeb, 0xfb, 0xaa, 0x4c, 0xb4, 0x0b, 0xac, 0xca, 0xf2, 0xde, 0xba, - 0x4c, 0xb4, 0x0a, 0xac, 0xd7, 0xf5, 0xec, 0xfb, 0x2c, 0xb4, 0x0a, 0xac, 0x9d, 0xf7, 0xb5, 0xae, 0x2c, 0xb4, 0xea, 0xab, 0x22, 0xa2, 0xea, 0x5e, 0x2b, 0xb4, 0xea, 0xa3, 0xae, 0xfe, 0xff, 0xab, - 0x2b, 0xac, 0xca, 0xa3, 0xaa, 0x09, 0xaa, 0x00, 0x4c, 0xb4, 0xea, 0xab, 0xaf, 0xe2, 0x7a, 0xf6, 0x4c, 0xb4, 0xea, 0xa3, 0x7e, 0xff, 0x4d, 0xfe, 0x0b, 0xac, 0xea, 0xa3, 0x30, 0x2c, 0x2a, 0xaa, - 0x4c, 0xb4, 0xea, 0xa3, 0xaa, 0xba, 0xff, 0xab, 0x4c, 0xb4, 0x0b, 0xac, 0xaf, 0xbf, 0xc2, 0xad, 0x8d, 0xbc, 0x0b, 0xac, 0xeb, 0xa2, 0xf9, 0xd7, 0x90, 0xdd, 0x0b, 0xac, 0x3f, 0xf7, 0x55, 0x55, - 0xac, 0xbc, 0x0b, 0xac, 0xe8, 0xff, 0x7f, 0x57, 0x6c, 0xb4, 0xeb, 0xab, 0x0a, 0xfb, 0x5f, 0x55, 0x6c, 0xb4, 0xeb, 0xab, 0x8e, 0xbe, 0x5d, 0xdd, 0xac, 0xc4, 0x0b, 0xac, 0x0b, 0xfd, 0x55, 0x5b, - 0xcc, 0xc4, 0xca, 0xa3, 0x80, 0x7f, 0xff, 0xd5, 0xed, 0xc4, 0xca, 0xa3, 0xff, 0x21, 0xde, 0x55, 0xed, 0xc4, 0xca, 0xa3, 0xbd, 0xbc, 0xf7, 0x57, 0xcd, 0xc4, 0x0c, 0xac, 0xe0, 0xaf, 0xad, 0xbd, - 0x8d, 0xbc, 0x0b, 0xac, 0x05, 0x6d, 0x6a, 0xc2, 0x6c, 0xbc, 0xca, 0xa3, 0xf8, 0xfe, 0x57, 0xdb, 0x4c, 0xac, 0x49, 0x8b, 0xa8, 0xab, 0x93, 0xaa, 0x6c, 0xb4, 0x28, 0x8b, 0x2a, 0x21, 0xaa, 0xaa, - 0x0b, 0xac, 0x49, 0x93, 0xb6, 0x28, 0x00, 0xa2, 0x0b, 0xac, 0x89, 0x9b, 0xa0, 0xe0, 0x60, 0xbe, 0x4b, 0xb4, 0x8a, 0x9b, 0xff, 0xff, 0x5d, 0x0a, 0xeb, 0xa3, 0x48, 0x93, 0xfa, 0xf9, 0xba, 0xc8, - 0xeb, 0xab, 0xa9, 0x9b, 0xe9, 0x2f, 0xa2, 0xe1, 0x0b, 0xac, 0xca, 0x9b, 0xdd, 0xba, 0xa5, 0xff, 0x6a, 0xbc, 0xcb, 0xa3, 0x57, 0x55, 0xf7, 0x3f, 0x6a, 0xbc, 0xeb, 0xa3, 0xdd, 0xf5, 0xbf, 0x2a, - 0x8b, 0xbc, 0xea, 0xab, 0xbd, 0x8a, 0xea, 0xba, 0xee, 0xc4, 0xc8, 0xb3, 0xa0, 0xaa, 0xef, 0x7f, 0xad, 0xbc, 0xc6, 0x92, 0x00, 0x00, 0x8a, 0xad, 0x6c, 0xbc, 0xea, 0xab, 0xac, 0xfe, 0x7f, 0x57, - 0x4b, 0xb4, 0xea, 0xab, 0xae, 0x2a, 0xd5, 0xfd, 0x6b, 0xbc, 0xaa, 0xa3, 0xa2, 0xda, 0xab, 0xea, 0x2b, 0xb4, 0xaa, 0xa3, 0x7f, 0xea, 0xbe, 0x02, 0x2b, 0xac, 0xaa, 0xa3, 0x57, 0xad, 0x80, 0xf8, - 0x2b, 0xac, 0x89, 0x9b, 0x8b, 0xaa, 0xfe, 0xdf, 0x2b, 0xac, 0x89, 0x9b, 0xe8, 0x5e, 0xf5, 0xf7, 0xea, 0xab, 0x89, 0x9b, 0xbd, 0xae, 0x8a, 0xd8, 0xea, 0xa3, 0x89, 0x9b, 0x8a, 0xda, 0xff, 0xff, - 0xeb, 0xab, 0x89, 0x9b, 0xab, 0xaa, 0x2e, 0xaf, 0xeb, 0xa3, 0xa9, 0x9b, 0xb5, 0x83, 0xef, 0xb7, 0xca, 0xab, 0x8a, 0x9b, 0xaa, 0xea, 0x80, 0xbe, 0xeb, 0xab, 0x8a, 0x9b, 0xaa, 0xab, 0xaa, 0x7f, - 0x0b, 0xac, 0x89, 0x9b, 0xbf, 0xe2, 0x5b, 0x5f, 0xcb, 0xa3, 0x89, 0x9b, 0xa8, 0x2c, 0x35, 0x00, 0xeb, 0xa3, 0xaa, 0x9b, 0x29, 0xf8, 0xfb, 0xaa, 0xeb, 0xab, 0xaa, 0xa3, 0xab, 0xba, 0x9e, 0x7a, - 0xeb, 0xa3, 0x8a, 0x9b, 0x0a, 0xe2, 0xbe, 0xab, 0xeb, 0xa3, 0x69, 0x9b, 0xa8, 0xaf, 0x36, 0x80, 0x0b, 0xac, 0x8a, 0x9b, 0xad, 0xa2, 0xe8, 0xfd, 0xeb, 0xab, 0xaa, 0x9b, 0xab, 0x8a, 0xde, 0xfb, - 0x6d, 0xbc, 0x0b, 0xb4, 0x8a, 0x08, 0xe9, 0xaa, 0x6d, 0xbc, 0x2b, 0xb4, 0xca, 0xaa, 0xbd, 0x82, 0x8c, 0xbc, 0x2b, 0xb4, 0x2b, 0xfe, 0x5f, 0xf5, 0x8c, 0xbc, 0x0b, 0xb4, 0xa2, 0x25, 0xff, 0xfb, - 0x6d, 0xbc, 0x4b, 0xb4, 0x38, 0x3a, 0x23, 0xfe, 0x8c, 0xc4, 0x0b, 0xb4, 0xeb, 0xfa, 0xde, 0xa8, 0x6d, 0xbc, 0x2b, 0xb4, 0xf9, 0xaf, 0x3f, 0x0e, 0x8d, 0xc4, 0x4c, 0xb4, 0xff, 0xff, 0xdb, 0xfe, - 0x8d, 0xc4, 0x4c, 0xbc, 0xfb, 0xe7, 0x2f, 0xaf, 0x8d, 0xc4, 0x4c, 0xbc, 0xc5, 0xeb, 0xfe, 0x9f, 0x8d, 0xc4, 0x4c, 0xb4, 0xee, 0xed, 0xaa, 0xaa, 0x8d, 0xc4, 0x6c, 0xbc, 0xf9, 0x59, 0x7e, 0x57, - 0xad, 0xbc, 0x6c, 0xb4, 0xff, 0xaf, 0xd6, 0xfb, 0x8d, 0xc4, 0x6c, 0xb4, 0xea, 0xff, 0xea, 0xeb, 0xad, 0xc4, 0x4c, 0xb4, 0xfa, 0xee, 0xfb, 0x2f, 0x8d, 0xbc, 0x4c, 0xbc, 0xab, 0xae, 0xe8, 0x2a, - 0xad, 0xbc, 0x4c, 0xb4, 0xff, 0xeb, 0xee, 0x72, 0xad, 0xbc, 0x6c, 0xb4, 0xff, 0xb5, 0xf5, 0xb7, 0x8d, 0xc4, 0x6c, 0xb4, 0xfe, 0xaf, 0xfb, 0xae, 0xae, 0xc4, 0x6c, 0xbc, 0xe5, 0x3f, 0xf0, 0xa0, - 0x2f, 0xcd, 0x6d, 0xbc, 0xf5, 0xaf, 0x03, 0xbf, 0x4f, 0xcd, 0x6d, 0xbc, 0xff, 0xf2, 0x78, 0x5f, 0xac, 0xc4, 0x6d, 0xbc, 0x5f, 0xee, 0xef, 0xeb, 0xad, 0xc4, 0x6c, 0xbc, 0xfb, 0xea, 0x7f, 0xbf, - 0xae, 0xc4, 0x6c, 0xbc, 0xbf, 0x8f, 0x3a, 0x2a, 0xae, 0xc4, 0x8c, 0xbc, 0x0e, 0xea, 0xea, 0xaa, 0xce, 0xc4, 0x8c, 0xbc, 0x5d, 0xbb, 0xef, 0xea, 0xce, 0xc4, 0xac, 0xbc, 0x83, 0x8b, 0xae, 0xff, - 0xcd, 0xc4, 0x8c, 0xbc, 0xe0, 0x62, 0xd8, 0x54, 0xad, 0xc4, 0x2c, 0xbc, 0x5f, 0x0a, 0xee, 0xaa, 0xad, 0xc4, 0x2c, 0xbc, 0xab, 0xbe, 0xf5, 0xa2, 0x8c, 0xc4, 0x2b, 0xb4, 0x00, 0xea, 0xb6, 0xb5, - 0x8c, 0xc4, 0x4b, 0xb4, 0xaa, 0x7f, 0x2c, 0xf0, 0xac, 0xc4, 0x0b, 0xb4, 0xea, 0x8a, 0x62, 0xe8, 0xad, 0xc4, 0x0b, 0xb4, 0xff, 0xd8, 0xaf, 0xab, 0x8d, 0xbc, 0x0b, 0xb4, 0xd5, 0x00, 0xaa, 0x8a, - 0x6c, 0xbc, 0x2b, 0xb4, 0xbb, 0xa8, 0x83, 0x78, 0x6c, 0xbc, 0xcb, 0xab, 0xa0, 0x88, 0x60, 0xa0, 0x6c, 0xbc, 0x2b, 0xb4, 0xa5, 0x03, 0xf3, 0xfb, 0x6c, 0xbc, 0x2b, 0xb4, 0x20, 0x08, 0xe7, 0xeb, - 0x8c, 0xbc, 0x2b, 0xb4, 0xe2, 0xfe, 0xd7, 0xff, 0x4c, 0xbc, 0x2b, 0xb4, 0x0a, 0xee, 0xf9, 0x7b, 0x4c, 0xbc, 0x0b, 0xb4, 0x80, 0xde, 0xba, 0xba, 0x4c, 0xbc, 0x0b, 0xb4, 0x8a, 0xa2, 0x9e, 0x80, - 0x2b, 0xbc, 0x4c, 0xb4, 0xaa, 0xff, 0xeb, 0xb7, 0x4c, 0xb4, 0x0b, 0xb4, 0xdc, 0xbe, 0x2b, 0x8a, 0x6c, 0xbc, 0x0b, 0xb4, 0xf7, 0x7a, 0xbf, 0xef, 0x4c, 0xbc, 0x2b, 0xb4, 0xba, 0xfd, 0xcb, 0xce, - 0x4c, 0xbc, 0x2b, 0xb4, 0x83, 0xef, 0x9d, 0xbe, 0x4c, 0xbc, 0x2b, 0xb4, 0xc8, 0xf7, 0x9f, 0xff, 0x6c, 0xbc, 0x2b, 0xb4, 0xad, 0xfb, 0xff, 0xae, 0x6d, 0xbc, 0x2b, 0xb4, 0xff, 0xab, 0xab, 0x0a, - 0x6c, 0xbc, 0x2b, 0xb4, 0xef, 0xab, 0xfc, 0xe8, 0x6d, 0xbc, 0x2b, 0xb4, 0xab, 0xbe, 0xcf, 0xaa, 0x6d, 0xbc, 0x2b, 0xb4, 0xfa, 0xa0, 0xae, 0xae, 0x6c, 0xbc, 0x0b, 0xb4, 0xf7, 0xbe, 0xba, 0x0a, - 0x6d, 0xbc, 0x2b, 0xb4, 0xfd, 0xaf, 0xba, 0xae, 0x8c, 0xbc, 0x4b, 0xb4, 0xfd, 0xf5, 0x8b, 0xaf, 0x6d, 0xbc, 0x4b, 0xb4, 0xe7, 0xae, 0x02, 0x02, 0x6d, 0xbc, 0x4b, 0xb4, 0xfa, 0xea, 0x2b, 0xae, - 0x4d, 0xbc, 0x2b, 0xb4, 0x6a, 0xc0, 0xaa, 0xc0, 0x4c, 0xbc, 0x0b, 0xb4, 0xe2, 0xe8, 0xa9, 0x82, 0x6c, 0xbc, 0x0b, 0xb4, 0x2f, 0xab, 0xbd, 0xaa, 0x8c, 0xc4, 0x2b, 0xb4, 0xf8, 0x7e, 0x7f, 0xff, - 0x6c, 0xbc, 0x0b, 0xb4, 0x9f, 0x3b, 0xff, 0xff, 0x4c, 0xbc, 0xcb, 0xab, 0x2c, 0xbe, 0xa6, 0x8b, 0x4c, 0xb4, 0x0a, 0xac, 0xaf, 0xea, 0xba, 0x09, 0x6c, 0xbc, 0x0b, 0xac, 0xef, 0xab, 0xfa, 0xb7, - 0x6c, 0xbc, 0x0b, 0xb4, 0xf7, 0xd6, 0xfb, 0xeb, 0x4c, 0xbc, 0x0b, 0xac, 0xbb, 0xbe, 0x6d, 0xca, 0x4c, 0xb4, 0x0b, 0xac, 0x2a, 0x2a, 0xa9, 0xba, 0x8d, 0xbc, 0x0b, 0xb4, 0x5f, 0xfb, 0x6f, 0xcf, - 0x4c, 0xb4, 0xeb, 0xab, 0xf6, 0xfc, 0xea, 0xa8, 0x2b, 0xb4, 0xea, 0xa3, 0xab, 0xbb, 0x7a, 0xaa, 0x2c, 0xb4, 0xea, 0xa3, 0xfe, 0xfe, 0xff, 0x2b, 0x2c, 0xb4, 0xea, 0xa3, 0xeb, 0xab, 0xaf, 0xd8, - 0x2b, 0xb4, 0xca, 0xab, 0xaa, 0xa2, 0xaa, 0x7a, 0x2b, 0xac, 0xca, 0xa3, 0xe8, 0x2e, 0xbf, 0xb7, 0x4c, 0xb4, 0xcb, 0xa3, 0xdf, 0xf6, 0x1f, 0xbd, 0x8c, 0xbc, 0x8a, 0x9b, 0xee, 0xdf, 0xaa, 0x2a, - 0xcd, 0xc4, 0x0b, 0xac, 0x55, 0x55, 0x77, 0xc0, 0x6c, 0xb4, 0x0b, 0xac, 0xbd, 0x2b, 0xee, 0xff, 0x4c, 0xb4, 0x0b, 0xac, 0xfe, 0xee, 0x77, 0x57, 0x4c, 0xb4, 0xea, 0xab, 0x62, 0x5b, 0x7f, 0xdd, - 0x0c, 0xac, 0xca, 0xa3, 0xa0, 0xac, 0xeb, 0x8a, 0x2b, 0xac, 0xea, 0xa3, 0xe7, 0xef, 0x2f, 0xae, 0x8c, 0xbc, 0xeb, 0xa3, 0xf7, 0x57, 0x7b, 0x8e, 0x6c, 0xb4, 0xca, 0xa3, 0x5d, 0xfb, 0xf2, 0xfe, - 0x4d, 0xb4, 0xa9, 0xa3, 0xfd, 0xd7, 0xff, 0xe2, 0x4c, 0xac, 0xaa, 0x9b, 0xf7, 0xfa, 0xbb, 0xa2, 0x2c, 0xac, 0xaa, 0x9b, 0xd7, 0x3f, 0x2e, 0x02, 0x2e, 0xcd, 0x4c, 0xb4, 0x0f, 0xed, 0x5d, 0x55, - 0xce, 0xc4, 0x4c, 0xb4, 0x56, 0xa7, 0x38, 0x2a, 0xce, 0xc4, 0x0b, 0xac, 0x7f, 0xff, 0xe8, 0x88, 0xad, 0xbc, 0xcb, 0xa3, 0x55, 0xff, 0xbe, 0xf8, 0x4c, 0xb4, 0x29, 0x9b, 0xaa, 0xa8, 0xa8, 0x60, - 0xea, 0xab, 0x08, 0x8b, 0x20, 0x80, 0x72, 0xfb, 0x0b, 0xac, 0xa7, 0x7a, 0xa8, 0xaa, 0xad, 0x0a, 0x6c, 0xb4, 0x28, 0x93, 0x5e, 0xfd, 0xbf, 0xa8, 0x2c, 0xac, 0x69, 0x93, 0xa9, 0xeb, 0x28, 0xaa, - 0x6d, 0xbc, 0x69, 0x93, 0xff, 0x57, 0xbf, 0xa2, 0x4d, 0xb4, 0xaa, 0x9b, 0x57, 0xd5, 0xfe, 0xa8, 0x2b, 0xac, 0x26, 0x6a, 0x7a, 0xa0, 0x00, 0x00, 0x2c, 0xac, 0xa5, 0x59, 0x55, 0x00, 0x00, 0x00, - 0x4c, 0xb4, 0xa5, 0x59, 0xf5, 0x00, 0x82, 0x82, 0x2b, 0xac, 0x87, 0x82, 0xd7, 0x0a, 0xa8, 0xa8, 0x4b, 0xbc, 0xaa, 0x9b, 0x82, 0xaf, 0x6d, 0xd5, 0x0b, 0xac, 0x69, 0xa3, 0xaa, 0xa6, 0x2b, 0xfc, - 0x2b, 0xb4, 0xa9, 0xa3, 0xcb, 0xfb, 0xff, 0xdd, 0x2b, 0xb4, 0xa9, 0xa3, 0x0a, 0xeb, 0x7f, 0x5f, 0x2b, 0xac, 0x68, 0x9b, 0x80, 0xea, 0xff, 0x5d, 0xca, 0xa3, 0xe8, 0x92, 0x00, 0x00, 0xf8, 0x81, - 0xeb, 0xa3, 0x29, 0x8b, 0xa8, 0x2e, 0xd5, 0xba, 0xca, 0xa3, 0x89, 0x93, 0x6b, 0xb5, 0xad, 0xaa, 0xca, 0xa3, 0x69, 0x93, 0x7d, 0xa8, 0x0a, 0x28, 0xcb, 0xab, 0x69, 0x9b, 0x2d, 0x9a, 0xba, 0x28, - 0x0b, 0xac, 0x8a, 0x9b, 0xaf, 0xff, 0x7e, 0xcb, 0xcb, 0xab, 0x89, 0x9b, 0x2e, 0x5f, 0xd7, 0xff, 0xeb, 0xab, 0x8a, 0x9b, 0xe8, 0xb7, 0xbf, 0xab, 0xeb, 0xab, 0x8a, 0xa3, 0x8f, 0xa2, 0xff, 0x9f, - 0xea, 0xab, 0xab, 0x9b, 0xff, 0xbf, 0x77, 0xff, 0xcb, 0xa3, 0xaa, 0xa3, 0xbb, 0x80, 0x01, 0xc0, 0xcb, 0xab, 0xaa, 0x9b, 0xaa, 0xfa, 0xfe, 0xef, 0xcb, 0xa3, 0xaa, 0x9b, 0xb8, 0x28, 0x03, 0x22, - 0xeb, 0xab, 0x8a, 0x9b, 0xaa, 0x2a, 0x6a, 0x0a, 0x0b, 0xa4, 0x6a, 0x9b, 0x7a, 0xdf, 0xaf, 0xa8, 0xeb, 0xa3, 0xaa, 0x9b, 0xad, 0xaa, 0xcc, 0xfe, 0xeb, 0xab, 0xaa, 0x9b, 0xaa, 0xae, 0xea, 0xf7, - 0x6c, 0xbc, 0x2b, 0xb4, 0xa2, 0xde, 0x7f, 0xeb, 0x6c, 0xbc, 0x2b, 0xb4, 0xc9, 0xae, 0x09, 0x83, 0xcd, 0xcc, 0x2b, 0xb4, 0xff, 0xf7, 0xb5, 0x63, 0x6d, 0xbc, 0x2b, 0xb4, 0x42, 0xfa, 0xe0, 0xf3, - 0x6d, 0xbc, 0x2b, 0xb4, 0xfd, 0xdf, 0x35, 0xab, 0x6c, 0xbc, 0x2b, 0xb4, 0xa2, 0xf3, 0xfe, 0x7e, 0x8d, 0xbc, 0x2b, 0xb4, 0x8a, 0xae, 0xaf, 0xbf, 0x8d, 0xc4, 0x4c, 0xbc, 0xd7, 0xff, 0xbf, 0x3f, - 0xad, 0xc4, 0x6c, 0xbc, 0x55, 0xe5, 0xab, 0xd2, 0xad, 0xc4, 0x0b, 0xac, 0xaa, 0xbd, 0x80, 0xa8, 0xce, 0xc4, 0x2b, 0xb4, 0xbe, 0x0f, 0xba, 0x7a, 0x90, 0xd5, 0xeb, 0xab, 0xff, 0xfa, 0x0f, 0xbd, - 0x0e, 0xcd, 0x2c, 0xb4, 0xdf, 0xaf, 0xfc, 0xe8, 0x0e, 0xcd, 0x4c, 0xbc, 0xd5, 0xcb, 0xff, 0xd7, 0xee, 0xc4, 0x6c, 0xbc, 0xcb, 0x7d, 0xff, 0x5e, 0x8d, 0xbc, 0x4c, 0xb4, 0xaa, 0xaa, 0x2f, 0xaa, - 0xee, 0xcc, 0x6c, 0xbc, 0xee, 0x3d, 0x89, 0xed, 0xee, 0xc4, 0x4c, 0xb4, 0xfe, 0xaa, 0xe0, 0xf9, 0xce, 0xc4, 0x8c, 0xbc, 0xfd, 0xf7, 0xe9, 0x78, 0xce, 0xc4, 0x8c, 0xbc, 0x0f, 0xaf, 0xfd, 0xb8, - 0xee, 0xc4, 0x8d, 0xbc, 0x7d, 0xaf, 0xff, 0xa2, 0xce, 0xc4, 0x8c, 0xbc, 0x57, 0xaa, 0xde, 0x50, 0xad, 0xc4, 0x8c, 0xbc, 0xd5, 0xde, 0xeb, 0xff, 0x8e, 0xc4, 0xac, 0xbc, 0xff, 0xff, 0x82, 0xdf, - 0x8c, 0xc4, 0xce, 0xbc, 0xba, 0xaa, 0xb8, 0xaf, 0x8d, 0xc4, 0xce, 0xbc, 0xaa, 0xfa, 0xba, 0xfa, 0xce, 0xc4, 0xac, 0xbc, 0xaf, 0xb9, 0xe5, 0x43, 0xcd, 0xc4, 0x8c, 0xbc, 0xba, 0x0e, 0x2a, 0x6b, - 0xad, 0xc4, 0x6c, 0xbc, 0xfc, 0xd0, 0xfe, 0xea, 0xad, 0xc4, 0x4c, 0xbc, 0x3f, 0xea, 0xde, 0x5f, 0xad, 0xc4, 0x4b, 0xb4, 0xe8, 0xff, 0x7f, 0xbf, 0x8d, 0xbc, 0x2b, 0xb4, 0xfe, 0xf7, 0xef, 0x88, - 0x6d, 0xbc, 0x4b, 0xb4, 0xff, 0xb7, 0x08, 0xba, 0x6d, 0xbc, 0x4c, 0xb4, 0x88, 0x20, 0xba, 0x00, 0x8d, 0xbc, 0x4c, 0xbc, 0xaa, 0x2f, 0x5f, 0xaa, 0x8d, 0xc4, 0x4b, 0xb4, 0xfe, 0x7e, 0xff, 0xaa, - 0x8d, 0xbc, 0x2c, 0xb4, 0x5d, 0xfa, 0xab, 0x00, 0x8d, 0xbc, 0x2b, 0xb4, 0xf7, 0xaf, 0xa0, 0x8a, 0x8d, 0xbc, 0x4c, 0xb4, 0x55, 0xff, 0xa0, 0xfe, 0x8d, 0xbc, 0x2c, 0xb4, 0x7f, 0xfe, 0xaa, 0xa8, - 0x6d, 0xbc, 0x2c, 0xb4, 0xff, 0xaa, 0x82, 0xa2, 0x8d, 0xbc, 0x2c, 0xb4, 0x55, 0xeb, 0xaa, 0xa8, 0x8c, 0xbc, 0x2c, 0xb4, 0xd5, 0xbb, 0x8a, 0xea, 0x8d, 0xbc, 0x2b, 0xb4, 0xef, 0x7a, 0xe8, 0xae, - 0x6c, 0xbc, 0x2b, 0xb4, 0xf5, 0x77, 0x8a, 0x00, 0x6c, 0xbc, 0x2b, 0xb4, 0xf7, 0xab, 0x88, 0x00, 0x6d, 0xbc, 0x4b, 0xb4, 0xf5, 0xaf, 0xbf, 0xb8, 0x6d, 0xbc, 0x2b, 0xb4, 0xfe, 0xae, 0xca, 0xa8, - 0x6d, 0xbc, 0x2b, 0xb4, 0xb7, 0xaa, 0xaf, 0x8a, 0x6c, 0xbc, 0x4b, 0xb4, 0x3b, 0xf9, 0x8a, 0x82, 0x8d, 0xbc, 0x2b, 0xb4, 0xee, 0xaa, 0xef, 0x8a, 0x6d, 0xbc, 0x2b, 0xb4, 0xea, 0xaa, 0x22, 0x20, - 0x6d, 0xbc, 0x4c, 0xb4, 0x7f, 0xaa, 0xc2, 0x20, 0x8d, 0xbc, 0x4c, 0xb4, 0xff, 0xa3, 0x0b, 0xa8, 0x6d, 0xbc, 0x2b, 0xb4, 0x7a, 0x22, 0x00, 0x8a, 0x8d, 0xbc, 0x4c, 0xb4, 0x8f, 0xf2, 0x07, 0x0a, - 0x8d, 0xbc, 0x4c, 0xb4, 0xd5, 0xab, 0x7a, 0xae, 0x8c, 0xbc, 0x2b, 0xb4, 0x2a, 0x8a, 0xbf, 0x7b, 0x8d, 0xbc, 0x4b, 0xb4, 0x3f, 0x2e, 0xe5, 0x39, 0x8d, 0xbc, 0x2b, 0xb4, 0x7a, 0xbe, 0x22, 0x88, - 0x8d, 0xbc, 0x4c, 0xb4, 0xbf, 0x3f, 0x2f, 0x08, 0x6c, 0xbc, 0x2b, 0xb4, 0x2b, 0xa8, 0x2c, 0xec, 0x8d, 0xbc, 0x4b, 0xb4, 0xd5, 0x2b, 0xee, 0xd5, 0x6c, 0xbc, 0x2b, 0xb4, 0xcb, 0xe8, 0xaf, 0xff, - 0x4c, 0xb4, 0x2b, 0xb4, 0x5d, 0x7e, 0xc0, 0xdf, 0x4c, 0xbc, 0x0b, 0xb4, 0xdf, 0xeb, 0xaa, 0xae, 0xad, 0xbc, 0xeb, 0xab, 0x7f, 0xff, 0x8a, 0xfb, 0xad, 0xc4, 0x0b, 0xac, 0xd5, 0xcf, 0xfe, 0xbe, - 0x6c, 0xbc, 0x2b, 0xb4, 0x7e, 0x7d, 0xfa, 0xc2, 0x4c, 0xb4, 0x0b, 0xac, 0xfb, 0x2a, 0x88, 0x72, 0x4c, 0xb4, 0x69, 0x9b, 0x00, 0x08, 0xa8, 0xa6, 0x4c, 0xb4, 0xeb, 0xab, 0x08, 0x8e, 0x7d, 0xc9, - 0x4c, 0xb4, 0xea, 0xab, 0xba, 0xf7, 0x2f, 0xe2, 0x6c, 0xbc, 0xa9, 0xa3, 0xab, 0xaa, 0xd2, 0x5e, 0x2b, 0xac, 0x69, 0x9b, 0x00, 0xab, 0xeb, 0x5d, 0xea, 0xab, 0x49, 0x9b, 0x00, 0x00, 0xbb, 0x5f, - 0x2a, 0xb4, 0x49, 0x9b, 0xa0, 0x68, 0x7f, 0xd5, 0xeb, 0xab, 0x69, 0x93, 0x88, 0x29, 0x2a, 0xab, 0x2b, 0xb4, 0xea, 0xa3, 0x2d, 0xef, 0xaf, 0xfd, 0x4b, 0xb4, 0xe7, 0x8a, 0xa0, 0x29, 0x02, 0x80, - 0x4c, 0xb4, 0xeb, 0xab, 0xa2, 0xde, 0xed, 0xff, 0x4c, 0xb4, 0xeb, 0xab, 0xee, 0x2b, 0x7f, 0x57, 0x2c, 0xb4, 0x0b, 0xa4, 0xfa, 0xea, 0xab, 0xef, 0xee, 0xc4, 0x0b, 0xac, 0x5d, 0xd5, 0x55, 0x73, - 0x6d, 0xb4, 0x0b, 0xac, 0x55, 0xde, 0x3f, 0x2f, 0xce, 0xc4, 0xeb, 0xa3, 0xd7, 0xff, 0xaa, 0x2f, 0xce, 0xbc, 0x0c, 0xac, 0x57, 0x7f, 0x3f, 0x28, 0xcd, 0xbc, 0xcb, 0xa3, 0xff, 0xfd, 0xeb, 0xf8, - 0xee, 0xc4, 0xeb, 0xa3, 0xf3, 0x55, 0xaf, 0xea, 0xef, 0xc4, 0x0b, 0xac, 0x5d, 0xe5, 0xd5, 0x8f, 0xcd, 0xbc, 0x2c, 0xb4, 0x75, 0xef, 0x8b, 0xff, 0x8d, 0xbc, 0x2b, 0xb4, 0x96, 0xfa, 0x3f, 0x2b, - 0xce, 0xc4, 0x2c, 0xb4, 0xaa, 0x03, 0x07, 0x2b, 0x0e, 0xcd, 0x6c, 0xb4, 0x5c, 0xdd, 0x3a, 0xda, 0x0e, 0xc5, 0x4c, 0xb4, 0x7e, 0x7a, 0xf8, 0xff, 0x8d, 0xbc, 0x0b, 0xac, 0xda, 0xc8, 0x9e, 0xdc, - 0x6c, 0xb4, 0xab, 0x9b, 0xf6, 0xf8, 0x7e, 0xa2, 0x6d, 0xb4, 0xcb, 0x9b, 0xef, 0xc7, 0xbf, 0xaa, 0x4c, 0xac, 0xaa, 0xa3, 0xf7, 0xfe, 0xb4, 0xa8, 0x4c, 0xb4, 0xca, 0xa3, 0x1f, 0xfb, 0xf0, 0xae, - 0x8c, 0xbc, 0xaa, 0xa3, 0x83, 0xbf, 0xa5, 0xbf, 0xad, 0xbc, 0x0b, 0xac, 0xb7, 0xaa, 0xad, 0xf8, 0x6c, 0xb4, 0xeb, 0xa3, 0xf4, 0xee, 0xef, 0xca, 0x8d, 0xb4, 0xea, 0xa3, 0x55, 0xd5, 0x74, 0xdf, - 0xeb, 0xa3, 0xa9, 0x9b, 0x92, 0x5a, 0x56, 0x83, 0x0b, 0xa4, 0x8a, 0x9b, 0x68, 0xa7, 0x09, 0xab, 0x2b, 0xac, 0x8a, 0x93, 0xdf, 0xf3, 0xfe, 0xff, 0xeb, 0xa3, 0xe9, 0x7a, 0x6a, 0xa8, 0x80, 0x82, - 0x0b, 0xac, 0x87, 0x72, 0xb7, 0x0a, 0x02, 0x00, 0x0a, 0xac, 0xe9, 0x8a, 0xaa, 0xea, 0x76, 0x02, 0x0b, 0xa4, 0x88, 0x82, 0xaa, 0xaa, 0xf5, 0x80, 0xea, 0xa3, 0x49, 0x93, 0x02, 0xab, 0x0d, 0xaa, - 0xeb, 0xab, 0xaa, 0x9b, 0x97, 0xa7, 0x8b, 0x0e, 0xeb, 0xab, 0xaa, 0xa3, 0xf8, 0xd7, 0xfc, 0xfe, 0xea, 0xa3, 0xaa, 0x9b, 0xfb, 0xce, 0x7a, 0x5f, 0x2c, 0xb4, 0x89, 0x9b, 0xf7, 0xff, 0xef, 0x2f, - 0x0b, 0xac, 0x8a, 0x9b, 0xaf, 0x6a, 0xeb, 0xca, 0xeb, 0xa3, 0x8a, 0x9b, 0xbf, 0xa9, 0xaf, 0x22, 0xea, 0xa3, 0xcb, 0x9b, 0xfe, 0xef, 0xbd, 0x00, 0xeb, 0xab, 0xca, 0x9b, 0xaf, 0xff, 0xea, 0xfe, - 0xec, 0xa3, 0xaa, 0x9b, 0xbe, 0xaa, 0x2b, 0xae, 0xeb, 0xa3, 0xcb, 0x9b, 0xbb, 0xdd, 0xbe, 0xa2, 0xcb, 0xa3, 0xaa, 0x9b, 0xa6, 0xac, 0x60, 0x0e, 0xcb, 0xa3, 0xaa, 0x9b, 0x0e, 0xab, 0x03, 0x28, - 0xeb, 0xa3, 0xaa, 0x9b, 0x0a, 0x72, 0xfe, 0x6d, 0xcb, 0xa3, 0x8a, 0x9b, 0x02, 0xbc, 0x6c, 0xbf, 0xcb, 0xa3, 0x8a, 0x9b, 0xe2, 0xdf, 0x5d, 0xb7, 0x89, 0xa3, 0xab, 0x9b, 0xde, 0xff, 0x82, 0x2d, - 0x8d, 0xc4, 0xeb, 0xb3, 0xf2, 0xf7, 0xff, 0xff, 0xad, 0xc4, 0x2b, 0xbc, 0xed, 0xfd, 0x3d, 0xbd, 0xac, 0xc4, 0x0b, 0xb4, 0xea, 0x7a, 0xdc, 0xaa, 0x8d, 0xc4, 0x2b, 0xb4, 0xf5, 0xef, 0x80, 0xda, - 0x6c, 0xbc, 0x2b, 0xb4, 0x6b, 0x5f, 0x65, 0xbd, 0x6c, 0xbc, 0x0b, 0xb4, 0xba, 0x82, 0xb9, 0x2a, 0x6c, 0xbc, 0x0b, 0xb4, 0x2b, 0x89, 0xaa, 0x28, 0x8d, 0xc4, 0x4b, 0xb4, 0xbb, 0xed, 0xff, 0xbf, - 0x8d, 0xc4, 0x4c, 0xb4, 0xbe, 0xbb, 0xff, 0xf8, 0xee, 0xcc, 0x4c, 0xb4, 0xef, 0xff, 0x0d, 0xad, 0x6d, 0xbc, 0x2b, 0xb4, 0x80, 0xce, 0xe0, 0xbe, 0x8d, 0xbc, 0xca, 0xab, 0x38, 0x1f, 0xea, 0x0a, - 0xce, 0xc4, 0x6c, 0xbc, 0x7a, 0x3f, 0xf7, 0xfc, 0x0e, 0xcd, 0x4c, 0xbc, 0xd7, 0xec, 0xff, 0xff, 0xac, 0xc4, 0x6d, 0xbc, 0x79, 0xfa, 0xbf, 0xa3, 0xcd, 0xc4, 0x2c, 0xb4, 0xbf, 0x8a, 0x01, 0x0a, - 0x0e, 0xcd, 0x8d, 0xbc, 0x59, 0xf9, 0x60, 0x5d, 0x0e, 0xc5, 0x6d, 0xbc, 0x57, 0xaa, 0xaf, 0x8b, 0x0e, 0xcd, 0x6d, 0xbc, 0xfd, 0xea, 0x7e, 0xf0, 0xad, 0xc4, 0x6c, 0xbc, 0x70, 0xaa, 0xeb, 0xab, - 0xad, 0xc4, 0x6c, 0xbc, 0x25, 0xa2, 0xfe, 0xab, 0x8c, 0xc4, 0xad, 0xbc, 0xb2, 0x7f, 0xaf, 0xd7, 0xae, 0xc4, 0x8c, 0xbc, 0xea, 0x8e, 0xda, 0xbf, 0xad, 0xc4, 0x8d, 0xbc, 0xab, 0xaa, 0xaa, 0x7e, - 0xad, 0xc4, 0x8c, 0xbc, 0xae, 0xef, 0xa9, 0xab, 0xce, 0xc4, 0xad, 0xbc, 0xf5, 0xdd, 0xbd, 0xcb, 0xce, 0xc4, 0x8c, 0xbc, 0xdc, 0xde, 0xee, 0xe2, 0xcd, 0xc4, 0x2b, 0xb4, 0xa0, 0xa8, 0xfe, 0x7f, - 0xad, 0xc4, 0x4c, 0xb4, 0xa8, 0xea, 0xf5, 0xf5, 0xad, 0xc4, 0x4c, 0xb4, 0x7f, 0xff, 0xb5, 0xbb, 0xad, 0xc4, 0x4c, 0xb4, 0x5d, 0xfd, 0x2a, 0x82, 0xad, 0xc4, 0x4c, 0xb4, 0xfd, 0xaa, 0x00, 0xaa, - 0xad, 0xc4, 0x6c, 0xbc, 0x7f, 0x8f, 0xfb, 0xca, 0xad, 0xc4, 0x6c, 0xb4, 0xff, 0xea, 0xfa, 0xff, 0x8d, 0xc4, 0x4c, 0xb4, 0xa8, 0xbe, 0xeb, 0xef, 0xad, 0xc4, 0x6c, 0xb4, 0xfa, 0xdf, 0xfd, 0xfd, - 0x8d, 0xc4, 0x6c, 0xb4, 0xfb, 0xaa, 0xaa, 0xbb, 0x8d, 0xc4, 0x4c, 0xb4, 0xff, 0x0f, 0xaa, 0xaa, 0x8d, 0xc4, 0x6c, 0xbc, 0xd7, 0xfe, 0xf5, 0x77, 0x8d, 0xc4, 0x4b, 0xbc, 0xaa, 0xea, 0x7e, 0xff, - 0x8d, 0xbc, 0x4c, 0xbc, 0xfe, 0xaa, 0xd7, 0xfe, 0x8d, 0xbc, 0x4c, 0xb4, 0xa2, 0xee, 0xba, 0xaf, 0x8d, 0xbc, 0x4c, 0xb4, 0xfe, 0xfe, 0xff, 0xbe, 0x8d, 0xbc, 0x4c, 0xb4, 0xbf, 0xae, 0xbf, 0xba, - 0x8d, 0xc4, 0x6c, 0xb4, 0x7e, 0xee, 0xff, 0xbf, 0x8d, 0xbc, 0x4c, 0xb4, 0xfe, 0xfa, 0xeb, 0xbb, 0x8d, 0xbc, 0x4c, 0xb4, 0xff, 0xbb, 0x1e, 0x2a, 0x8d, 0xbc, 0x4c, 0xb4, 0x7e, 0xae, 0xa8, 0x28, - 0x8d, 0xc4, 0x6c, 0xb4, 0xef, 0xfb, 0xab, 0xaa, 0x8d, 0xc4, 0x6c, 0xb4, 0xfe, 0xaa, 0xaa, 0xba, 0xad, 0xc4, 0x6c, 0xb4, 0xfa, 0xae, 0xfe, 0xff, 0x8d, 0xc4, 0x4c, 0xb4, 0xea, 0xfa, 0xbf, 0xea, - 0x8c, 0xbc, 0x4c, 0xbc, 0xfb, 0xff, 0xfb, 0xaa, 0x8d, 0xc4, 0x4c, 0xbc, 0xfb, 0xef, 0xfe, 0xbb, 0x8d, 0xc4, 0x4c, 0xb4, 0xaa, 0xbf, 0xea, 0xaa, 0x8d, 0xc4, 0x2c, 0xb4, 0xaa, 0xaa, 0xef, 0xfa, - 0x6d, 0xbc, 0x4b, 0xb4, 0xfc, 0x64, 0xed, 0x2f, 0x8d, 0xbc, 0x4b, 0xb4, 0x5d, 0xab, 0x8a, 0xdb, 0x8d, 0xbc, 0x4c, 0xb4, 0xff, 0xbe, 0x9b, 0x8a, 0xad, 0xc4, 0x6c, 0xbc, 0x69, 0x45, 0xed, 0xeb, - 0xad, 0xc4, 0x6c, 0xbc, 0x2d, 0x80, 0x7e, 0xeb, 0x8d, 0xc4, 0x2b, 0xb4, 0x7c, 0xde, 0xfe, 0xfe, 0x2b, 0xbc, 0x6c, 0xb4, 0xaa, 0xfd, 0x8b, 0x8b, 0x6c, 0xbc, 0x2b, 0xb4, 0xfe, 0xfa, 0xb8, 0x20, - 0x4c, 0xbc, 0x2b, 0xb4, 0x5d, 0x7b, 0x3e, 0x5b, 0x4c, 0xb4, 0x0a, 0xac, 0xaa, 0xf0, 0xa2, 0xa8, 0x4c, 0xb4, 0x0a, 0xac, 0xea, 0x22, 0xda, 0xfb, 0x4c, 0xb4, 0xea, 0xab, 0x2b, 0xab, 0xff, 0xdf, - 0x4c, 0xb4, 0xeb, 0xab, 0xb6, 0x4a, 0xfb, 0x3f, 0x4c, 0xbc, 0xaa, 0xa3, 0xba, 0xaa, 0xa2, 0x70, 0x0b, 0xb4, 0xca, 0xab, 0x0c, 0xaa, 0xb2, 0x79, 0x2b, 0xb4, 0xaa, 0xa3, 0xa8, 0xaa, 0xde, 0x5f, - 0x2b, 0xb4, 0x89, 0x9b, 0xf8, 0xfa, 0x7e, 0x7f, 0xcb, 0xa3, 0x89, 0x9b, 0x24, 0xef, 0x99, 0xab, 0x2b, 0xac, 0x85, 0x59, 0xa0, 0x9e, 0xa8, 0xa0, 0xaa, 0xa3, 0x49, 0x93, 0x2d, 0xad, 0x2a, 0xaa, - 0xca, 0xa3, 0x69, 0x9b, 0xbf, 0xab, 0x29, 0x0a, 0xeb, 0xab, 0xaa, 0x9b, 0xaf, 0xfb, 0xbf, 0x2e, 0x0c, 0xac, 0xca, 0xa3, 0xbd, 0xaf, 0x29, 0x2b, 0x2c, 0xac, 0xea, 0xa3, 0xb7, 0x57, 0xfd, 0xbe, - 0x2c, 0xb4, 0xca, 0xa3, 0xea, 0xff, 0xf7, 0x8e, 0x0c, 0xac, 0xca, 0xa3, 0x39, 0x23, 0xea, 0xaa, 0x0b, 0xb4, 0xca, 0xa3, 0xbe, 0xa3, 0xaf, 0xab, 0xad, 0xc4, 0xeb, 0xab, 0xfd, 0x55, 0x55, 0x3d, - 0x70, 0xd5, 0xea, 0xab, 0xab, 0xeb, 0xd5, 0x54, 0xee, 0xc4, 0x2c, 0xb4, 0x3f, 0x1a, 0xaa, 0xeb, 0xee, 0xc4, 0xeb, 0xa3, 0x7e, 0x5e, 0xef, 0xa2, 0xee, 0xbc, 0xeb, 0xa3, 0x9f, 0xa9, 0xa9, 0xac, - 0x0f, 0xc5, 0x4c, 0xac, 0x6d, 0xf7, 0x8b, 0x8d, 0xee, 0xc4, 0x2c, 0xac, 0xa5, 0xa3, 0x6a, 0xfb, 0xce, 0xc4, 0x4c, 0xac, 0x72, 0xfb, 0xfb, 0xff, 0x8d, 0xbc, 0x2c, 0xac, 0xd9, 0xfa, 0xd8, 0x03, - 0xcd, 0xc4, 0x4c, 0xb4, 0xbf, 0x8b, 0x7e, 0x7b, 0xcd, 0xbc, 0x4c, 0xb4, 0xaa, 0x6e, 0x27, 0x2f, 0xcd, 0xc4, 0x2b, 0xb4, 0xaa, 0xe3, 0x8a, 0x1e, 0xad, 0xbc, 0x2c, 0xac, 0x52, 0xa0, 0x8a, 0x08, - 0xad, 0xbc, 0xeb, 0xab, 0xff, 0xdf, 0xbe, 0x80, 0xad, 0xbc, 0x0b, 0xac, 0xeb, 0x7f, 0xda, 0x37, 0x4c, 0xb4, 0xeb, 0xa3, 0x97, 0xae, 0xba, 0xa0, 0x8c, 0xbc, 0x0b, 0xac, 0xeb, 0xfd, 0xac, 0xad, - 0xad, 0xc4, 0xeb, 0xab, 0xd6, 0xfa, 0xe8, 0xe2, 0x8c, 0xbc, 0x0b, 0xac, 0xf7, 0xff, 0xfc, 0x5d, 0xac, 0xbc, 0xeb, 0xa3, 0xe2, 0xff, 0xdf, 0xfd, 0x2c, 0xac, 0xca, 0x9b, 0xcf, 0xfc, 0xf6, 0xbe, - 0x4c, 0xac, 0xaa, 0x9b, 0x7d, 0x5f, 0xab, 0xe2, 0xeb, 0xa3, 0xaa, 0x9b, 0xad, 0x8b, 0xa2, 0xf2, 0x2c, 0xac, 0x8a, 0x9b, 0xfe, 0x7f, 0x3f, 0x3d, 0x2c, 0xac, 0xca, 0xa3, 0xd8, 0x29, 0x8c, 0x2e, - 0x4c, 0xb4, 0xca, 0xa3, 0x5e, 0xda, 0x2a, 0x8a, 0x2b, 0xb4, 0xaa, 0x9b, 0x7f, 0x5f, 0xe0, 0xa0, 0x0b, 0xac, 0xaa, 0x9b, 0xdd, 0x03, 0xbf, 0xaa, 0x2c, 0xb4, 0xaa, 0x9b, 0xf5, 0xfe, 0x2b, 0xfa, - 0x0b, 0xac, 0xca, 0xa3, 0xbf, 0x22, 0xf8, 0xae, 0xeb, 0xab, 0xca, 0xa3, 0xf2, 0x22, 0xab, 0xfa, 0x0b, 0xac, 0xca, 0xa3, 0xd7, 0xfe, 0xed, 0xa2, 0x0b, 0xac, 0xaa, 0xa3, 0x2a, 0x6a, 0xab, 0x0a, - 0x2c, 0xb4, 0xca, 0xa3, 0x7f, 0xb5, 0xe7, 0x3f, 0x0b, 0xac, 0xaa, 0x9b, 0xa9, 0x20, 0xa2, 0x82, 0x0c, 0xac, 0xca, 0xa3, 0xaf, 0x2b, 0xea, 0xf8, 0xec, 0xab, 0xca, 0xa3, 0xfe, 0x88, 0xec, 0xf9, - 0xeb, 0xab, 0xcb, 0x9b, 0xdf, 0x7a, 0xfa, 0xfa, 0xeb, 0xa3, 0xaa, 0x9b, 0xa8, 0xbe, 0xfb, 0x2a, 0xeb, 0xab, 0xaa, 0x9b, 0xeb, 0xfb, 0xfa, 0xaa, 0xcb, 0xa3, 0xaa, 0x9b, 0x58, 0xb4, 0xfd, 0xe8, - 0xcb, 0xa3, 0x8a, 0x9b, 0xfa, 0xff, 0x0a, 0x00, 0xea, 0xa3, 0x8a, 0x9b, 0xfd, 0xef, 0x8a, 0xe0, 0xeb, 0xa3, 0xaa, 0x9b, 0x7f, 0x7b, 0xdf, 0x8a, 0x2c, 0xac, 0xaa, 0xa3, 0x5f, 0x55, 0x75, 0x02, - 0x4c, 0xbc, 0x0b, 0xac, 0xaa, 0xaf, 0xbb, 0xaa, 0x6b, 0xbc, 0x8a, 0xa3, 0x2a, 0x8a, 0x6a, 0x80, 0xac, 0xc4, 0x49, 0x93, 0xa2, 0xad, 0xab, 0xaa, 0x8c, 0xbc, 0xeb, 0xab, 0xff, 0x8d, 0xaf, 0xaa, - 0x8c, 0xbc, 0xeb, 0xab, 0xeb, 0xa8, 0xea, 0x9e, 0x8d, 0xc4, 0x2c, 0xb4, 0x2d, 0xaf, 0xa9, 0xaf, 0x8c, 0xc4, 0x4b, 0xbc, 0xfb, 0xde, 0xbb, 0x72, 0xcd, 0xc4, 0x2b, 0xb4, 0xbf, 0xf7, 0x2d, 0x3f, - 0x2e, 0xcd, 0x6d, 0xbc, 0x55, 0x3d, 0xfb, 0x7f, 0x4e, 0xd5, 0x0b, 0xac, 0x7f, 0x78, 0xff, 0xff, 0xce, 0xc4, 0xeb, 0xab, 0xab, 0xa1, 0xfb, 0xaf, 0xee, 0xc4, 0x6c, 0xb4, 0x3c, 0xe7, 0xff, 0xbf, - 0xcd, 0xc4, 0x4c, 0xb4, 0xae, 0xaf, 0xaf, 0x7c, 0xee, 0xcc, 0x0b, 0xac, 0xea, 0xab, 0xa0, 0xd7, 0xad, 0xc4, 0x6c, 0xbc, 0x83, 0xeb, 0xa5, 0xa9, 0xce, 0xc4, 0x4c, 0xbc, 0xaf, 0x09, 0xbf, 0xbf, - 0xed, 0xc4, 0x6c, 0xbc, 0xaf, 0xfc, 0x7f, 0xef, 0xce, 0xc4, 0x8c, 0xbc, 0xc2, 0xfc, 0xfb, 0x55, 0x0e, 0xcd, 0x8d, 0xbc, 0xf5, 0xd7, 0x55, 0xcf, 0xce, 0xc4, 0x8d, 0xbc, 0xea, 0xae, 0xce, 0xfb, - 0xce, 0xc4, 0x8c, 0xbc, 0xfa, 0xba, 0xfa, 0x6a, 0xcd, 0xc4, 0x8d, 0xbc, 0xff, 0xef, 0xfd, 0xe2, 0xad, 0xc4, 0x8c, 0xbc, 0xea, 0xea, 0x6b, 0xbe, 0xcd, 0xc4, 0x8c, 0xbc, 0x5f, 0xfe, 0x6a, 0x69, - 0xce, 0xc4, 0x8c, 0xbc, 0xad, 0x2a, 0x5f, 0xd5, 0xad, 0xc4, 0x6c, 0xbc, 0x80, 0xa8, 0xef, 0x2a, 0xad, 0xc4, 0x4c, 0xb4, 0x7a, 0x5e, 0xaa, 0x08, 0xad, 0xc4, 0x4c, 0xbc, 0xfd, 0x8a, 0x0a, 0xa8, - 0xad, 0xc4, 0x6c, 0xbc, 0xad, 0x00, 0xe8, 0x5e, 0xae, 0xc4, 0x4c, 0xbc, 0x20, 0xea, 0x57, 0xbf, 0x8d, 0xbc, 0x4c, 0xb4, 0x00, 0xaa, 0xfb, 0xf0, 0x8d, 0xc4, 0x4c, 0xb4, 0xe8, 0xab, 0x5b, 0xbd, - 0x8d, 0xc4, 0x4c, 0xb4, 0xfe, 0xee, 0xae, 0xaa, 0x8d, 0xc4, 0x6c, 0xb4, 0x7f, 0xbf, 0xae, 0xfe, 0x8d, 0xbc, 0x4c, 0xbc, 0xdf, 0xaa, 0xbb, 0x82, 0x8d, 0xbc, 0x6c, 0xb4, 0x0a, 0x82, 0xaa, 0x9a, - 0x8d, 0xbc, 0x6c, 0xbc, 0x95, 0xda, 0x65, 0xba, 0x8d, 0xc4, 0x6c, 0xb4, 0xaa, 0xea, 0xaa, 0xff, 0x8d, 0xc4, 0x4c, 0xb4, 0xfa, 0x8e, 0xea, 0xfa, 0x6d, 0xbc, 0x4c, 0xb4, 0xee, 0xf6, 0xf8, 0x82, - 0x8d, 0xbc, 0x4c, 0xb4, 0x7e, 0xfb, 0x7a, 0xd2, 0x8d, 0xbc, 0x4c, 0xb4, 0xad, 0x3f, 0xef, 0x0b, 0xad, 0xbc, 0x4c, 0xb4, 0xfd, 0xaf, 0xaf, 0x82, 0xad, 0xc4, 0x6c, 0xb4, 0xff, 0xdf, 0xbf, 0xae, - 0xcd, 0xc4, 0x6c, 0xbc, 0x7f, 0x57, 0x7f, 0x74, 0x8d, 0xbc, 0x4b, 0xb4, 0xbb, 0x7b, 0xd8, 0xaf, 0x6d, 0xbc, 0x2b, 0xb4, 0x80, 0x0d, 0x02, 0x02, 0x8d, 0xbc, 0x6c, 0xb4, 0xba, 0xaa, 0x76, 0x9d, - 0xad, 0xc4, 0x4c, 0xb4, 0xbe, 0xea, 0xff, 0xff, 0x8d, 0xc4, 0x4c, 0xbc, 0xaa, 0xaa, 0x9f, 0xae, 0x8c, 0xc4, 0x4d, 0xbc, 0xf6, 0x2b, 0xfc, 0x2a, 0x8d, 0xc4, 0x4b, 0xbc, 0x7f, 0xab, 0xa8, 0xda, - 0x8d, 0xc4, 0x2a, 0xb4, 0xaa, 0x0a, 0xea, 0xf5, 0x6c, 0xbc, 0x2b, 0xb4, 0x00, 0x00, 0xaa, 0x6b, 0x6d, 0xbc, 0x2b, 0xb4, 0xf0, 0x8a, 0xfa, 0xa9, 0x6c, 0xbc, 0x4c, 0xb4, 0xfd, 0x63, 0xf7, 0x32, - 0x8d, 0xbc, 0x2b, 0xb4, 0x8b, 0x3d, 0xef, 0xfb, 0xad, 0xbc, 0x4c, 0xb4, 0xef, 0x36, 0xab, 0x2f, 0xad, 0xc4, 0x6c, 0xbc, 0xbf, 0xd8, 0xad, 0xfb, 0xad, 0xbc, 0x4c, 0xb4, 0x2a, 0xae, 0xab, 0x09, - 0xad, 0xc4, 0x6c, 0xbc, 0xef, 0x7a, 0xd0, 0x50, 0x8d, 0xbc, 0x0b, 0xb4, 0xa8, 0x80, 0x78, 0xfa, 0x6c, 0xbc, 0xcb, 0xab, 0xa0, 0xe0, 0xf7, 0xaa, 0x6c, 0xbc, 0xeb, 0xab, 0x60, 0xd7, 0xff, 0xaa, - 0x6d, 0xbc, 0xca, 0xab, 0xed, 0xbb, 0xbb, 0x35, 0x4b, 0xb4, 0xea, 0xab, 0xe8, 0x78, 0x5e, 0x5e, 0x2b, 0xb4, 0xca, 0xa3, 0x8e, 0xf7, 0xa5, 0xb8, 0x2c, 0xb4, 0xca, 0xa3, 0xb5, 0xab, 0xa0, 0x88, - 0x4b, 0xb4, 0xec, 0xab, 0xdf, 0xae, 0x8e, 0x22, 0x2b, 0xb4, 0xa9, 0xa3, 0xf0, 0x80, 0x7c, 0x4c, 0x2b, 0xb4, 0xc6, 0x82, 0xa0, 0xa0, 0xaa, 0x5f, 0x0a, 0xac, 0x09, 0x8b, 0x08, 0xa2, 0xa0, 0xad, - 0x4c, 0xb4, 0x69, 0x9b, 0x2b, 0x82, 0xff, 0x57, 0x4a, 0xb4, 0x28, 0x8b, 0xa8, 0xdf, 0x56, 0x5f, 0xe9, 0xa3, 0x28, 0x93, 0x80, 0xfe, 0x55, 0x55, 0xaa, 0x9b, 0x28, 0x93, 0x20, 0x29, 0x0f, 0xaf, - 0xeb, 0xa3, 0x8a, 0x9b, 0x8b, 0xaf, 0x3d, 0xab, 0x0c, 0xac, 0xea, 0xa3, 0x9d, 0x3d, 0xff, 0xab, 0x2c, 0xac, 0xeb, 0xa3, 0xe1, 0xca, 0xab, 0xfb, 0x2c, 0xac, 0xeb, 0xa3, 0xfd, 0x9f, 0xba, 0x2b, - 0x2c, 0xb4, 0xeb, 0xa3, 0xbb, 0xaf, 0xbf, 0xaa, 0x4c, 0xac, 0xea, 0xa3, 0x5f, 0xff, 0xaf, 0xa3, 0xcd, 0xc4, 0x0b, 0xac, 0xd5, 0x55, 0x7d, 0x1f, 0x4c, 0xb4, 0xeb, 0xab, 0xeb, 0x77, 0xfb, 0xa2, - 0xad, 0xbc, 0xcb, 0xa3, 0x7d, 0xf3, 0xf0, 0xbf, 0xcd, 0xbc, 0x0b, 0xac, 0xf9, 0x5a, 0xbb, 0x26, 0xce, 0xbc, 0x0b, 0xac, 0xdb, 0xff, 0xfe, 0x08, 0xad, 0xbc, 0xeb, 0xa3, 0x82, 0x29, 0x9f, 0x0a, - 0xcd, 0xbc, 0x0b, 0xac, 0x7a, 0xa0, 0x88, 0xaa, 0xcd, 0xbc, 0x4b, 0xac, 0xaa, 0x3e, 0xa8, 0x9b, 0xcd, 0xbc, 0x2b, 0xb4, 0x8a, 0xb6, 0xad, 0x90, 0xad, 0xbc, 0x2b, 0xac, 0xa0, 0xe0, 0x90, 0xfa, - 0xcd, 0xbc, 0x6c, 0xb4, 0xfe, 0xbb, 0xb5, 0x25, 0xad, 0xbc, 0x2b, 0xac, 0xac, 0xe8, 0x60, 0xe0, 0xad, 0xbc, 0xeb, 0xa3, 0xa8, 0xae, 0x07, 0x0f, 0xcd, 0xc4, 0x8c, 0xb4, 0xeb, 0x9d, 0x2d, 0xfb, - 0xcd, 0xc4, 0x4c, 0xb4, 0x48, 0xfe, 0xfe, 0xea, 0x0f, 0xcd, 0x0c, 0xac, 0xe5, 0xd5, 0xf5, 0x3a, 0xad, 0xbc, 0xeb, 0xab, 0x7b, 0xf2, 0xfa, 0xfa, 0xcd, 0xbc, 0x2b, 0xac, 0xf7, 0x3d, 0x55, 0xff, - 0xce, 0xc4, 0x4b, 0xb4, 0x57, 0x7d, 0x53, 0xdf, 0x4c, 0xb4, 0xeb, 0xa3, 0x7a, 0xee, 0xea, 0x8a, 0x6d, 0xb4, 0xeb, 0xa3, 0xf7, 0xba, 0x8a, 0xaa, 0x8d, 0xbc, 0xca, 0x9b, 0xdd, 0xff, 0xff, 0xf8, - 0x4c, 0xac, 0xea, 0xa3, 0x2d, 0x9d, 0xad, 0x9b, 0x6c, 0xb4, 0xcb, 0x9b, 0x7b, 0xaa, 0xbe, 0xac, 0x8c, 0xbc, 0xcb, 0x9b, 0xd5, 0xff, 0x88, 0x8a, 0x2b, 0xac, 0xec, 0xa3, 0xfa, 0xf0, 0x56, 0xfe, - 0x2c, 0xb4, 0xeb, 0xa3, 0xef, 0xab, 0xe7, 0xff, 0x0b, 0xac, 0xaa, 0xa3, 0x88, 0xa0, 0x7e, 0xaf, 0x0b, 0xac, 0xca, 0xa3, 0xf6, 0xd7, 0xb5, 0x7f, 0xeb, 0xab, 0xab, 0x9b, 0xca, 0xaa, 0xfe, 0xab, - 0x0c, 0xac, 0xca, 0xa3, 0xfa, 0xaf, 0xf5, 0xab, 0x2c, 0xac, 0xcb, 0xa3, 0xd2, 0xff, 0xad, 0xbe, 0x6c, 0xb4, 0xcb, 0xa3, 0xdd, 0xde, 0xba, 0xe3, 0x0b, 0xac, 0xea, 0xa3, 0xfe, 0x82, 0xa0, 0x80, - 0x0c, 0xac, 0xea, 0xa3, 0xeb, 0xe8, 0xab, 0x84, 0x0c, 0xb4, 0xca, 0xa3, 0xba, 0xfe, 0xa2, 0xab, 0x2c, 0xac, 0xca, 0xa3, 0xfe, 0xb7, 0xfe, 0xa2, 0x0b, 0xac, 0xea, 0xa3, 0xff, 0xdb, 0x5a, 0xee, - 0xeb, 0xab, 0xca, 0xa3, 0xf7, 0x6c, 0xd5, 0x6c, 0xeb, 0xab, 0xca, 0xa3, 0x77, 0x5d, 0xf5, 0x6f, 0x0b, 0xac, 0xaa, 0xa3, 0x7e, 0x77, 0xff, 0xa8, 0x6d, 0xb4, 0xaa, 0xa3, 0x55, 0x55, 0xf7, 0x2b, - 0xae, 0xbc, 0xaa, 0xa3, 0x55, 0x55, 0xad, 0xb2, 0x6d, 0xbc, 0xca, 0xa3, 0xd5, 0xdf, 0xbe, 0xa8, 0xad, 0xbc, 0x0c, 0xac, 0x37, 0x7e, 0xff, 0xff, 0x8d, 0xbc, 0x2c, 0xac, 0x54, 0xf5, 0xd5, 0xab, - 0x4c, 0xbc, 0x2b, 0xb4, 0x27, 0x27, 0xce, 0x2a, 0x6c, 0xbc, 0x0b, 0xb4, 0x2a, 0xaa, 0xdf, 0xef, 0x4b, 0xbc, 0x05, 0x6a, 0x00, 0x00, 0x00, 0x40, 0xad, 0xc4, 0x87, 0x7a, 0xa8, 0xa8, 0xaf, 0xa9, - 0x4c, 0xbc, 0x2b, 0xb4, 0xad, 0x79, 0x95, 0xc3, 0x6c, 0xbc, 0x0a, 0xb4, 0x0a, 0xaf, 0xbb, 0xd8, 0x6c, 0xbc, 0x2b, 0xb4, 0xb8, 0x2b, 0xaf, 0xe1, 0x6c, 0xbc, 0xa6, 0x82, 0x00, 0x00, 0x80, 0xb4, - 0x8c, 0xbc, 0xcb, 0xab, 0x8a, 0xa8, 0x29, 0x7a, 0x8c, 0xc4, 0x0b, 0xb4, 0xea, 0xb8, 0xd7, 0xfd, 0x8d, 0xc4, 0x4b, 0xbc, 0xd5, 0x5e, 0x5f, 0x63, 0xad, 0xc4, 0x2c, 0xb4, 0xbe, 0xd5, 0x85, 0xb7, - 0x8d, 0xbc, 0x2c, 0xb4, 0xf7, 0x8a, 0x2e, 0xbc, 0xce, 0xc4, 0x4c, 0xb4, 0x85, 0xfd, 0xf5, 0xe5, 0xad, 0xbc, 0x2c, 0xb4, 0x2e, 0xaa, 0xaa, 0xbd, 0x8d, 0xc4, 0x4c, 0xb4, 0x8b, 0xaa, 0x2a, 0xfa, - 0xad, 0xc4, 0x6c, 0xbc, 0xea, 0xbb, 0x57, 0xd5, 0xad, 0xc4, 0x6c, 0xbc, 0xf7, 0xae, 0x7f, 0xaf, 0xcd, 0xc4, 0x8c, 0xbc, 0xa3, 0xbc, 0x89, 0x7b, 0xce, 0xc4, 0x6c, 0xbc, 0xa0, 0xf8, 0x6b, 0xfd, - 0xad, 0xc4, 0x6c, 0xbc, 0x22, 0x60, 0xb5, 0xaa, 0xcd, 0xc4, 0x4c, 0xbc, 0xc0, 0xf5, 0xea, 0xaa, 0xad, 0xc4, 0x6c, 0xb4, 0xd5, 0xef, 0x2e, 0xaa, 0xae, 0xc4, 0x8c, 0xbc, 0x5d, 0x8b, 0x9e, 0xcb, - 0xcd, 0xc4, 0x8c, 0xbc, 0xa9, 0xe9, 0x59, 0xfa, 0xae, 0xc4, 0x8c, 0xbc, 0x2e, 0xf8, 0x2d, 0x7e, 0xcd, 0xc4, 0x6c, 0xbc, 0xe8, 0xbd, 0x5b, 0x55, 0xad, 0xc4, 0x6c, 0xbc, 0xfb, 0xac, 0xff, 0xd7, - 0x8d, 0xc4, 0x4c, 0xb4, 0xa8, 0xaa, 0xbd, 0xa0, 0xad, 0xc4, 0x4c, 0xb4, 0xaf, 0xff, 0xfa, 0xa2, 0x8d, 0xc4, 0x6c, 0xb4, 0xff, 0xfa, 0xef, 0xee, 0xad, 0xc4, 0x6c, 0xb4, 0xff, 0xfd, 0xff, 0xfb, - 0xcd, 0xc4, 0x6c, 0xbc, 0x55, 0x55, 0x1f, 0xa3, 0xad, 0xc4, 0x4c, 0xb4, 0xf7, 0xfe, 0xaa, 0x2a, 0x8d, 0xc4, 0x4c, 0xb4, 0xea, 0xaa, 0xfb, 0xaa, 0xad, 0xbc, 0x6c, 0xb4, 0x57, 0xff, 0xfb, 0xeb, - 0x8d, 0xc4, 0x2b, 0xb4, 0xba, 0xaa, 0x8a, 0x8d, 0x8d, 0xc4, 0x6c, 0xb4, 0xef, 0xfb, 0xaa, 0xaf, 0x8d, 0xc4, 0x6c, 0xb4, 0xfa, 0xab, 0xea, 0xaa, 0xad, 0xc4, 0x4c, 0xbc, 0xff, 0x7a, 0xab, 0x80, - 0xad, 0xc4, 0x6c, 0xbc, 0xbf, 0x75, 0xae, 0xe8, 0x8d, 0xbc, 0x4c, 0xb4, 0xdc, 0xbf, 0xaa, 0x00, 0x8d, 0xc4, 0x4c, 0xb4, 0x8a, 0xfe, 0xfa, 0x77, 0x8d, 0xc4, 0x6c, 0xb4, 0xfa, 0xff, 0xb9, 0x7f, - 0x6d, 0xbc, 0xea, 0xa3, 0x80, 0x00, 0x2a, 0x9c, 0x6d, 0xbc, 0x2b, 0xb4, 0x22, 0xbc, 0xce, 0x82, 0xad, 0xbc, 0x2c, 0xb4, 0xee, 0xff, 0xf5, 0x8a, 0x8d, 0xbc, 0x4c, 0xb4, 0x29, 0xee, 0x27, 0x1e, - 0x8d, 0xc4, 0x6c, 0xb4, 0xfe, 0xaf, 0xaf, 0xcb, 0x8d, 0xc4, 0x4b, 0xbc, 0xee, 0xeb, 0x76, 0x0a, 0x6c, 0xbc, 0xeb, 0xb3, 0xaa, 0x2e, 0xb7, 0xa0, 0x6d, 0xbc, 0x48, 0x9b, 0xa4, 0x08, 0x00, 0x00, - 0x8c, 0xc4, 0xe8, 0x8a, 0x2a, 0x02, 0xa0, 0xa4, 0x8c, 0xbc, 0x0b, 0xac, 0xfa, 0xb8, 0x75, 0xad, 0x6c, 0xbc, 0x2b, 0xb4, 0xeb, 0xda, 0x9d, 0x82, 0x6c, 0xbc, 0x2b, 0xb4, 0xff, 0xad, 0xfa, 0xaf, - 0x8d, 0xbc, 0x2c, 0xb4, 0xbb, 0xaa, 0xad, 0x2e, 0xad, 0xbc, 0x2b, 0xb4, 0x0f, 0xa7, 0x2a, 0xfa, 0xad, 0xc4, 0xca, 0xab, 0xa0, 0xa0, 0xb6, 0x2a, 0x4f, 0xd5, 0x0b, 0xb4, 0xe3, 0x57, 0xff, 0xdd, - 0x6c, 0xbc, 0xca, 0xa3, 0xb6, 0xaa, 0xa8, 0xaa, 0x6c, 0xbc, 0x0b, 0xb4, 0xda, 0xee, 0xad, 0xa8, 0x6c, 0xbc, 0xea, 0xab, 0x8a, 0xed, 0xbe, 0xfa, 0x4c, 0xb4, 0xaa, 0xa3, 0xa8, 0xaa, 0x8a, 0x5a, - 0x2b, 0xb4, 0xaa, 0xa3, 0xea, 0x00, 0xe8, 0xe5, 0x2b, 0xb4, 0x8a, 0xa3, 0xaa, 0xe0, 0x5f, 0xab, 0x0b, 0xb4, 0xea, 0xa3, 0xaa, 0xdf, 0xfb, 0xef, 0x4c, 0xbc, 0xca, 0xa3, 0xe2, 0x76, 0xfb, 0x7e, - 0xea, 0xab, 0x49, 0x93, 0x78, 0xbe, 0xa8, 0x80, 0x0a, 0xac, 0xc7, 0x82, 0x55, 0xaa, 0x80, 0xc0, 0x0b, 0xac, 0x24, 0x72, 0xab, 0x2a, 0x00, 0x7f, 0xc9, 0xa3, 0x04, 0x6a, 0x00, 0x00, 0xfc, 0xf5, - 0x0a, 0xac, 0x62, 0x59, 0xaa, 0x02, 0x57, 0xff, 0x88, 0x9b, 0xe4, 0x61, 0x20, 0xa0, 0xd7, 0xf7, 0xca, 0x9b, 0x63, 0x59, 0x80, 0x57, 0xbf, 0xab, 0xaa, 0x9b, 0x46, 0x72, 0x2a, 0x29, 0x02, 0x0a, - 0xeb, 0xa3, 0x89, 0x9b, 0xad, 0xad, 0x0a, 0xaa, 0x4b, 0xac, 0xca, 0xa3, 0x3d, 0xf5, 0x75, 0xf5, 0x2b, 0xac, 0xca, 0xa3, 0xe6, 0xad, 0xf7, 0xaf, 0x0b, 0xac, 0xca, 0xa3, 0x2a, 0x2a, 0xef, 0xf7, - 0x0b, 0xac, 0xca, 0xa3, 0x80, 0xb8, 0xb7, 0xe7, 0x4b, 0xb4, 0xea, 0xa3, 0xed, 0xcf, 0x57, 0x55, 0x2b, 0xac, 0xca, 0xa3, 0x00, 0x9e, 0xd7, 0xaf, 0x0e, 0xc5, 0xeb, 0xab, 0x7f, 0x73, 0x55, 0xd7, - 0x6d, 0xbc, 0xeb, 0xab, 0x7d, 0xf1, 0x3b, 0xda, 0xad, 0xbc, 0xea, 0xa3, 0x2e, 0x8d, 0x5d, 0x5f, 0xad, 0xbc, 0xea, 0xa3, 0xe0, 0xba, 0x2d, 0x29, 0xad, 0xbc, 0xea, 0xa3, 0x6a, 0x8a, 0xb8, 0xfa, - 0xad, 0xbc, 0x0b, 0xac, 0xa9, 0x82, 0xa2, 0x8b, 0xad, 0xbc, 0x0b, 0xac, 0x01, 0x0a, 0xfa, 0xee, 0xcd, 0xbc, 0xeb, 0xa3, 0xa6, 0xa0, 0x88, 0xaa, 0xad, 0xbc, 0x6c, 0xb4, 0x46, 0xbe, 0xa3, 0x3f, - 0xcd, 0xbc, 0x0b, 0xac, 0xfa, 0x72, 0x70, 0x8a, 0x8c, 0xbc, 0x0b, 0xac, 0xa9, 0xa9, 0x29, 0x88, 0xad, 0xc4, 0xeb, 0xa3, 0xb7, 0xd5, 0xf8, 0x8b, 0xcd, 0xc4, 0x2b, 0xac, 0xaa, 0xa7, 0x7a, 0xf3, - 0xed, 0xc4, 0x4c, 0xb4, 0x6b, 0xe2, 0xb5, 0x8d, 0xed, 0xc4, 0x2c, 0xac, 0x9e, 0x5f, 0xfa, 0xca, 0x8c, 0xbc, 0x0b, 0xac, 0xa0, 0x8b, 0x8a, 0x6a, 0xad, 0xbc, 0x2b, 0xac, 0x5f, 0x7f, 0xfc, 0xab, - 0xce, 0xc4, 0x4c, 0xb4, 0xfd, 0xdf, 0x95, 0xd0, 0xcd, 0xc4, 0xcb, 0xa3, 0xfe, 0xdf, 0xfa, 0xb8, 0xce, 0xbc, 0xeb, 0xab, 0xe3, 0xab, 0x7a, 0xee, 0x6d, 0xb4, 0x0b, 0xa4, 0x5c, 0xdf, 0xcf, 0xaf, - 0x6d, 0xb4, 0x0b, 0xa4, 0x9e, 0x9b, 0xbb, 0x28, 0xad, 0xbc, 0x2c, 0xac, 0x3b, 0x9a, 0x8a, 0xea, 0x8d, 0xbc, 0xeb, 0xab, 0x88, 0x08, 0xa6, 0xeb, 0x4c, 0xb4, 0x0b, 0xac, 0x5e, 0xd6, 0xd8, 0x52, - 0x2c, 0xb4, 0xea, 0xab, 0x7c, 0xe8, 0xee, 0xab, 0x0c, 0xb4, 0xea, 0xa3, 0xbf, 0xff, 0xab, 0xab, 0x0c, 0xb4, 0xcb, 0xa3, 0xf3, 0xf7, 0xa8, 0x8a, 0x2c, 0xb4, 0xeb, 0xa3, 0xbf, 0xfb, 0xff, 0xae, - 0x2b, 0xb4, 0xca, 0xa3, 0xab, 0xef, 0xfa, 0xb2, 0x2c, 0xb4, 0xea, 0xa3, 0xff, 0xff, 0x5d, 0xfa, 0x0c, 0xb4, 0xca, 0xa3, 0xae, 0xfa, 0xa7, 0xfa, 0x2c, 0xac, 0xca, 0xa3, 0xaf, 0xaf, 0x7a, 0xe2, - 0x2c, 0xb4, 0xea, 0xab, 0xab, 0xaf, 0x7f, 0xfe, 0x4c, 0xb4, 0xeb, 0xab, 0x7d, 0x8b, 0xef, 0xdf, 0x4c, 0xb4, 0xeb, 0xab, 0xdf, 0xbf, 0x2a, 0xf8, 0x4c, 0xb4, 0xcb, 0xab, 0xfe, 0x9a, 0xaa, 0xa0, - 0x4c, 0xb4, 0xeb, 0xab, 0x5d, 0xff, 0xa9, 0x40, 0x6d, 0xb4, 0xeb, 0xab, 0x57, 0x77, 0xeb, 0x89, 0x4c, 0xb4, 0x0b, 0xac, 0x37, 0x2d, 0xa3, 0x80, 0xce, 0xc4, 0xeb, 0xab, 0xff, 0x97, 0x05, 0xab, - 0xce, 0xc4, 0x0b, 0xac, 0x8d, 0xba, 0xfe, 0xff, 0x6c, 0xb4, 0xeb, 0xab, 0xa0, 0xa2, 0x0a, 0xa5, 0x6d, 0xbc, 0x2c, 0xac, 0xab, 0xaa, 0x0a, 0xa9, 0x8e, 0xbc, 0x6c, 0xb4, 0x05, 0x83, 0x20, 0x80, - 0x4c, 0xbc, 0x2b, 0xb4, 0xbb, 0xaf, 0x2f, 0xda, 0x4c, 0xbc, 0x0b, 0xb4, 0x23, 0x80, 0x60, 0x00, 0x6b, 0xbc, 0xec, 0xab, 0x7a, 0xaa, 0xaa, 0xa2, 0x4c, 0xbc, 0xca, 0xab, 0x0b, 0xa8, 0xd0, 0x80, - 0x6c, 0xbc, 0xea, 0xb3, 0x6a, 0xf0, 0xdf, 0xfa, 0x4c, 0xbc, 0xa7, 0x82, 0xad, 0x02, 0x02, 0x00, 0x4b, 0xbc, 0x03, 0x51, 0x80, 0x70, 0xbc, 0x00, 0x2c, 0xb4, 0x26, 0x72, 0x2d, 0x0b, 0x00, 0x00, - 0x8b, 0xc4, 0xcc, 0xa3, 0xaa, 0x2b, 0x2f, 0x6a, 0xcc, 0xcc, 0x64, 0x51, 0x80, 0xd8, 0xb6, 0xab, 0x4c, 0xbc, 0xca, 0xa3, 0x2d, 0xff, 0x2b, 0x02, 0xad, 0xbc, 0x0b, 0xac, 0x0f, 0x89, 0xaf, 0xae, - 0x8c, 0xc4, 0x0b, 0xb4, 0x00, 0x00, 0x7a, 0xff, 0xce, 0xc4, 0x0b, 0xac, 0xea, 0xcf, 0xfd, 0xff, 0x8d, 0xbc, 0x2b, 0xb4, 0x27, 0xa8, 0x5f, 0xdd, 0x6d, 0xbc, 0x4b, 0xb4, 0x28, 0xef, 0xb5, 0x7d, - 0x8d, 0xbc, 0x2b, 0xb4, 0xaa, 0xba, 0xab, 0x05, 0x8d, 0xbc, 0x4c, 0xb4, 0x2f, 0xa8, 0xa0, 0x98, 0xad, 0xc4, 0x6c, 0xb4, 0xbf, 0xbf, 0xab, 0xaa, 0xac, 0xc4, 0x6d, 0xbc, 0x8b, 0x0b, 0xbe, 0xe2, - 0xad, 0xc4, 0x8c, 0xbc, 0xaf, 0xae, 0xbf, 0x8f, 0xad, 0xc4, 0x8c, 0xbc, 0xaf, 0xab, 0x8b, 0x65, 0xcd, 0xc4, 0x4c, 0xbc, 0xaa, 0xa0, 0xff, 0xf5, 0xad, 0xc4, 0x2c, 0xb4, 0xa0, 0xb6, 0xaa, 0xaa, - 0x8d, 0xc4, 0x2c, 0xb4, 0x27, 0x82, 0x82, 0xaa, 0xad, 0xc4, 0x6c, 0xbc, 0xdf, 0xcf, 0xf5, 0xd5, 0xad, 0xc4, 0x4c, 0xbc, 0xa2, 0xca, 0xdf, 0xfd, 0xcd, 0xc4, 0x4c, 0xbc, 0x2f, 0x7d, 0x55, 0x55, - 0xee, 0xcc, 0x4c, 0xb4, 0x3e, 0xdd, 0x55, 0xd5, 0xad, 0xc4, 0x4c, 0xb4, 0xa8, 0xb5, 0xff, 0xff, 0x8c, 0xc4, 0x4c, 0xb4, 0xa8, 0x8e, 0xff, 0xba, 0x8d, 0xc4, 0x4b, 0xb4, 0xeb, 0xef, 0xae, 0xff, - 0x8d, 0xc4, 0x6c, 0xbc, 0xd5, 0x55, 0x63, 0xd5, 0xad, 0xc4, 0x6c, 0xbc, 0xd7, 0x5d, 0x5f, 0x8a, 0x8d, 0xc4, 0x6c, 0xb4, 0xaa, 0xbf, 0xff, 0xbf, 0xad, 0xc4, 0x0b, 0xb4, 0x6a, 0xfe, 0xff, 0x8a, - 0x8c, 0xbc, 0x2b, 0xb4, 0xd5, 0xaf, 0x2b, 0xea, 0xcd, 0xc4, 0x2c, 0xb4, 0xad, 0x2b, 0xfe, 0xff, 0xed, 0xc4, 0x4c, 0xbc, 0xff, 0xe2, 0x5d, 0xfd, 0xad, 0xc4, 0x4c, 0xb4, 0x82, 0xfb, 0xeb, 0x7e, - 0x8d, 0xbc, 0x2c, 0xb4, 0xa0, 0x2a, 0xd8, 0xba, 0x8c, 0xbc, 0x0b, 0xb4, 0xdc, 0xa2, 0xfe, 0xa8, 0x8d, 0xbc, 0x4c, 0xb4, 0xbb, 0x83, 0xfd, 0xa8, 0x6d, 0xbc, 0x4c, 0xb4, 0x7a, 0x97, 0x2a, 0x20, - 0x8d, 0xbc, 0x4c, 0xb4, 0xbf, 0xbe, 0x8a, 0xcf, 0x8c, 0xbc, 0x6d, 0xb4, 0xed, 0xae, 0xae, 0xe2, 0x8d, 0xbc, 0x4b, 0xb4, 0x63, 0x60, 0xb0, 0xea, 0x8d, 0xc4, 0x6c, 0xb4, 0xae, 0xbe, 0xaf, 0xab, - 0x8d, 0xbc, 0x2b, 0xb4, 0xf6, 0x08, 0x00, 0x22, 0x8d, 0xc4, 0x4c, 0xb4, 0x6a, 0x82, 0xaa, 0xaa, 0xad, 0xc4, 0x2b, 0xb4, 0xfd, 0xf2, 0xaa, 0xaa, 0x8d, 0xc4, 0x4c, 0xbc, 0xdf, 0xbb, 0xbb, 0xaf, - 0x8c, 0xbc, 0xab, 0xab, 0xaa, 0xad, 0xa8, 0xa8, 0x6c, 0xbc, 0x0b, 0xb4, 0xaf, 0xe8, 0xff, 0xb7, 0x8c, 0xbc, 0x2b, 0xb4, 0xdf, 0xad, 0xf5, 0xb3, 0x6c, 0xbc, 0x0b, 0xac, 0xaa, 0x26, 0x88, 0xee, - 0x6c, 0xbc, 0x2b, 0xb4, 0x2f, 0xaa, 0xf5, 0xab, 0x6c, 0xbc, 0x0b, 0xb4, 0xa8, 0xff, 0x78, 0xfa, 0x6c, 0xb4, 0x0a, 0xac, 0x72, 0xfe, 0xae, 0xed, 0x6b, 0xbc, 0x69, 0x9b, 0xaa, 0x82, 0x78, 0xaa, - 0x4b, 0xbc, 0x89, 0x9b, 0x00, 0x60, 0xbd, 0xe8, 0x2b, 0xb4, 0x25, 0x93, 0x00, 0x02, 0x82, 0x7b, 0x4b, 0xb4, 0x66, 0x7a, 0x00, 0x00, 0x00, 0xd7, 0x2a, 0xb4, 0xc8, 0x82, 0x80, 0x20, 0x00, 0xf5, - 0xea, 0xab, 0x08, 0x8b, 0x00, 0x00, 0xaa, 0x55, 0x6b, 0xb4, 0x65, 0x7a, 0xaa, 0x0a, 0x5f, 0x7f, 0x8a, 0xbc, 0x66, 0x72, 0xaa, 0xa0, 0x75, 0xf7, 0x29, 0xac, 0x47, 0x72, 0x00, 0x5f, 0xf5, 0xff, - 0xa9, 0xa3, 0x47, 0x6a, 0xe8, 0xbd, 0xaa, 0xaa, 0x49, 0x93, 0x45, 0x72, 0x55, 0xaa, 0x22, 0xa2, 0x27, 0x8b, 0x46, 0x7a, 0xf5, 0x82, 0xa8, 0xaa, 0xe7, 0x82, 0xe3, 0x61, 0x7a, 0xf8, 0xac, 0x08, - 0x29, 0x8b, 0xc4, 0x61, 0x55, 0xff, 0xaa, 0x2a, 0x69, 0x9b, 0xe5, 0x61, 0xbd, 0xab, 0x0a, 0x0a, 0xaa, 0x9b, 0xe8, 0x82, 0xb5, 0xaf, 0x2a, 0x0a, 0x4c, 0xac, 0x69, 0x9b, 0xf5, 0xf5, 0x2f, 0xaf, - 0xeb, 0xab, 0xaa, 0x9b, 0xa9, 0x5f, 0xbc, 0xf8, 0xeb, 0xab, 0xaa, 0x9b, 0x2e, 0xab, 0xeb, 0xea, 0xeb, 0xab, 0xaa, 0x9b, 0xe2, 0xbe, 0xab, 0xfa, 0xeb, 0xab, 0xaa, 0x9b, 0xbf, 0xae, 0xff, 0xaf, - 0xeb, 0xab, 0xaa, 0x9b, 0x28, 0xbb, 0xe7, 0xff, 0xeb, 0xab, 0xaa, 0x9b, 0xaa, 0xaa, 0x9e, 0xab, 0xce, 0xc4, 0xca, 0xa3, 0x3d, 0x27, 0xd5, 0x55, 0xad, 0xbc, 0xcb, 0xa3, 0x2e, 0xf6, 0xa7, 0x2b, - 0x70, 0xd5, 0xeb, 0xa3, 0x57, 0x75, 0xd5, 0x7c, 0x4c, 0xb4, 0xaa, 0x9b, 0x7e, 0xaa, 0x28, 0xef, 0xee, 0xc4, 0x0b, 0xac, 0xfd, 0xbd, 0xff, 0xcd, 0xad, 0xbc, 0xeb, 0xa3, 0xf8, 0xa8, 0x96, 0xa1, - 0xac, 0xbc, 0x0b, 0xac, 0xfd, 0x25, 0x2f, 0xee, 0xad, 0xbc, 0x0b, 0xac, 0xf8, 0xe2, 0x7e, 0x1e, 0xed, 0xbc, 0xeb, 0xab, 0x2e, 0xa5, 0xae, 0xae, 0xed, 0xbc, 0x0b, 0xac, 0x0a, 0x7a, 0x7e, 0x7d, - 0x8c, 0xbc, 0x0b, 0xac, 0x03, 0xbf, 0xd5, 0xbb, 0x8c, 0xbc, 0xeb, 0x9b, 0xf8, 0xfa, 0x57, 0xff, 0x8c, 0xb4, 0xeb, 0xa3, 0xcb, 0xbf, 0x3f, 0xd5, 0x6c, 0xb4, 0x0a, 0xa4, 0x89, 0x0f, 0xb8, 0x7f, - 0x6c, 0xb4, 0x0b, 0xac, 0xf8, 0xff, 0xdb, 0xfb, 0xad, 0xbc, 0x0b, 0xb4, 0xfd, 0x3a, 0xff, 0xea, 0xad, 0xbc, 0x0b, 0xac, 0x2a, 0xaf, 0xdd, 0x55, 0xad, 0xbc, 0x2b, 0xac, 0xab, 0x62, 0x8a, 0xdf, - 0xad, 0xc4, 0x0b, 0xac, 0xe0, 0xb5, 0xbf, 0xd7, 0xce, 0xbc, 0x4c, 0xb4, 0x55, 0xdf, 0x96, 0xa8, 0xcd, 0xc4, 0x0b, 0xac, 0x7b, 0x3d, 0xef, 0xeb, 0xad, 0xbc, 0x2c, 0xac, 0xf7, 0x2f, 0x2d, 0x02, - 0xcd, 0xc4, 0x4c, 0xb4, 0xf5, 0xff, 0xf0, 0x68, 0xcd, 0xc4, 0x4b, 0xb4, 0xde, 0xaa, 0xfc, 0x5d, 0x8c, 0xbc, 0x0b, 0xac, 0xfb, 0xe8, 0xf8, 0x5f, 0x2b, 0xb4, 0xeb, 0xab, 0xb6, 0xf2, 0xff, 0x57, - 0x0b, 0xb4, 0xeb, 0xa3, 0xaa, 0xba, 0xfe, 0xbb, 0x4c, 0xb4, 0xca, 0xa3, 0xbe, 0xba, 0xa8, 0x77, 0x2b, 0xb4, 0xca, 0xa3, 0x82, 0xab, 0xb7, 0xa1, 0x4c, 0xb4, 0xca, 0xa3, 0xa2, 0x22, 0x77, 0xba, - 0x2c, 0xb4, 0xaa, 0xa3, 0xae, 0xaf, 0x29, 0x22, 0x2c, 0xb4, 0xeb, 0xa3, 0x8a, 0xae, 0x58, 0x08, 0x4c, 0xb4, 0xaa, 0xa3, 0xfa, 0xde, 0xfe, 0x82, 0x4c, 0xb4, 0xeb, 0xab, 0xff, 0xfd, 0xfd, 0x8b, - 0x4c, 0xb4, 0xca, 0xa3, 0xaa, 0xb7, 0x8a, 0xcb, 0x4c, 0xb4, 0xcb, 0xa3, 0xaa, 0x80, 0xab, 0xf6, 0x6d, 0xb4, 0xca, 0xa3, 0xaa, 0x82, 0xde, 0xa9, 0x4b, 0xb4, 0x0c, 0xac, 0x0a, 0xfb, 0x2d, 0x8f, - 0x4c, 0xb4, 0xeb, 0xab, 0x1a, 0xa0, 0xba, 0x89, 0x6d, 0xb4, 0x0b, 0xac, 0x0a, 0x2f, 0xaa, 0x95, 0x6d, 0xb4, 0x87, 0x9b, 0x00, 0x00, 0xa0, 0x78, 0x6c, 0xb4, 0x44, 0x7a, 0x00, 0x80, 0xaa, 0x5e, - 0x8a, 0xb4, 0x46, 0x7a, 0xa0, 0xa5, 0x57, 0xd5, 0x6c, 0xb4, 0xc6, 0x7a, 0x22, 0x25, 0x29, 0x2f, 0x6c, 0xbc, 0xeb, 0xab, 0xaa, 0xbd, 0xfe, 0x25, 0x8d, 0xbc, 0xeb, 0xab, 0xae, 0xea, 0xed, 0xe8, - 0x6c, 0xbc, 0x0b, 0xb4, 0xaa, 0xaa, 0xfd, 0x37, 0x4c, 0xbc, 0x2b, 0xb4, 0xba, 0xb6, 0xcc, 0xb0, 0x4c, 0xbc, 0xeb, 0xb3, 0xb6, 0xa2, 0xea, 0xea, 0x4c, 0xbc, 0x0b, 0xb4, 0xe2, 0xbb, 0x6a, 0xea, - 0x6c, 0xbc, 0x0b, 0xb4, 0x5f, 0xd7, 0x3d, 0xab, 0x6c, 0xbc, 0x0b, 0xb4, 0x3f, 0xb2, 0xf6, 0xbf, 0x4c, 0xbc, 0x0b, 0xb4, 0x5e, 0xb0, 0xa3, 0x82, 0x4c, 0xbc, 0x2b, 0xb4, 0xdd, 0xe1, 0xfa, 0x7f, - 0x4c, 0xbc, 0x0b, 0xb4, 0xe8, 0xfa, 0xbb, 0xea, 0x4b, 0xbc, 0x0c, 0xb4, 0xf7, 0xef, 0xff, 0x2f, 0x4c, 0xbc, 0x2b, 0xb4, 0xcb, 0xbf, 0x2d, 0x03, 0x8b, 0xc4, 0x44, 0x51, 0x00, 0xa0, 0x78, 0xfc, - 0x6b, 0xbc, 0xa9, 0x7a, 0x28, 0xaa, 0x09, 0x02, 0x4c, 0xbc, 0x09, 0xac, 0x80, 0x8a, 0xf0, 0x74, 0x8c, 0xbc, 0xca, 0xa3, 0xbf, 0x2d, 0xae, 0xb5, 0x6c, 0xbc, 0x0b, 0xac, 0xfe, 0x37, 0x0a, 0x00, - 0x8d, 0xbc, 0x4b, 0xb4, 0xa5, 0xbb, 0x8b, 0xef, 0x8d, 0xbc, 0x2c, 0xb4, 0x88, 0xa0, 0xa2, 0x7a, 0x8d, 0xc4, 0x6c, 0xbc, 0x61, 0x55, 0x6b, 0x7d, 0x8d, 0xc4, 0x6c, 0xbc, 0x0b, 0xeb, 0xef, 0x27, - 0xad, 0xc4, 0x6c, 0xbc, 0xde, 0xce, 0xdd, 0x7e, 0x8d, 0xc4, 0x6c, 0xbc, 0xd8, 0x8f, 0xf7, 0xad, 0xad, 0xc4, 0x6c, 0xbc, 0x7a, 0x7e, 0xff, 0x7a, 0x8d, 0xc4, 0x4c, 0xbc, 0xbe, 0xfb, 0xfe, 0xf6, - 0xad, 0xc4, 0x4c, 0xb4, 0xea, 0xbf, 0xf5, 0xbf, 0x8d, 0xc4, 0x4b, 0xb4, 0xfa, 0xfa, 0xbf, 0xea, 0x8d, 0xc4, 0x4b, 0xb4, 0x7f, 0xfe, 0xee, 0xaa, 0x8d, 0xbc, 0x4b, 0xb4, 0x37, 0xbe, 0xf7, 0x2f, - 0x8d, 0xc4, 0x4c, 0xb4, 0xbb, 0xaf, 0xab, 0xab, 0xcd, 0xc4, 0x6c, 0xbc, 0xd5, 0x7d, 0x75, 0x8b, 0xed, 0xc4, 0x4c, 0xbc, 0x5b, 0x7f, 0xff, 0xb8, 0xad, 0xc4, 0x4c, 0xb4, 0xfd, 0xff, 0xf7, 0xfc, - 0x8d, 0xc4, 0x4b, 0xb4, 0xf7, 0xfe, 0x6b, 0x9e, 0xee, 0xcc, 0x4c, 0xbc, 0x3d, 0xfd, 0xf5, 0x55, 0xad, 0xc4, 0x4b, 0xbc, 0x2c, 0x5e, 0x7f, 0xf5, 0x6c, 0xbc, 0x0b, 0xb4, 0xb4, 0x80, 0xe2, 0xaa, - 0x8d, 0xbc, 0x2b, 0xb4, 0xde, 0xaf, 0xff, 0xa3, 0x8d, 0xbc, 0x2b, 0xb4, 0x9a, 0xaa, 0xac, 0x8c, 0x8d, 0xc4, 0x4c, 0xb4, 0xff, 0xbf, 0xc2, 0xff, 0x8d, 0xbc, 0x4b, 0xb4, 0xa9, 0xea, 0x7f, 0xee, - 0x8d, 0xc4, 0x4c, 0xb4, 0xef, 0xa3, 0xbb, 0xaa, 0xcd, 0xc4, 0x4c, 0xb4, 0xff, 0xf8, 0x5f, 0x7f, 0x8d, 0xc4, 0x4c, 0xbc, 0xff, 0x8f, 0xfd, 0xea, 0x8d, 0xbc, 0x2c, 0xb4, 0xa2, 0x07, 0xbb, 0x08, - 0x8d, 0xbc, 0x4c, 0xb4, 0xaa, 0xf6, 0xff, 0xa0, 0x8d, 0xc4, 0x4b, 0xb4, 0xaa, 0xa3, 0xab, 0xff, 0x8d, 0xbc, 0x4b, 0xb4, 0x28, 0x28, 0x6a, 0xff, 0x8c, 0xbc, 0x2b, 0xb4, 0x0a, 0x20, 0xe9, 0x98, - 0x8d, 0xbc, 0x4b, 0xb4, 0x22, 0xbc, 0xff, 0x57, 0x8c, 0xbc, 0x4b, 0xb4, 0xe8, 0x3f, 0xab, 0x6a, 0x8c, 0xbc, 0x2b, 0xb4, 0xea, 0x2a, 0x7a, 0xfd, 0x8c, 0xbc, 0x2b, 0xb4, 0xea, 0xf7, 0x29, 0x7f, - 0x8c, 0xbc, 0x0b, 0xac, 0xff, 0x8a, 0xd6, 0xff, 0x8c, 0xbc, 0xcb, 0xab, 0xaa, 0xb7, 0xef, 0x2a, 0x4c, 0xb4, 0x0a, 0xac, 0xd4, 0x3a, 0x8f, 0xeb, 0x6d, 0xbc, 0x0b, 0xb4, 0x2f, 0x6b, 0x7f, 0x7d, - 0x4b, 0xbc, 0x6a, 0x9b, 0x80, 0xd7, 0xaa, 0xaa, 0x0a, 0xb4, 0x6a, 0x9b, 0x82, 0x55, 0xaa, 0xa2, 0x2a, 0xac, 0x49, 0x9b, 0x7e, 0xff, 0xaa, 0x0a, 0x09, 0xa4, 0xa7, 0x8a, 0x7f, 0xaa, 0xaa, 0xa8, - 0x89, 0x9b, 0xa6, 0x82, 0xf5, 0x28, 0x20, 0xa8, 0xca, 0xa3, 0x07, 0x8b, 0xfd, 0x0a, 0xaa, 0x5d, 0xc9, 0xa3, 0xc7, 0x82, 0xeb, 0xa0, 0xaa, 0xde, 0xea, 0xa3, 0xe5, 0x71, 0xaa, 0xa0, 0x00, 0x5e, - 0xa9, 0x9b, 0x45, 0x7a, 0xaa, 0x00, 0x00, 0x9f, 0xa9, 0xa3, 0xc7, 0x82, 0xbf, 0xa2, 0x08, 0x57, 0xea, 0xa3, 0xc7, 0x8a, 0xff, 0xaa, 0x20, 0xdd, 0xca, 0xa3, 0xc7, 0x82, 0xaa, 0xaa, 0x20, 0xd7, - 0x8a, 0x9b, 0xc5, 0x82, 0xa0, 0xa8, 0x08, 0xf7, 0x69, 0x93, 0x02, 0x6a, 0xa0, 0x00, 0x80, 0x7a, 0x28, 0x8b, 0x23, 0x49, 0x00, 0x80, 0xf0, 0xb7, 0xab, 0xa3, 0xc8, 0x82, 0x75, 0xfd, 0xbd, 0x2b, - 0x4c, 0xac, 0x66, 0x7a, 0xff, 0xaa, 0xae, 0x4a, 0xcb, 0xa3, 0xe7, 0x82, 0xef, 0x0a, 0x00, 0x01, 0xeb, 0xa3, 0x8a, 0x9b, 0xa5, 0xab, 0x2a, 0x0b, 0xce, 0xbc, 0xaa, 0x9b, 0xe5, 0x37, 0x57, 0xf5, - 0x0b, 0xa4, 0xaa, 0x9b, 0xeb, 0x26, 0x8a, 0xa0, 0xeb, 0xab, 0xca, 0x9b, 0xfa, 0xfa, 0xaa, 0xe2, 0x0c, 0xac, 0xca, 0xa3, 0xd5, 0xd5, 0xf7, 0x3d, 0x0b, 0xac, 0xaa, 0xa3, 0x6f, 0x5a, 0x6a, 0xa8, - 0xcb, 0xa3, 0x8a, 0x9b, 0x00, 0x80, 0x07, 0x02, 0x2b, 0xac, 0xca, 0xa3, 0x5d, 0xb3, 0xe5, 0xd7, 0xef, 0xc4, 0xca, 0xa3, 0x55, 0x57, 0x55, 0xcd, 0x2b, 0xb4, 0xca, 0xa3, 0x3d, 0x97, 0x2f, 0xe8, - 0x4c, 0xb4, 0xca, 0xa3, 0xaa, 0x4a, 0xaa, 0xaf, 0x2b, 0xac, 0xca, 0xa3, 0x3c, 0xde, 0x6b, 0x5e, 0x8d, 0xbc, 0xeb, 0xa3, 0x0a, 0x8b, 0xa3, 0xf5, 0xae, 0xb4, 0xeb, 0xab, 0x7b, 0xab, 0x02, 0x20, - 0xad, 0xbc, 0xeb, 0xa3, 0x8a, 0x2e, 0x7f, 0xab, 0xce, 0xc4, 0x2c, 0xac, 0x5d, 0xf4, 0x5d, 0xfe, 0x8d, 0xbc, 0x0b, 0xac, 0x8b, 0xfe, 0x7d, 0xff, 0xcd, 0xc4, 0xca, 0xa3, 0xde, 0xf5, 0xff, 0x89, - 0x8c, 0xbc, 0xeb, 0xa3, 0xe8, 0x59, 0x7e, 0x5f, 0x6c, 0xac, 0xaa, 0x9b, 0x3f, 0xeb, 0xeb, 0xe7, 0x2b, 0xac, 0xaa, 0xa3, 0x2c, 0x9e, 0xeb, 0x7a, 0x0b, 0xac, 0xaa, 0xa3, 0x28, 0xea, 0xa9, 0xab, - 0x4b, 0xb4, 0xca, 0xa3, 0x09, 0xed, 0x7f, 0xfd, 0x2b, 0xac, 0x8a, 0x9b, 0x80, 0xa8, 0xa7, 0x8a, 0x4c, 0xb4, 0x89, 0x9b, 0xfa, 0xfe, 0xfc, 0x7f, 0x8d, 0xb4, 0xaa, 0x9b, 0xe7, 0x43, 0xa3, 0xa7, - 0xcd, 0xc4, 0x0b, 0xac, 0x3d, 0xbd, 0xf5, 0xff, 0xad, 0xbc, 0xea, 0xab, 0xe0, 0xa0, 0xf8, 0x7f, 0xac, 0xbc, 0xeb, 0xa3, 0x22, 0x8a, 0xf7, 0x55, 0xac, 0xbc, 0xeb, 0xa3, 0xa0, 0x75, 0xd5, 0xf5, - 0x6c, 0xbc, 0xeb, 0xab, 0x80, 0x2d, 0xff, 0x55, 0x4c, 0xb4, 0xca, 0xab, 0xf8, 0x8a, 0xdf, 0xfe, 0x2c, 0xb4, 0xea, 0xab, 0xbf, 0xe8, 0xd6, 0xd5, 0x2b, 0xb4, 0xca, 0xa3, 0xa0, 0xef, 0xbb, 0xaf, - 0x2c, 0xb4, 0xca, 0xa3, 0xe2, 0xff, 0x5e, 0xff, 0x0b, 0xac, 0x69, 0x9b, 0x00, 0x00, 0x9e, 0x26, 0x2b, 0xb4, 0xaa, 0xab, 0x03, 0xbd, 0xff, 0xaa, 0x2c, 0xb4, 0xea, 0xab, 0xad, 0xbd, 0x5f, 0xba, - 0x2c, 0xb4, 0xcb, 0xab, 0x02, 0xc2, 0x6b, 0xae, 0x4c, 0xb4, 0xaa, 0xa3, 0x82, 0xa9, 0x7e, 0x3d, 0x2c, 0xb4, 0xaa, 0xa3, 0x08, 0xad, 0x0f, 0xaa, 0x4c, 0xb4, 0xeb, 0xab, 0xe2, 0xfa, 0x76, 0xff, - 0x4c, 0xb4, 0xab, 0xa3, 0xb2, 0xea, 0xfe, 0xd7, 0x2c, 0xac, 0x29, 0x93, 0x20, 0x8a, 0x0a, 0x9a, 0x2c, 0xac, 0xea, 0xa3, 0x08, 0xa2, 0xff, 0x7f, 0xab, 0xbc, 0xcb, 0xa3, 0xef, 0x55, 0xf7, 0x0b, - 0xac, 0xc4, 0xe1, 0x50, 0x2a, 0x02, 0x80, 0x56, 0x8c, 0xc4, 0x42, 0x51, 0x00, 0xea, 0x57, 0xd5, 0x09, 0xac, 0x23, 0x49, 0xe8, 0xd5, 0xf5, 0xaf, 0x8a, 0x9b, 0x43, 0x59, 0xa2, 0x57, 0xab, 0x00, - 0x2c, 0xac, 0x46, 0x72, 0xf5, 0xbd, 0x2a, 0x00, 0xad, 0xc4, 0x89, 0x9b, 0xad, 0xeb, 0xea, 0x4a, 0x6c, 0xbc, 0x89, 0xa3, 0x29, 0x29, 0x8b, 0x83, 0x6c, 0xbc, 0xe2, 0x69, 0x00, 0x88, 0x20, 0x70, - 0x6c, 0xbc, 0x0b, 0xb4, 0xaa, 0xe8, 0x7a, 0xff, 0x4c, 0xbc, 0x0b, 0xb4, 0x82, 0x8e, 0xad, 0x82, 0x4c, 0xbc, 0x2b, 0xb4, 0xe2, 0xf7, 0x3f, 0xba, 0x4c, 0xbc, 0x2b, 0xb4, 0xee, 0x00, 0x22, 0xf0, - 0x6c, 0xbc, 0x2b, 0xb4, 0xfe, 0xb5, 0x6f, 0xe0, 0x4c, 0xbc, 0x2b, 0xb4, 0xbe, 0x30, 0xe0, 0x7e, 0x6c, 0xbc, 0x86, 0xab, 0xa8, 0xaa, 0x2a, 0x6a, 0x4b, 0xbc, 0xa3, 0x61, 0x00, 0x00, 0xa8, 0xad, - 0x6b, 0xbc, 0xca, 0xa3, 0xe0, 0xff, 0xad, 0xbb, 0x4c, 0xbc, 0x0a, 0xb4, 0xfd, 0xed, 0x5f, 0xff, 0x4c, 0xbc, 0x0b, 0xb4, 0x8a, 0x40, 0x6b, 0x23, 0x2b, 0xbc, 0xec, 0xab, 0x78, 0x8a, 0x82, 0x28, - 0x2b, 0xbc, 0xc7, 0x92, 0x80, 0x60, 0x80, 0x00, 0x2c, 0xb4, 0x43, 0x59, 0xf5, 0xb7, 0x2a, 0x0a, 0x6c, 0xbc, 0x6b, 0x93, 0xad, 0x02, 0x0a, 0x02, 0x6c, 0xbc, 0x2b, 0xb4, 0x2a, 0x0b, 0xaa, 0xc3, - 0xad, 0xc4, 0x2b, 0xb4, 0xab, 0xc2, 0xef, 0xfd, 0xad, 0xc4, 0x6c, 0xbc, 0x55, 0x89, 0xf5, 0xbd, 0x0e, 0xcd, 0x4c, 0xbc, 0xff, 0x55, 0xff, 0xdc, 0xad, 0xc4, 0x4c, 0xb4, 0xef, 0xef, 0xbd, 0x2d, - 0xcd, 0xc4, 0x6c, 0xbc, 0xfd, 0xab, 0xfb, 0xa8, 0xee, 0xcc, 0x2c, 0xb4, 0xfb, 0xf3, 0xaa, 0x7a, 0xcd, 0xc4, 0x4c, 0xb4, 0xee, 0xff, 0xa8, 0x7b, 0x8d, 0xc4, 0x6c, 0xbc, 0xf6, 0x7d, 0xfd, 0xf7, - 0xcd, 0xc4, 0x6c, 0xbc, 0xd5, 0x8f, 0xff, 0xff, 0xad, 0xc4, 0x6c, 0xbc, 0x57, 0x58, 0xdd, 0xdf, 0x8d, 0xc4, 0x4c, 0xbc, 0xba, 0xa8, 0x6a, 0xab, 0x8c, 0xc4, 0x6c, 0xb4, 0xea, 0xfb, 0xae, 0xeb, - 0xad, 0xc4, 0x6c, 0xbc, 0xbe, 0x9b, 0x65, 0xff, 0xad, 0xc4, 0x6c, 0xbc, 0x20, 0xf3, 0xbb, 0x55, 0xad, 0xc4, 0x2b, 0xb4, 0xa0, 0xaa, 0x5e, 0xfe, 0x8d, 0xc4, 0x2b, 0xb4, 0xb8, 0xee, 0x75, 0xef, - 0x6d, 0xbc, 0x2b, 0xb4, 0x78, 0xa0, 0xe8, 0xba, 0x6c, 0xbc, 0x0b, 0xb4, 0x02, 0x0e, 0xa9, 0x3a, 0x6c, 0xbc, 0x2b, 0xb4, 0xce, 0xea, 0x7a, 0xf8, 0x6c, 0xbc, 0x2b, 0xb4, 0xa9, 0xeb, 0xba, 0xff, - 0x6c, 0xbc, 0x2c, 0xb4, 0x22, 0xba, 0xbd, 0xee, 0x8d, 0xc4, 0x4b, 0xb4, 0xab, 0xbe, 0x7f, 0xff, 0x6c, 0xbc, 0x2c, 0xb4, 0xb0, 0x02, 0xaf, 0x02, 0x8d, 0xbc, 0x4b, 0xb4, 0xff, 0xbf, 0xff, 0xab, - 0x8c, 0xc4, 0x4b, 0xb4, 0xde, 0xde, 0xfe, 0x2a, 0x8c, 0xc4, 0x4c, 0xb4, 0xbe, 0xab, 0x2f, 0xb8, 0x8d, 0xc4, 0x4c, 0xb4, 0xaf, 0x8a, 0xea, 0xa2, 0x8d, 0xbc, 0x4c, 0xb4, 0x5e, 0xd7, 0x0b, 0x20, - 0x6c, 0xbc, 0x2b, 0xb4, 0xa2, 0x82, 0xa8, 0x4e, 0x8c, 0xbc, 0x2b, 0xb4, 0xf8, 0x7f, 0x7f, 0xf5, 0x6c, 0xbc, 0x0b, 0xac, 0xaa, 0xaa, 0xed, 0xbf, 0x6c, 0xbc, 0x2b, 0xb4, 0x9f, 0xad, 0xff, 0x3f, - 0x6c, 0xbc, 0x2b, 0xb4, 0xfe, 0xfc, 0xbb, 0x7c, 0x6c, 0xbc, 0x66, 0x9b, 0x08, 0x22, 0xa0, 0x6a, 0x6b, 0xbc, 0x84, 0x61, 0x20, 0x00, 0x00, 0x6a, 0x4b, 0xbc, 0xc5, 0x69, 0x00, 0x00, 0xa8, 0xad, - 0x8c, 0xbc, 0xc3, 0x69, 0x00, 0x02, 0x7a, 0xaa, 0x4a, 0xb4, 0x46, 0x7a, 0x00, 0x80, 0xfd, 0xfb, 0x4b, 0xb4, 0x45, 0x72, 0x00, 0x6a, 0xef, 0xab, 0x0a, 0xac, 0x85, 0x7a, 0x00, 0xf3, 0x6e, 0xfe, - 0x2a, 0xb4, 0xe5, 0x69, 0x00, 0xdb, 0xff, 0xaa, 0x49, 0xb4, 0xc3, 0x48, 0x00, 0x5f, 0xfe, 0xaa, 0x08, 0xac, 0x24, 0x41, 0xf8, 0xfd, 0xaf, 0xaa, 0x29, 0x93, 0xa3, 0x61, 0xe7, 0xae, 0x8a, 0x00, - 0x89, 0x9b, 0x87, 0x7a, 0x75, 0xfe, 0xaa, 0x80, 0x6a, 0x9b, 0xa6, 0x7a, 0xff, 0x7e, 0xa2, 0xa0, 0x69, 0x93, 0xe7, 0x82, 0x1f, 0x39, 0xff, 0x2a, 0x89, 0x9b, 0xc7, 0x8a, 0x57, 0xef, 0xab, 0x08, - 0x89, 0x93, 0xc7, 0x8a, 0xd5, 0xab, 0xef, 0x00, 0x8a, 0x9b, 0xa7, 0x82, 0xdf, 0xbf, 0xef, 0xa0, 0x89, 0x9b, 0xa7, 0x8a, 0xba, 0x57, 0x3e, 0x2a, 0xca, 0xa3, 0xa6, 0x82, 0x7f, 0x5d, 0xfe, 0xa0, - 0x69, 0x93, 0x86, 0x82, 0x55, 0x7f, 0xfa, 0xa0, 0xaa, 0x93, 0x46, 0x72, 0x55, 0xff, 0xaa, 0x0a, 0xca, 0xa3, 0xa9, 0x82, 0xad, 0xaa, 0xab, 0x0a, 0xeb, 0xa3, 0x89, 0x9b, 0xf5, 0xbb, 0xef, 0x20, - 0x0b, 0xa4, 0xaa, 0x9b, 0x7e, 0x7f, 0x2b, 0xae, 0x2b, 0xac, 0x8a, 0xa3, 0x8d, 0xad, 0xfd, 0xff, 0x2b, 0xac, 0xca, 0xa3, 0xca, 0xab, 0x9d, 0xf9, 0x2c, 0xac, 0xca, 0xa3, 0x6b, 0x80, 0xa8, 0xba, - 0x4c, 0xb4, 0xeb, 0xa3, 0xdf, 0xf5, 0x8b, 0xff, 0x2c, 0xac, 0xca, 0x9b, 0xaa, 0xf8, 0xd8, 0xee, 0x8d, 0xb4, 0xeb, 0xab, 0xd5, 0xcd, 0xfd, 0xf5, 0x2c, 0xac, 0xca, 0xa3, 0xdf, 0xa0, 0xa2, 0x2a, - 0x2c, 0xac, 0xeb, 0xa3, 0x57, 0xd7, 0xbc, 0xec, 0xad, 0xbc, 0xeb, 0xa3, 0x75, 0xa5, 0xdf, 0x37, 0xae, 0xbc, 0xea, 0xab, 0xfd, 0xf5, 0xfd, 0x28, 0xce, 0xbc, 0xca, 0xa3, 0xfe, 0xbd, 0xe2, 0x2a, - 0x6c, 0xb4, 0xea, 0xa3, 0xf5, 0xa2, 0x7f, 0x6e, 0x8d, 0xb4, 0xcb, 0xa3, 0xdc, 0x2c, 0xaf, 0xab, 0xad, 0xbc, 0x0c, 0xac, 0xfe, 0xff, 0x69, 0x8b, 0x0e, 0xc5, 0xeb, 0xa3, 0xe2, 0xf5, 0xf9, 0xab, - 0xad, 0xbc, 0x2b, 0xac, 0x5f, 0x54, 0xd6, 0x37, 0xee, 0xc4, 0xeb, 0xa3, 0xe3, 0xeb, 0xfe, 0xf7, 0xcd, 0xbc, 0x0b, 0xa4, 0xe2, 0x5f, 0x5a, 0xd7, 0xad, 0xbc, 0x8a, 0x9b, 0xea, 0x2b, 0xbe, 0xde, - 0x2c, 0xac, 0xca, 0xa3, 0xeb, 0x78, 0xb8, 0x56, 0x2b, 0xac, 0x8a, 0x9b, 0xc2, 0x0a, 0x7f, 0xde, 0x8c, 0xb4, 0x69, 0x9b, 0xdc, 0xff, 0xfb, 0xff, 0xeb, 0xab, 0xaa, 0xa3, 0x2b, 0x2f, 0xff, 0x8a, - 0x6c, 0xb4, 0x8a, 0x9b, 0xff, 0x08, 0x5f, 0xff, 0x6c, 0xb4, 0xaa, 0x9b, 0x8d, 0x57, 0x75, 0xdf, 0x2b, 0xac, 0xaa, 0xa3, 0x2b, 0x29, 0xab, 0xea, 0x2b, 0xac, 0xca, 0xa3, 0xe2, 0xfe, 0x7b, 0xeb, - 0x2c, 0xac, 0xeb, 0xa3, 0xfe, 0xf7, 0xfd, 0x0a, 0x2b, 0xb4, 0xca, 0x9b, 0xfe, 0xff, 0xab, 0x2d, 0x2b, 0xb4, 0xca, 0xa3, 0xad, 0xab, 0x82, 0xfa, 0x4b, 0xb4, 0xaa, 0xa3, 0xf0, 0xd7, 0xb7, 0xff, - 0x4c, 0xb4, 0xab, 0xa3, 0xbd, 0xaa, 0xaa, 0x2a, 0x2c, 0xb4, 0x0b, 0xac, 0x5f, 0xa2, 0x42, 0xea, 0x2c, 0xb4, 0xeb, 0xab, 0x7f, 0xab, 0xf9, 0x0e, 0x2b, 0xb4, 0xeb, 0xab, 0xeb, 0x7a, 0xff, 0xba, - 0x2c, 0xb4, 0xca, 0xab, 0x7f, 0x5e, 0x2e, 0xab, 0x6d, 0xbc, 0x89, 0x9b, 0xab, 0xaa, 0x3a, 0x07, 0x4c, 0xbc, 0x2b, 0xac, 0xff, 0xaf, 0xaa, 0xea, 0x4c, 0xbc, 0x0b, 0xac, 0xfd, 0xeb, 0xfe, 0xd7, - 0x2c, 0xb4, 0xca, 0xa3, 0xa0, 0xb8, 0x7a, 0xba, 0x2c, 0xb4, 0xeb, 0xab, 0xae, 0x85, 0xc1, 0xfa, 0x2c, 0xb4, 0xcb, 0xa3, 0xa7, 0xab, 0x80, 0xea, 0xac, 0xc4, 0x4a, 0x93, 0xea, 0xfe, 0xb7, 0x2b, - 0x8d, 0xbc, 0xe1, 0x69, 0xaa, 0xaa, 0x0a, 0x78, 0xac, 0xc4, 0x60, 0x38, 0xaa, 0x02, 0xe0, 0x55, 0x8a, 0xbc, 0xa1, 0x38, 0x00, 0x78, 0x55, 0x55, 0x44, 0xa3, 0x61, 0x28, 0xf8, 0xff, 0x55, 0xf5, - 0x83, 0x59, 0xc2, 0x40, 0xaa, 0x97, 0xd7, 0x2f, 0xa5, 0x72, 0x22, 0x51, 0x2a, 0xb5, 0xd5, 0xab, 0xc9, 0x9b, 0xc2, 0x50, 0x02, 0x5b, 0xff, 0x2b, 0xeb, 0xab, 0x82, 0x38, 0xa8, 0xad, 0x0a, 0x00, - 0x2c, 0xb4, 0x28, 0x93, 0x8d, 0xe1, 0x2a, 0x03, 0x6c, 0xbc, 0x80, 0x40, 0xb0, 0x96, 0xbe, 0x00, 0x8b, 0xc4, 0xe2, 0x38, 0xe0, 0x58, 0x56, 0x57, 0xa4, 0x51, 0x45, 0x41, 0x6c, 0x7b, 0x5e, 0xad, - 0x6c, 0xbc, 0x0b, 0xac, 0xa8, 0xff, 0xed, 0xbb, 0x6c, 0xbc, 0x2b, 0xb4, 0xdb, 0xfb, 0xeb, 0xa2, 0x6c, 0xbc, 0x0a, 0xb4, 0xaa, 0xaa, 0xaa, 0x72, 0x6c, 0xbc, 0x0b, 0xb4, 0xfa, 0xd4, 0xf8, 0x7f, - 0x4c, 0xbc, 0xcb, 0xb3, 0x02, 0xaa, 0xe0, 0x9e, 0x6c, 0xbc, 0x0b, 0xb4, 0xba, 0xeb, 0x2d, 0xea, 0x6c, 0xbc, 0x05, 0x72, 0x60, 0xa0, 0x20, 0x00, 0x4c, 0xb4, 0xe7, 0x61, 0xa9, 0x02, 0x00, 0x00, - 0x4c, 0xbc, 0x0b, 0xb4, 0x55, 0x73, 0xbf, 0xab, 0x4c, 0xbc, 0x2b, 0xb4, 0xe5, 0x55, 0x4d, 0xed, 0x4c, 0xbc, 0x2b, 0xb4, 0xc3, 0xd9, 0xf5, 0xe7, 0x4c, 0xbc, 0x0a, 0xb4, 0xee, 0xba, 0xee, 0xda, - 0x6c, 0xbc, 0xcb, 0xab, 0x6a, 0xaa, 0x0a, 0x02, 0x4c, 0xbc, 0xca, 0xab, 0xe9, 0x80, 0xe0, 0xc0, 0x4c, 0xb4, 0xaa, 0xa3, 0xab, 0x0b, 0x2b, 0xa9, 0x6c, 0xbc, 0x2b, 0xb4, 0xaa, 0xfe, 0xf6, 0xa9, - 0x8c, 0xbc, 0x0b, 0xb4, 0xa2, 0x2a, 0xa9, 0xbf, 0x8d, 0xc4, 0x4c, 0xbc, 0xef, 0x0e, 0xd5, 0xeb, 0xad, 0xc4, 0x0b, 0xb4, 0xaa, 0xa0, 0x0a, 0x7a, 0x2e, 0xcd, 0x4c, 0xbc, 0xdd, 0xe3, 0xff, 0xfd, - 0xcd, 0xc4, 0x4c, 0xbc, 0xea, 0xbf, 0x5e, 0xf2, 0x90, 0xd5, 0x4c, 0xb4, 0x15, 0xfa, 0x5d, 0xfb, 0xd1, 0xdd, 0x4b, 0xbc, 0xe8, 0x55, 0x5d, 0x55, 0xad, 0xc4, 0xcb, 0xa3, 0x2a, 0xa2, 0x70, 0xba, - 0x0e, 0xcd, 0x2c, 0xb4, 0xa8, 0xab, 0xbd, 0xfb, 0xcd, 0xc4, 0x0b, 0xac, 0xca, 0xaa, 0xa2, 0xb5, 0xcd, 0xc4, 0x4c, 0xbc, 0xff, 0xfe, 0xfd, 0xfc, 0x6d, 0xbc, 0x4c, 0xb4, 0x20, 0x0a, 0xc8, 0xfe, - 0x8d, 0xbc, 0x4c, 0xb4, 0x2a, 0x0a, 0x28, 0xbf, 0x8c, 0xbc, 0x4c, 0xb4, 0xaa, 0xea, 0xae, 0xba, 0x8c, 0xc4, 0x4d, 0xb4, 0xae, 0xfb, 0xeb, 0xaa, 0x4c, 0xbc, 0x6c, 0xb4, 0xaa, 0x77, 0x58, 0x7f, - 0x6c, 0xbc, 0x2b, 0xb4, 0x82, 0xaa, 0x6f, 0xe0, 0x8c, 0xbc, 0x2b, 0xb4, 0xfb, 0x7f, 0xff, 0x8b, 0x8d, 0xbc, 0x2b, 0xb4, 0xf5, 0xd5, 0x25, 0x77, 0x6c, 0xb4, 0xeb, 0xab, 0xa8, 0xa0, 0x58, 0x2a, - 0x8c, 0xbc, 0x2b, 0xb4, 0xab, 0xa5, 0xa9, 0x2a, 0x8d, 0xbc, 0x4c, 0xb4, 0xb3, 0x8a, 0x8a, 0x20, 0x0e, 0xcd, 0x4c, 0xb4, 0xff, 0xf1, 0xff, 0xff, 0xad, 0xc4, 0x2b, 0xb4, 0xa8, 0xf7, 0xea, 0xaa, - 0xcd, 0xc4, 0x4c, 0xbc, 0xf7, 0xb7, 0x8b, 0xea, 0x8d, 0xbc, 0x4a, 0xb4, 0x2a, 0xaa, 0xb8, 0xdf, 0x8d, 0xbc, 0xe8, 0xab, 0x00, 0x08, 0xaa, 0x5e, 0x8c, 0xbc, 0xa8, 0xa3, 0x88, 0xa0, 0xea, 0x57, - 0x6b, 0xbc, 0x69, 0xa3, 0x00, 0x00, 0x7f, 0x55, 0x8b, 0xc4, 0x28, 0x93, 0xaa, 0xa8, 0xf5, 0xff, 0x2a, 0xb4, 0x08, 0x93, 0x00, 0x78, 0xef, 0xba, 0x0a, 0xb4, 0x29, 0x93, 0x80, 0x5d, 0xbf, 0xaa, - 0xea, 0xab, 0xc6, 0x8a, 0xa6, 0xaa, 0x88, 0x0a, 0xcb, 0xa3, 0x08, 0x8b, 0xd7, 0xba, 0xaa, 0x08, 0xea, 0xab, 0x49, 0x93, 0xd7, 0xaf, 0xaa, 0xa0, 0xeb, 0xab, 0x49, 0x93, 0x75, 0xbe, 0xba, 0x2a, - 0xeb, 0xab, 0x09, 0x8b, 0xfd, 0xaa, 0xa8, 0x8a, 0xcb, 0xa3, 0x69, 0x93, 0xd5, 0xeb, 0xaa, 0x00, 0xeb, 0xa3, 0x69, 0x9b, 0xd5, 0xdf, 0xde, 0xa2, 0xea, 0xa3, 0x69, 0x9b, 0x75, 0xeb, 0xae, 0x28, - 0xea, 0xa3, 0x69, 0x9b, 0x5d, 0xaa, 0xaa, 0x80, 0xca, 0xa3, 0x49, 0x93, 0xde, 0xaa, 0x2a, 0xa0, 0xea, 0xa3, 0x49, 0x9b, 0x7a, 0xfe, 0xaa, 0x2a, 0x0b, 0xa4, 0x49, 0x9b, 0xd5, 0xfb, 0xea, 0xa8, - 0xea, 0xa3, 0x49, 0x9b, 0x6a, 0xeb, 0xa2, 0xab, 0xca, 0xa3, 0x69, 0x93, 0x77, 0x8a, 0x08, 0xaa, 0xeb, 0xa3, 0x48, 0x93, 0xed, 0xeb, 0x82, 0x88, 0xcb, 0xa3, 0x69, 0x9b, 0xbf, 0xfd, 0x02, 0x20, - 0xca, 0xa3, 0x69, 0x93, 0xfe, 0xb5, 0x02, 0x00, 0xeb, 0xa3, 0x89, 0x9b, 0x5d, 0x7f, 0xaa, 0x82, 0xeb, 0xab, 0x69, 0x93, 0x5f, 0xaf, 0x2a, 0x02, 0x0b, 0xac, 0x89, 0x9b, 0xd5, 0xff, 0xab, 0x82, - 0xeb, 0xab, 0x69, 0x93, 0x5e, 0xaa, 0x22, 0x28, 0x0b, 0xac, 0xaa, 0x9b, 0xd5, 0xfa, 0xaa, 0x0a, 0x0c, 0xac, 0xca, 0xa3, 0xd5, 0xfe, 0xfe, 0xe3, 0x6c, 0xb4, 0xca, 0xa3, 0xdd, 0x7d, 0x57, 0x37, - 0x8e, 0xbc, 0xcb, 0xa3, 0xe7, 0x8f, 0x3b, 0xfb, 0xce, 0xc4, 0xaa, 0x9b, 0x3e, 0x85, 0xff, 0xff, 0x4c, 0xb4, 0xeb, 0xa3, 0xff, 0xda, 0x7e, 0xff, 0x0c, 0xac, 0xea, 0xa3, 0x1b, 0x2f, 0x1a, 0x3f, - 0x4d, 0xb4, 0xca, 0xa3, 0xfa, 0xdf, 0xdf, 0x2f, 0x6c, 0xb4, 0xeb, 0xa3, 0xcd, 0xbd, 0xab, 0xab, 0x2c, 0xb4, 0x0b, 0xac, 0xad, 0xba, 0xfe, 0x8b, 0x4c, 0xb4, 0x0b, 0xac, 0xfe, 0xf7, 0x2d, 0xca, - 0x4c, 0xb4, 0x0b, 0xac, 0x57, 0x7c, 0xdf, 0x2f, 0xcd, 0xbc, 0xeb, 0xab, 0x15, 0x95, 0xb5, 0xf7, 0xad, 0xbc, 0x2b, 0xac, 0xff, 0xa1, 0xec, 0x67, 0x2e, 0xc5, 0x4c, 0xb4, 0x55, 0xbb, 0x2f, 0x75, - 0x0f, 0xc5, 0xeb, 0xa3, 0x7f, 0x7f, 0xbc, 0xaa, 0xee, 0xc4, 0x0b, 0xac, 0xe9, 0xef, 0xfe, 0x8e, 0x0f, 0xc5, 0x0b, 0xac, 0x7f, 0x7b, 0xdc, 0xd7, 0xcd, 0xbc, 0x0b, 0xac, 0xaa, 0x0f, 0x5a, 0xd6, - 0x0e, 0xc5, 0xca, 0xa3, 0xaa, 0xe8, 0xd5, 0xfc, 0xad, 0xbc, 0xeb, 0xab, 0x8c, 0x5a, 0xde, 0x0f, 0x6c, 0xb4, 0xeb, 0xab, 0xad, 0x2d, 0x83, 0xaa, 0x6d, 0xb4, 0xaa, 0xa3, 0xea, 0x7f, 0xf8, 0xfa, - 0x2c, 0xb4, 0xaa, 0x9b, 0xff, 0xf7, 0xbb, 0x82, 0x2c, 0xac, 0xaa, 0xa3, 0x5f, 0xbb, 0xff, 0x28, 0x4c, 0xb4, 0xaa, 0xa3, 0xf7, 0xf7, 0x3a, 0x2a, 0x4c, 0xb4, 0xca, 0xa3, 0xdd, 0x7f, 0x20, 0x80, - 0x2b, 0xac, 0xaa, 0xa3, 0x69, 0xab, 0xa2, 0x20, 0x2c, 0xac, 0xea, 0xa3, 0xa9, 0xfb, 0xfa, 0xa3, 0x0b, 0xac, 0xca, 0xa3, 0xa9, 0xa2, 0x28, 0x00, 0x4c, 0xb4, 0xca, 0xa3, 0xff, 0x57, 0x57, 0x2f, - 0x2c, 0xb4, 0x8a, 0x9b, 0xca, 0xdd, 0xaa, 0x00, 0x2c, 0xb4, 0xca, 0x9b, 0x09, 0xaa, 0x2a, 0x00, 0x4b, 0xb4, 0x6a, 0x9b, 0xaa, 0xaa, 0x72, 0xbe, 0x2c, 0xb4, 0xaa, 0xa3, 0x0a, 0x2b, 0x82, 0x7f, - 0x2c, 0xb4, 0xaa, 0xa3, 0x00, 0xaa, 0xbb, 0x99, 0x0b, 0xb4, 0x88, 0x9b, 0x08, 0xa8, 0xea, 0x6a, 0x6c, 0xbc, 0xaa, 0xa3, 0x8a, 0xdf, 0x75, 0xf5, 0x2c, 0xb4, 0x48, 0x93, 0x28, 0xea, 0x6a, 0xe2, - 0x6c, 0xb4, 0xe7, 0x82, 0xaa, 0xaf, 0x2d, 0x02, 0x6d, 0xbc, 0x69, 0x9b, 0xa9, 0xa0, 0x82, 0xa8, 0x2b, 0xb4, 0xa9, 0xa3, 0x0d, 0x6b, 0xae, 0x8e, 0x4c, 0xb4, 0x46, 0x82, 0x00, 0x82, 0x9e, 0x02, - 0x4c, 0xb4, 0x8a, 0xa3, 0xaa, 0xef, 0x2d, 0x00, 0x8c, 0xbc, 0xa4, 0x61, 0xa2, 0x02, 0x80, 0x5c, 0xac, 0xc4, 0x01, 0x51, 0x0a, 0xa0, 0xb7, 0xab, 0x4d, 0xbc, 0xc2, 0x48, 0x7a, 0x62, 0xc2, 0xa0, - 0x65, 0x59, 0xa1, 0x38, 0xf5, 0xff, 0xbf, 0x2a, 0x85, 0x59, 0xa2, 0x38, 0x55, 0xff, 0xfe, 0x80, 0x23, 0x41, 0xc2, 0x38, 0xbd, 0xea, 0xfa, 0x2a, 0xc2, 0x40, 0x44, 0x39, 0xfa, 0x8a, 0xff, 0x5a, - 0x46, 0x6a, 0x03, 0x39, 0xff, 0xf5, 0xad, 0x2b, 0xcb, 0x9b, 0xa4, 0x59, 0xf5, 0xfd, 0xbf, 0x2f, 0x0c, 0xac, 0x87, 0x7a, 0xbd, 0xab, 0x02, 0x02, 0x2c, 0xb4, 0xab, 0xa3, 0xad, 0xaa, 0x8a, 0xe8, - 0x6c, 0xb4, 0x0b, 0xac, 0xbd, 0xad, 0x2f, 0xb6, 0x8d, 0xc4, 0x23, 0x41, 0x00, 0xc0, 0x60, 0x50, 0x43, 0x49, 0x04, 0x29, 0xf8, 0xf5, 0xff, 0xf7, 0xc5, 0x49, 0xe3, 0x28, 0x0b, 0xab, 0xaf, 0xdd, - 0xab, 0xc4, 0x0b, 0xb4, 0xff, 0xff, 0x2b, 0x4b, 0xca, 0xcc, 0xc1, 0x40, 0x00, 0xe0, 0x5c, 0x55, 0x2b, 0xb4, 0x45, 0x51, 0x20, 0xa9, 0x29, 0x0b, 0x6c, 0xbc, 0x0b, 0xac, 0x7d, 0x79, 0x2d, 0xab, - 0x4c, 0xbc, 0x0b, 0xb4, 0x09, 0x8a, 0x0a, 0xba, 0x2b, 0xbc, 0x6c, 0xb4, 0xea, 0x8a, 0xe2, 0xef, 0x6c, 0xbc, 0x0b, 0xb4, 0xb7, 0xba, 0xaa, 0x0a, 0x6c, 0xbc, 0x2b, 0xb4, 0xff, 0xe2, 0x5f, 0x57, - 0x4c, 0xbc, 0x0b, 0xb4, 0xe0, 0xea, 0xe3, 0xfb, 0x4c, 0xbc, 0x0b, 0xb4, 0xcb, 0x9f, 0xff, 0x2f, 0x4c, 0xbc, 0xeb, 0xb3, 0x6a, 0x8f, 0xaa, 0x00, 0x4c, 0xbc, 0x0b, 0xb4, 0x7f, 0x3a, 0x3f, 0x3b, - 0x6c, 0xc4, 0x2b, 0xb4, 0xff, 0xee, 0xab, 0xfa, 0x6b, 0xbc, 0x6a, 0xa3, 0x9e, 0xba, 0x80, 0x00, 0x4c, 0xbc, 0xca, 0xab, 0xa8, 0x26, 0x90, 0xe0, 0x6c, 0xc4, 0xeb, 0xb3, 0xdf, 0xef, 0x8b, 0xef, - 0x4c, 0xbc, 0xea, 0xab, 0x02, 0x89, 0xae, 0x00, 0x8d, 0xc4, 0x2b, 0xb4, 0x0b, 0xab, 0xfd, 0xfd, 0x8c, 0xc4, 0x0b, 0xac, 0x70, 0x50, 0x82, 0xaa, 0xad, 0xc4, 0xeb, 0xab, 0x0b, 0x82, 0x9f, 0xaa, - 0x8d, 0xc4, 0x4c, 0xb4, 0xaa, 0x23, 0xff, 0xdb, 0xad, 0xc4, 0x0b, 0xb4, 0xaa, 0x00, 0xaa, 0x7a, 0x8c, 0xc4, 0x4b, 0xb4, 0xfe, 0xfe, 0xe2, 0xff, 0xee, 0xcc, 0x4b, 0xb4, 0xa3, 0x7b, 0x5f, 0x55, - 0x8d, 0xc4, 0x2b, 0xb4, 0x7a, 0x3f, 0xfb, 0xff, 0x6c, 0xbc, 0xeb, 0xab, 0xaf, 0xa0, 0x5e, 0xa8, 0x6d, 0xbc, 0x2b, 0xac, 0x03, 0xbb, 0x8d, 0xbf, 0xad, 0xc4, 0xea, 0xab, 0xbb, 0xfa, 0xcf, 0xdf, - 0x8c, 0xbc, 0x0b, 0xac, 0x0a, 0xaa, 0x5f, 0x8b, 0x8c, 0xbc, 0x2b, 0xb4, 0xaa, 0x0a, 0xa9, 0xff, 0x50, 0xd5, 0x4b, 0xb4, 0xfd, 0x83, 0x55, 0x55, 0x0d, 0xc5, 0x4c, 0xb4, 0xff, 0x7c, 0x75, 0xe9, - 0x6c, 0xbc, 0x4b, 0xb4, 0xa2, 0x23, 0xac, 0xd7, 0x6c, 0xbc, 0x2b, 0xb4, 0x2e, 0xaa, 0x7e, 0xff, 0x6c, 0xbc, 0x2b, 0xb4, 0xb6, 0xbf, 0xfd, 0x2a, 0x6b, 0xbc, 0x4c, 0xb4, 0x2b, 0xed, 0xea, 0x0a, - 0x6c, 0xbc, 0x0b, 0xb4, 0x00, 0x28, 0x82, 0x7e, 0x8c, 0xbc, 0x2b, 0xb4, 0x8a, 0xab, 0xfd, 0x75, 0x8c, 0xbc, 0x4b, 0xb4, 0xa3, 0xbf, 0xbd, 0xd5, 0x8c, 0xbc, 0xca, 0xab, 0x80, 0x5a, 0xfa, 0xaa, - 0x6b, 0xbc, 0xcb, 0xa3, 0xa8, 0xfd, 0xfa, 0xfa, 0x2b, 0xac, 0x49, 0x9b, 0x7a, 0x2a, 0x20, 0x00, 0x4b, 0xb4, 0x8a, 0xa3, 0x7d, 0xfe, 0xaa, 0x88, 0x2b, 0xac, 0x89, 0xa3, 0xf5, 0xbf, 0xaa, 0xa8, - 0x0b, 0xb4, 0xaa, 0xa3, 0xb5, 0xbb, 0x0a, 0x2a, 0x2b, 0xb4, 0xaa, 0xa3, 0x7f, 0xaa, 0xa2, 0x88, 0x0b, 0xb4, 0xca, 0xab, 0xa5, 0xae, 0x82, 0xb8, 0x0b, 0xb4, 0xea, 0xa3, 0x7f, 0xba, 0xba, 0xd7, - 0x2b, 0xac, 0xca, 0xa3, 0xff, 0x8a, 0x77, 0xef, 0x0b, 0xac, 0xca, 0xa3, 0xab, 0x08, 0xff, 0xfe, 0x0b, 0xac, 0xca, 0xa3, 0xbe, 0xa8, 0xb2, 0xff, 0x0b, 0xac, 0xaa, 0xa3, 0xca, 0xe8, 0xda, 0xa2, - 0x0b, 0xac, 0xaa, 0xa3, 0xbe, 0xa7, 0xa8, 0x00, 0xeb, 0xab, 0xca, 0xa3, 0xef, 0x25, 0xdc, 0xf8, 0xeb, 0xab, 0xaa, 0xa3, 0xdb, 0x88, 0xae, 0x88, 0x0b, 0xac, 0xaa, 0xa3, 0xd7, 0xbf, 0xaa, 0x82, - 0x0b, 0xac, 0x89, 0x9b, 0x7a, 0xaa, 0xaa, 0xb8, 0xeb, 0xab, 0xca, 0x9b, 0xfe, 0xaa, 0x2b, 0xea, 0x0b, 0xac, 0xca, 0xa3, 0x75, 0xeb, 0xa3, 0x3f, 0x0b, 0xac, 0xaa, 0x9b, 0x57, 0x8a, 0x08, 0x00, - 0x2b, 0xac, 0xaa, 0x9b, 0xfd, 0xbb, 0x2b, 0xde, 0xad, 0xb4, 0xcb, 0xa3, 0x55, 0xfd, 0x3a, 0x7f, 0x4c, 0xac, 0x8a, 0x9b, 0xf7, 0xa0, 0xf8, 0xef, 0x4c, 0xb4, 0xca, 0xa3, 0x55, 0x5f, 0xfd, 0xcb, - 0x0c, 0xac, 0xca, 0xa3, 0x79, 0xff, 0x1f, 0x8a, 0xae, 0xbc, 0xca, 0xa3, 0x55, 0x5f, 0x7f, 0xf0, 0x4b, 0xb4, 0xca, 0xa3, 0xff, 0xea, 0xfd, 0x78, 0x6c, 0xb4, 0xcb, 0xa3, 0x3f, 0x3e, 0x5f, 0xaf, - 0x4b, 0xac, 0x8a, 0x9b, 0xf8, 0xa8, 0xe9, 0x80, 0x4c, 0xb4, 0x69, 0x93, 0xaa, 0xa8, 0xea, 0xd7, 0xad, 0xbc, 0x8a, 0x9b, 0xde, 0x0b, 0xff, 0xfd, 0x4c, 0xac, 0xcb, 0xa3, 0xa7, 0x8b, 0x3a, 0x2f, - 0xad, 0xbc, 0x0b, 0xac, 0xf3, 0xd5, 0xdf, 0x5f, 0xad, 0xbc, 0xeb, 0xab, 0xd7, 0x37, 0xd5, 0xff, 0xad, 0xbc, 0x0b, 0xac, 0xd6, 0x94, 0x7f, 0xe7, 0x6d, 0xb4, 0xeb, 0xa3, 0xfc, 0xd1, 0xaf, 0xaa, - 0x6c, 0xb4, 0xeb, 0xab, 0xad, 0xff, 0x7a, 0xb8, 0xcd, 0xbc, 0x0b, 0xac, 0x5f, 0x55, 0x75, 0xc9, 0x4c, 0xb4, 0xca, 0xa3, 0x8a, 0x0a, 0x7a, 0xaa, 0xac, 0xbc, 0xeb, 0xab, 0xff, 0xd7, 0x0d, 0xff, - 0x4c, 0xb4, 0x0b, 0xac, 0xeb, 0xde, 0xa4, 0x7d, 0x0e, 0xc5, 0x0b, 0xac, 0xcd, 0xfd, 0x5a, 0xfd, 0x4b, 0xb4, 0xca, 0xa3, 0xb8, 0xa0, 0xab, 0x7e, 0xad, 0xbc, 0x0b, 0xac, 0x27, 0xd7, 0xef, 0x73, - 0xcd, 0xbc, 0xeb, 0xa3, 0xc0, 0xfe, 0xff, 0x5d, 0x6d, 0xb4, 0xcb, 0xa3, 0xde, 0xe2, 0xa8, 0xbf, 0xcd, 0xbc, 0xcb, 0xa3, 0xfd, 0xaf, 0x2b, 0xef, 0x0f, 0xc5, 0xeb, 0xa3, 0xcf, 0xbf, 0xdf, 0xf5, - 0xed, 0xc4, 0x0b, 0xac, 0xe7, 0x7c, 0x55, 0x7d, 0x8c, 0xb4, 0x0b, 0xac, 0x8a, 0xeb, 0x5f, 0xdf, 0x0e, 0xcd, 0x2c, 0xb4, 0x55, 0x55, 0x71, 0xf5, 0x6c, 0xbc, 0x0b, 0xac, 0x72, 0x5d, 0x5f, 0x5e, - 0x6c, 0xbc, 0x0b, 0xac, 0xfb, 0x57, 0xa5, 0xca, 0x6c, 0xb4, 0x0b, 0xac, 0x4b, 0xa2, 0xfd, 0xa3, 0x4b, 0xb4, 0xca, 0xab, 0x80, 0xe2, 0x78, 0x9a, 0x4c, 0xb4, 0xea, 0xab, 0xc0, 0x8b, 0xbd, 0xbb, - 0x4c, 0xb4, 0xcb, 0xa3, 0xab, 0xfa, 0x78, 0xfe, 0x2b, 0xac, 0xca, 0xa3, 0xaa, 0xa8, 0xdf, 0xaa, 0x4c, 0xb4, 0xaa, 0x9b, 0xa0, 0x8a, 0xdf, 0xff, 0x2c, 0xb4, 0xaa, 0x9b, 0xaa, 0xe3, 0xeb, 0xed, - 0x4b, 0xb4, 0x6a, 0x93, 0x22, 0xea, 0xaf, 0xa7, 0x0b, 0xb4, 0xca, 0xa3, 0xa2, 0xdf, 0xaf, 0x7f, 0x0b, 0xac, 0xaa, 0xa3, 0x88, 0x5f, 0xab, 0xf6, 0x2b, 0xac, 0x69, 0x9b, 0xfd, 0x8a, 0x8b, 0xaa, - 0x2b, 0xb4, 0x8a, 0x9b, 0x8a, 0xe2, 0x5e, 0xd6, 0x0b, 0xac, 0xaa, 0x9b, 0x4b, 0x89, 0x81, 0xe9, 0x4b, 0xb4, 0x89, 0x93, 0x8b, 0xfb, 0xd7, 0xff, 0x6c, 0xbc, 0x69, 0x93, 0xf7, 0x2b, 0xaf, 0x8b, - 0x8c, 0xbc, 0xcb, 0xab, 0x96, 0x88, 0xaf, 0xa9, 0xac, 0xc4, 0xeb, 0xab, 0xff, 0x2a, 0xd5, 0xf7, 0x8d, 0xbc, 0x2c, 0xb4, 0xd7, 0x29, 0x2d, 0xff, 0x8d, 0xc4, 0xc5, 0x8a, 0x00, 0x00, 0xc8, 0x7a, - 0x6b, 0xb4, 0x22, 0x59, 0x80, 0xf8, 0xf5, 0xaa, 0x28, 0x8b, 0x45, 0x72, 0xae, 0xad, 0x02, 0x00, 0x4c, 0xbc, 0xe7, 0x8a, 0x3d, 0xad, 0x0f, 0x8d, 0x4c, 0xbc, 0x20, 0x51, 0xa0, 0x80, 0x40, 0x70, - 0x24, 0x72, 0x02, 0x49, 0xab, 0xe0, 0x5d, 0x5f, 0x45, 0x72, 0x02, 0x49, 0x62, 0x63, 0xfb, 0xf5, 0xe7, 0x82, 0xe2, 0x38, 0x55, 0x55, 0xd5, 0x2d, 0xc6, 0x82, 0x64, 0x41, 0xd5, 0xbf, 0x0b, 0x00, - 0x0c, 0xac, 0x05, 0x62, 0xfd, 0xff, 0xab, 0x2b, 0x2c, 0xb4, 0xa8, 0x72, 0xad, 0x02, 0x02, 0x00, 0x2c, 0xb4, 0xeb, 0xab, 0x2b, 0x36, 0x08, 0x88, 0x2c, 0xb4, 0x0b, 0xac, 0xea, 0x08, 0xaa, 0x2d, - 0xad, 0xc4, 0xc1, 0x30, 0x00, 0x00, 0x60, 0x58, 0x2b, 0xc4, 0xe3, 0x28, 0x5c, 0x57, 0x55, 0x55, 0x64, 0x39, 0xe3, 0x20, 0xaf, 0x3f, 0xfd, 0xef, 0x45, 0x41, 0x03, 0x31, 0xef, 0x26, 0x95, 0xd5, - 0x6c, 0xbc, 0x21, 0x51, 0x60, 0x80, 0x00, 0x00, 0x6c, 0xbc, 0xc5, 0x40, 0xd5, 0x0a, 0x00, 0x00, 0x4c, 0xbc, 0xcb, 0xa3, 0xeb, 0xdc, 0x8a, 0x88, 0x6c, 0xbc, 0x0b, 0xb4, 0xfd, 0xff, 0xaf, 0xaa, - 0x6c, 0xbc, 0x2b, 0xb4, 0xab, 0xa3, 0x6b, 0xfc, 0x6b, 0xbc, 0x45, 0x7a, 0x00, 0x00, 0x40, 0xb0, 0x4b, 0xb4, 0xa7, 0x82, 0x80, 0xb6, 0x29, 0x00, 0x4c, 0xbc, 0x0b, 0xac, 0xfd, 0x2d, 0x2b, 0xea, - 0x6c, 0xbc, 0x49, 0x93, 0xa2, 0xa8, 0x4a, 0x98, 0x6c, 0xbc, 0x29, 0x93, 0x02, 0x00, 0x29, 0x00, 0x6c, 0xbc, 0x2b, 0xb4, 0x8f, 0xaf, 0xa7, 0xb7, 0x6c, 0xc4, 0x2b, 0xb4, 0xff, 0xfb, 0xfa, 0xfa, - 0x4b, 0xbc, 0x2c, 0xb4, 0xa2, 0x80, 0xbd, 0xbe, 0x4c, 0xbc, 0xeb, 0xb3, 0xae, 0xb8, 0x98, 0xa2, 0x4b, 0xbc, 0x2c, 0xb4, 0xeb, 0x7e, 0xda, 0xaf, 0x6c, 0xbc, 0x2b, 0xb4, 0x5d, 0x1f, 0x83, 0xdf, - 0x6c, 0xbc, 0x2b, 0xb4, 0xf8, 0xbe, 0xe3, 0xaa, 0x6c, 0xc4, 0x2b, 0xb4, 0xdf, 0xf7, 0xeb, 0xea, 0x6c, 0xbc, 0x2b, 0xb4, 0xbf, 0xea, 0xcb, 0xea, 0x4c, 0xbc, 0xeb, 0xab, 0x0e, 0xb7, 0xaa, 0x2a, - 0x6c, 0xbc, 0x0b, 0xb4, 0xa2, 0xc2, 0xff, 0xa9, 0x6b, 0xbc, 0x2c, 0xb4, 0xfb, 0xeb, 0xff, 0xea, 0x6c, 0xbc, 0xeb, 0xab, 0x2a, 0xa8, 0xfb, 0x57, 0x4c, 0xbc, 0x0b, 0xac, 0x38, 0xe8, 0xad, 0x7d, - 0x6c, 0xbc, 0xa9, 0x9b, 0x02, 0xaa, 0xaa, 0x7a, 0x8c, 0xbc, 0xca, 0xa3, 0xac, 0xa8, 0xaf, 0xbd, 0x4c, 0xbc, 0xea, 0xab, 0x0a, 0xae, 0xaa, 0x09, 0x6c, 0xbc, 0xca, 0xa3, 0x22, 0xaa, 0xa6, 0xac, - 0x6c, 0xbc, 0xea, 0xab, 0x72, 0x2b, 0xbb, 0xaf, 0x6c, 0xbc, 0x2b, 0xb4, 0xd5, 0x8f, 0x55, 0xb7, 0x6b, 0xbc, 0x2c, 0xb4, 0x7f, 0x7b, 0x3d, 0x3b, 0x8c, 0xbc, 0x0b, 0xac, 0xe9, 0xaa, 0xe0, 0xaa, - 0xcd, 0xc4, 0xaa, 0xa3, 0xee, 0x2a, 0xbd, 0xaa, 0x6c, 0xbc, 0xeb, 0xab, 0xcb, 0xea, 0x7e, 0xb8, 0xcd, 0xc4, 0xeb, 0xab, 0x0f, 0x5f, 0xfd, 0xff, 0x4b, 0xbc, 0x0c, 0xac, 0xfa, 0xf7, 0xaa, 0x80, - 0x6c, 0xbc, 0xca, 0xab, 0xd5, 0x0a, 0xfb, 0xf8, 0x8c, 0xbc, 0xaa, 0xab, 0xaa, 0xa7, 0x8a, 0xf7, 0x6c, 0xbc, 0x2b, 0xac, 0xfb, 0xed, 0x05, 0xaf, 0x4b, 0xb4, 0xea, 0xab, 0xa0, 0xaa, 0xe0, 0x5e, - 0x4c, 0xb4, 0xa9, 0xa3, 0xaa, 0xa8, 0xe7, 0xab, 0x4c, 0xb4, 0x49, 0x9b, 0x0a, 0x02, 0x37, 0x0a, 0x4b, 0xb4, 0xca, 0xab, 0xa8, 0x62, 0xff, 0xaa, 0xee, 0xc4, 0xca, 0xa3, 0x5f, 0xf5, 0x83, 0xff, - 0x6c, 0xb4, 0x0b, 0xac, 0x55, 0xff, 0x2a, 0xfa, 0x2e, 0xcd, 0xeb, 0xab, 0xf5, 0x5d, 0x3f, 0xff, 0x2e, 0xcd, 0x0b, 0xac, 0x55, 0x55, 0x58, 0x57, 0x4c, 0xb4, 0xcb, 0xa3, 0x7f, 0xaa, 0xa0, 0xa2, - 0x0d, 0xc5, 0xca, 0xa3, 0x55, 0xbf, 0xfc, 0xff, 0xcd, 0xbc, 0x69, 0x9b, 0xbf, 0x0a, 0xdf, 0xff, 0xcd, 0xc4, 0xca, 0xa3, 0xdd, 0xfc, 0x5f, 0xf7, 0x2b, 0xb4, 0x6a, 0x9b, 0xaa, 0x8a, 0xdf, 0xaa, - 0x2c, 0xb4, 0xaa, 0xa3, 0xfa, 0x95, 0xbd, 0x2e, 0xad, 0xbc, 0x8a, 0x9b, 0xfd, 0x2f, 0xff, 0xaf, 0x8d, 0xbc, 0xca, 0xa3, 0x35, 0xfb, 0xff, 0xfb, 0x6d, 0xb4, 0xaa, 0xa3, 0xfa, 0xd5, 0xf7, 0x02, - 0x2c, 0xac, 0x28, 0x8b, 0xaa, 0x7a, 0xe8, 0x00, 0x2b, 0xac, 0x8a, 0xa3, 0x82, 0x7a, 0xaa, 0x2a, 0x2b, 0xac, 0xca, 0x9b, 0xa8, 0xfd, 0xe3, 0xe9, 0x2c, 0xac, 0x89, 0x9b, 0x60, 0xfe, 0xa3, 0x80, - 0x4c, 0xb4, 0x29, 0x8b, 0xa5, 0x2a, 0xaa, 0x00, 0x4c, 0xb4, 0xeb, 0xa3, 0xb5, 0xaf, 0xab, 0xa8, 0x6d, 0xbc, 0x0b, 0xac, 0x79, 0xdd, 0xa3, 0xeb, 0x6c, 0xb4, 0x8a, 0xa3, 0xaa, 0x88, 0x5e, 0x00, - 0x6c, 0xbc, 0xeb, 0xa3, 0xd2, 0xb2, 0xef, 0xba, 0x6c, 0xb4, 0xcb, 0xa3, 0xfa, 0xaa, 0x07, 0xca, 0xad, 0xbc, 0xab, 0x9b, 0xde, 0x82, 0xaa, 0xbf, 0x4c, 0xb4, 0xaa, 0x9b, 0x9d, 0xa8, 0x20, 0x0e, - 0x8c, 0xb4, 0xeb, 0xa3, 0xff, 0x2b, 0x5f, 0xeb, 0x6c, 0xb4, 0xeb, 0xa3, 0xbe, 0xbc, 0x29, 0x7f, 0x4c, 0xb4, 0x8a, 0x9b, 0xaa, 0x02, 0xaa, 0x0d, 0x4c, 0xb4, 0xcb, 0x9b, 0xaa, 0xba, 0x7e, 0xb0, - 0x6d, 0xb4, 0xeb, 0xab, 0xdc, 0xeb, 0xe2, 0xbd, 0xac, 0xbc, 0xeb, 0xab, 0xff, 0x37, 0x77, 0xf7, 0x6c, 0xb4, 0xaa, 0xa3, 0xaf, 0xe0, 0xaa, 0x5a, 0x8c, 0xbc, 0xca, 0xa3, 0x3a, 0xa5, 0xea, 0xaf, - 0xee, 0xc4, 0xea, 0xab, 0xdc, 0xf7, 0xff, 0x5f, 0x4c, 0xb4, 0xeb, 0xab, 0xfd, 0xf0, 0xfe, 0xbd, 0x6c, 0xbc, 0x0b, 0xac, 0xd5, 0xbb, 0x2f, 0x73, 0x4c, 0xb4, 0xeb, 0xab, 0x7a, 0x08, 0xae, 0xae, - 0x6c, 0xb4, 0xeb, 0xab, 0x2b, 0xf2, 0xfe, 0x7a, 0xce, 0xbc, 0xeb, 0xab, 0xf8, 0xff, 0xd5, 0xdd, 0x2c, 0xb4, 0xeb, 0xa3, 0xaf, 0xba, 0x2e, 0xea, 0x4c, 0xb4, 0xea, 0xab, 0xb8, 0xf6, 0x0b, 0x2f, - 0x4c, 0xb4, 0x0b, 0xac, 0x2b, 0x7a, 0xa2, 0x6f, 0x6c, 0xb4, 0xeb, 0xab, 0x3c, 0xff, 0x5f, 0xf7, 0x6c, 0xb4, 0xca, 0xa3, 0xbe, 0xa8, 0xbd, 0xaf, 0x6c, 0xb4, 0x0b, 0xac, 0xfd, 0x6c, 0xdf, 0xf7, - 0x6c, 0xb4, 0x0b, 0xac, 0xac, 0xf5, 0xe7, 0xfb, 0x4c, 0xb4, 0xca, 0xa3, 0x82, 0x78, 0xae, 0xfa, 0xac, 0xbc, 0xeb, 0xab, 0x2f, 0xf5, 0xd7, 0xf5, 0x4c, 0xb4, 0xa9, 0x9b, 0x08, 0x08, 0x6a, 0x2b, - 0x4c, 0xb4, 0xeb, 0xa3, 0xa8, 0x7a, 0xbf, 0x0b, 0x4c, 0xb4, 0xeb, 0xab, 0xe9, 0xfe, 0xfa, 0x80, 0x6c, 0xbc, 0x8a, 0x9b, 0xdf, 0x37, 0xaa, 0xaa, 0x4c, 0xb4, 0xaa, 0xa3, 0x0a, 0x8a, 0xfa, 0x5e, - 0x4b, 0xb4, 0xaa, 0x9b, 0xb0, 0xe0, 0xa5, 0xfd, 0x2b, 0xac, 0x89, 0xa3, 0x88, 0xb7, 0xcf, 0xba, 0x4c, 0xb4, 0x60, 0x59, 0x00, 0x00, 0xa8, 0x90, 0x0b, 0xac, 0xaa, 0xa3, 0xaa, 0x82, 0xa7, 0x69, - 0x0b, 0xac, 0xaa, 0x9b, 0xae, 0xff, 0x08, 0x0d, 0x2b, 0xac, 0x8a, 0x9b, 0xfa, 0x27, 0xaa, 0x28, 0x0b, 0xac, 0x8a, 0x9b, 0xca, 0xa2, 0xaa, 0x5e, 0xeb, 0xa3, 0x8a, 0x9b, 0x0b, 0xbe, 0xa5, 0xc3, - 0x0b, 0xa4, 0x8a, 0x9b, 0xb6, 0x55, 0xbe, 0x0f, 0x2c, 0xac, 0xaa, 0xa3, 0x4f, 0xfa, 0xfa, 0xa8, 0x2c, 0xac, 0xca, 0xa3, 0x9b, 0xad, 0xea, 0xa0, 0x4c, 0xb4, 0xab, 0xa3, 0xe0, 0xba, 0x2d, 0x2a, - 0x4c, 0xb4, 0xcb, 0xab, 0xad, 0x8a, 0xa2, 0x0a, 0x4c, 0xbc, 0xe6, 0x8a, 0x0a, 0x00, 0x00, 0x40, 0xac, 0xc4, 0xa3, 0x69, 0x80, 0xe8, 0x7a, 0x5a, 0x47, 0x9b, 0x83, 0x61, 0x00, 0x00, 0x57, 0xad, - 0x48, 0x9b, 0x25, 0x72, 0x00, 0xf8, 0x95, 0x2a, 0x89, 0x9b, 0xa6, 0x82, 0x2e, 0x09, 0xea, 0xaf, 0x2b, 0xb4, 0xe1, 0x48, 0x82, 0xc2, 0x42, 0x62, 0x63, 0x8a, 0xc2, 0x38, 0xfc, 0xdf, 0xdf, 0x55, - 0x43, 0x51, 0xe2, 0x40, 0xe0, 0xee, 0x6f, 0xeb, 0x63, 0x51, 0xe2, 0x40, 0x05, 0xb9, 0xdf, 0x2b, 0xc6, 0x82, 0x02, 0x51, 0x8d, 0xeb, 0x7f, 0xff, 0x47, 0x8b, 0x42, 0x51, 0xaf, 0xaf, 0xf5, 0x0b, - 0x4b, 0xb4, 0x07, 0x8b, 0x09, 0x09, 0x81, 0x8b, 0x4b, 0xb4, 0x06, 0x93, 0x00, 0xa0, 0xaa, 0x72, 0x2b, 0xac, 0x24, 0x7a, 0x00, 0x80, 0xaa, 0xad, 0xad, 0xc4, 0xe2, 0x38, 0x02, 0x80, 0x70, 0x5c, - 0xaa, 0xa3, 0xc2, 0x20, 0x54, 0x55, 0x55, 0x55, 0x44, 0x31, 0xe3, 0x20, 0xbb, 0x2b, 0x8f, 0xa9, 0x24, 0x31, 0xc3, 0x20, 0x02, 0xca, 0xc2, 0x56, 0x04, 0x29, 0xc3, 0x20, 0x08, 0x00, 0xa0, 0x75, - 0x6c, 0xbc, 0x2b, 0xb4, 0xfe, 0x0a, 0xa2, 0xbf, 0x6c, 0xbc, 0x2b, 0xb4, 0xfa, 0xfe, 0xfa, 0xe0, 0x6c, 0xbc, 0x0b, 0xb4, 0xad, 0xfe, 0xaa, 0x8a, 0x6c, 0xbc, 0x2b, 0xb4, 0x3f, 0x6b, 0x7f, 0xeb, - 0x6c, 0xbc, 0x2b, 0xb4, 0xbf, 0xad, 0xae, 0x6f, 0x6c, 0xbc, 0x48, 0x93, 0x20, 0x00, 0x00, 0x42, 0x6c, 0xbc, 0x87, 0x7a, 0x00, 0x00, 0x28, 0x09, 0x4c, 0xbc, 0xeb, 0xb3, 0xba, 0xaa, 0xae, 0x39, - 0x4c, 0xbc, 0x2b, 0xb4, 0xbc, 0x0e, 0x0f, 0x01, 0x6c, 0xbc, 0x2b, 0xb4, 0xc0, 0xaa, 0x76, 0x62, 0x6c, 0xbc, 0x2b, 0xb4, 0x2d, 0xda, 0xbf, 0xa5, 0x4c, 0xbc, 0x0b, 0xb4, 0x00, 0xfc, 0x3a, 0x0e, - 0x6c, 0xc4, 0x2b, 0xb4, 0xfe, 0xf7, 0xba, 0xab, 0x6b, 0xc4, 0x2c, 0xb4, 0xff, 0xba, 0xbb, 0xaa, 0x8c, 0xbc, 0x2b, 0xb4, 0xfd, 0xfe, 0xfa, 0xec, 0x8d, 0xc4, 0x4b, 0xb4, 0xff, 0xff, 0xfd, 0xeb, - 0x8d, 0xc4, 0x2b, 0xb4, 0xff, 0xba, 0xb7, 0x8b, 0x8c, 0xc4, 0x2b, 0xb4, 0xab, 0xaa, 0xef, 0xee, 0x4c, 0xbc, 0x0b, 0xb4, 0xb8, 0x5c, 0x02, 0x0b, 0x6c, 0xbc, 0x2b, 0xb4, 0x0d, 0xaf, 0xab, 0xaa, - 0x6c, 0xbc, 0x0b, 0xb4, 0x50, 0xa0, 0xa2, 0x08, 0x6c, 0xc4, 0xca, 0xa3, 0xde, 0xa2, 0xaa, 0xaa, 0x4c, 0xbc, 0xca, 0xa3, 0xaf, 0xfd, 0xfa, 0xa8, 0x2b, 0xb4, 0x48, 0x9b, 0x62, 0x9a, 0xa2, 0x80, - 0x2b, 0xb4, 0x8a, 0xa3, 0xf5, 0xbf, 0x3f, 0x2a, 0x6c, 0xbc, 0xeb, 0xab, 0xfd, 0x8f, 0xf7, 0xf7, 0x6c, 0xbc, 0xeb, 0xab, 0x8b, 0xfe, 0xff, 0xf7, 0x4c, 0xb4, 0xea, 0xab, 0xe5, 0x0f, 0xcd, 0xb2, - 0x4c, 0xbc, 0x0b, 0xb4, 0xe5, 0xaa, 0xcb, 0xe2, 0x4c, 0xbc, 0x0a, 0xac, 0xfa, 0xbe, 0x5e, 0xde, 0x6c, 0xbc, 0x0b, 0xb4, 0x4a, 0xa5, 0xff, 0xfa, 0x4c, 0xbc, 0x0a, 0xac, 0x06, 0xba, 0xfe, 0xfe, - 0x4c, 0xbc, 0x0b, 0xac, 0x96, 0xbf, 0xde, 0xdf, 0x6c, 0xbc, 0xea, 0xab, 0xa2, 0xfa, 0xfd, 0xab, 0x4c, 0xbc, 0xea, 0xab, 0x8b, 0xab, 0x22, 0xdc, 0x4c, 0xbc, 0x0a, 0xac, 0xaa, 0xde, 0xfe, 0xb7, - 0x4c, 0xbc, 0xea, 0xa3, 0x7e, 0xbe, 0xca, 0xbb, 0x4c, 0xb4, 0x0a, 0xac, 0xbb, 0xbb, 0xa0, 0xd5, 0x6c, 0xbc, 0x0a, 0xac, 0x8b, 0xfb, 0x7d, 0x77, 0x4c, 0xb4, 0xea, 0xab, 0xae, 0x22, 0xfd, 0xfd, - 0x6c, 0xbc, 0x0b, 0xac, 0x2f, 0xbf, 0x57, 0xbf, 0x6c, 0xbc, 0x0a, 0xac, 0xd5, 0x2e, 0xff, 0x57, 0x6c, 0xbc, 0xeb, 0xab, 0xee, 0xf8, 0xd7, 0xbf, 0x6c, 0xbc, 0xeb, 0xab, 0xc3, 0xff, 0xaf, 0x7f, - 0x6d, 0xbc, 0xeb, 0xab, 0xde, 0xaf, 0xaf, 0xb3, 0x6c, 0xb4, 0xeb, 0xab, 0xdf, 0xab, 0xfe, 0xa8, 0x6c, 0xb4, 0x0b, 0xac, 0x39, 0xff, 0xab, 0xff, 0x8d, 0xbc, 0x0b, 0xac, 0xfa, 0x1c, 0xaf, 0xfe, - 0x8c, 0xbc, 0xaa, 0xa3, 0xaa, 0xee, 0xde, 0x8b, 0x4c, 0xb4, 0xeb, 0xa3, 0xfd, 0xab, 0xe2, 0xb3, 0x6c, 0xb4, 0x0b, 0xac, 0xcd, 0x6f, 0xb7, 0x5f, 0x4c, 0xb4, 0x0a, 0xac, 0xc7, 0xef, 0x57, 0x55, - 0x4c, 0xb4, 0xeb, 0xab, 0xae, 0xac, 0xf5, 0x69, 0x8d, 0xbc, 0xca, 0xa3, 0xea, 0xca, 0xff, 0xdf, 0x6c, 0xb4, 0xa9, 0x9b, 0xaa, 0xaa, 0x7e, 0x2f, 0x6b, 0xb4, 0x68, 0x9b, 0xaa, 0xca, 0x55, 0x5a, - 0x0a, 0xac, 0xa6, 0x7a, 0x80, 0xaf, 0xea, 0x7e, 0x2c, 0xac, 0x46, 0x7a, 0x02, 0x9e, 0xad, 0x02, 0x2b, 0xb4, 0x8a, 0x9b, 0x0b, 0x89, 0xaa, 0x2a, 0x2b, 0xb4, 0xaa, 0xa3, 0x8a, 0xad, 0x8a, 0xaa, - 0x8c, 0xb4, 0x0b, 0xac, 0x5d, 0x5c, 0xf5, 0xff, 0x4c, 0xb4, 0xea, 0xab, 0x3f, 0x2b, 0x2e, 0x75, 0xac, 0xbc, 0x83, 0x61, 0x00, 0xa8, 0x00, 0xde, 0x8b, 0xbc, 0x02, 0x51, 0x00, 0x00, 0x00, 0x5f, - 0x8b, 0xbc, 0x22, 0x59, 0x00, 0x02, 0x00, 0x5d, 0x6b, 0xb4, 0xa2, 0x61, 0x00, 0x00, 0x00, 0xf5, 0x6b, 0xb4, 0x05, 0x6a, 0x00, 0x82, 0x00, 0xd5, 0x2b, 0xb4, 0x65, 0x82, 0x20, 0x02, 0x7e, 0x7f, - 0x8c, 0xbc, 0x82, 0x61, 0x08, 0x0a, 0xd7, 0xff, 0x6c, 0xb4, 0x66, 0x7a, 0x02, 0xa0, 0xb5, 0xbd, 0x6c, 0xb4, 0xe3, 0x69, 0x00, 0x00, 0x7f, 0xff, 0x4b, 0xb4, 0x63, 0x59, 0x00, 0x00, 0x95, 0xaa, - 0x4b, 0xb4, 0xe7, 0x8a, 0x00, 0xaa, 0x2f, 0x7a, 0x4b, 0xb4, 0xa7, 0x82, 0x80, 0xa8, 0xfa, 0xd5, 0x8c, 0xb4, 0x25, 0x72, 0x0a, 0xa2, 0xd7, 0xff, 0x4b, 0xb4, 0x66, 0x7a, 0x00, 0x00, 0xd5, 0xfe, - 0x6b, 0xb4, 0xe8, 0x8a, 0x20, 0xba, 0xd7, 0xaf, 0x4b, 0xac, 0xc8, 0x82, 0x00, 0x6a, 0x2b, 0x00, 0x4c, 0xb4, 0x6a, 0x9b, 0xa8, 0x09, 0x28, 0x22, 0xcd, 0xc4, 0xa8, 0x9b, 0xab, 0xbe, 0xff, 0x78, - 0x4b, 0xb4, 0xe0, 0x71, 0x00, 0x00, 0x00, 0x5e, 0x2b, 0xac, 0xa0, 0x69, 0x00, 0x00, 0x00, 0x75, 0x8b, 0xb4, 0xc0, 0x58, 0x00, 0x00, 0x00, 0x7f, 0x8b, 0xbc, 0xa2, 0x50, 0x00, 0x80, 0x00, 0x55, - 0x2a, 0xb4, 0x42, 0x51, 0x00, 0x00, 0x80, 0x75, 0x2a, 0xb4, 0x22, 0x51, 0x00, 0x20, 0xbe, 0x55, 0x4a, 0xb4, 0x21, 0x59, 0x00, 0x00, 0x7f, 0x55, 0x2a, 0xb4, 0xe1, 0x50, 0x00, 0x00, 0x55, 0x5d, - 0x09, 0xb4, 0x21, 0x51, 0xa0, 0x00, 0x55, 0xd5, 0x49, 0xb4, 0x03, 0x49, 0xaa, 0x00, 0xf5, 0xff, 0x08, 0xac, 0x87, 0x7a, 0xab, 0x08, 0x55, 0xd5, 0x6c, 0xb4, 0xe4, 0x69, 0x02, 0x56, 0xdf, 0xaf, - 0x6b, 0xb4, 0xa4, 0x61, 0x00, 0xfd, 0xab, 0xaa, 0x6b, 0xb4, 0xe7, 0x8a, 0xa0, 0xb7, 0xff, 0xaf, 0x0a, 0xac, 0x47, 0x93, 0x00, 0xfa, 0x5f, 0xff, 0x2b, 0xb4, 0xe4, 0x69, 0x00, 0xdf, 0x96, 0xaa, - 0x4a, 0xb4, 0xa3, 0x61, 0x20, 0xff, 0xa7, 0xa7, 0xea, 0xa3, 0xa4, 0x61, 0x28, 0x25, 0xaa, 0x38, 0xeb, 0xab, 0xe4, 0x69, 0x9c, 0x2a, 0x2a, 0x0a, 0x0b, 0xac, 0x69, 0x9b, 0xd6, 0x3a, 0xbe, 0xbc, - 0x2b, 0xac, 0x69, 0x9b, 0x8b, 0xaa, 0x62, 0xa0, 0x2b, 0xb4, 0x69, 0x9b, 0xae, 0x82, 0x29, 0xaa, 0x4c, 0xb4, 0xa6, 0x82, 0xaa, 0xaa, 0xa0, 0x66, 0xc9, 0xa3, 0x61, 0x61, 0x00, 0x00, 0xba, 0xd5, - 0x6b, 0xb4, 0xc4, 0x50, 0x02, 0x02, 0x02, 0xdf, 0x2b, 0xb4, 0x27, 0x8b, 0xaa, 0xaa, 0xa8, 0xdf, 0x4c, 0xb4, 0x01, 0x7a, 0x0a, 0xaa, 0x02, 0x5e, 0x8d, 0xbc, 0x27, 0x93, 0xaa, 0xaa, 0xaa, 0x13, - 0x8c, 0xbc, 0x23, 0x72, 0x00, 0xaa, 0x9c, 0x87, 0x0b, 0xb4, 0xa7, 0x82, 0x70, 0xfa, 0xa0, 0xae, 0x89, 0x9b, 0x05, 0x72, 0xd8, 0x8b, 0xab, 0x8a, 0x28, 0x93, 0xe7, 0x82, 0xd9, 0xea, 0x73, 0x79, - 0x28, 0x93, 0xa6, 0x82, 0x2a, 0x2a, 0x7e, 0xfb, 0x69, 0x9b, 0x04, 0x72, 0xca, 0x72, 0x5a, 0xba, 0x6c, 0xbc, 0xa1, 0x48, 0x72, 0x50, 0x50, 0xd8, 0x43, 0x59, 0xa2, 0x30, 0xb5, 0xaf, 0x20, 0x28, - 0x43, 0x59, 0xe2, 0x48, 0x97, 0x3a, 0x2a, 0xa8, 0x67, 0x72, 0x03, 0x51, 0x55, 0x9f, 0xa5, 0x0b, 0x4a, 0x8b, 0x64, 0x59, 0xd5, 0xbf, 0xaf, 0x02, 0xca, 0xa3, 0x67, 0x72, 0xa5, 0xbb, 0xaf, 0x0a, - 0x2c, 0xb4, 0x49, 0x93, 0xc9, 0xaf, 0x2a, 0xaa, 0x2c, 0xb4, 0x05, 0x7a, 0xb7, 0xaa, 0x80, 0x00, 0x8c, 0xbc, 0x22, 0x49, 0x2f, 0x83, 0xc2, 0x50, 0x29, 0x8b, 0x23, 0x39, 0x54, 0x57, 0xff, 0x55, - 0x85, 0x49, 0x24, 0x31, 0x55, 0xde, 0x8a, 0xaf, 0x65, 0x41, 0xe4, 0x28, 0xb7, 0xa3, 0xe0, 0x7a, 0x24, 0x31, 0xa2, 0x10, 0xf8, 0x78, 0x7e, 0x7f, 0xc3, 0x20, 0x82, 0x10, 0x0a, 0xb7, 0xff, 0x7e, - 0x6c, 0xbc, 0xeb, 0xb3, 0x0a, 0x02, 0xaa, 0x37, 0x8c, 0xbc, 0x4b, 0xb4, 0x7f, 0x57, 0xeb, 0x2a, 0x6c, 0xbc, 0x2b, 0xb4, 0x7f, 0x53, 0xe9, 0x80, 0x6c, 0xbc, 0x0b, 0xb4, 0xab, 0x22, 0x8a, 0xad, - 0x6c, 0xbc, 0xcb, 0xab, 0xaa, 0xa8, 0xb6, 0x2a, 0x6c, 0xbc, 0x69, 0x9b, 0xda, 0x20, 0xa8, 0x00, 0x6c, 0xbc, 0xca, 0xa3, 0x2b, 0xa0, 0x6a, 0xc2, 0x6c, 0xbc, 0x0b, 0xac, 0xaa, 0x82, 0xa9, 0xa9, - 0x8c, 0xc4, 0x48, 0x9b, 0xaa, 0x6a, 0xd2, 0xaa, 0x4c, 0xbc, 0xaa, 0xa3, 0xaa, 0xad, 0x83, 0x00, 0x6c, 0xbc, 0x2b, 0xb4, 0xfd, 0x2f, 0xa7, 0xbb, 0x6c, 0xbc, 0xeb, 0xab, 0x8a, 0x8a, 0x28, 0x16, - 0x6c, 0xbc, 0xa9, 0xa3, 0x00, 0x00, 0x40, 0x60, 0x8c, 0xbc, 0x63, 0x59, 0x80, 0xba, 0xa5, 0x0a, 0x6c, 0xbc, 0xcb, 0xab, 0xad, 0xab, 0x0a, 0x20, 0x6d, 0xc4, 0x2b, 0xb4, 0xaa, 0x37, 0x8b, 0xaa, - 0x8c, 0xc4, 0x4b, 0xbc, 0xba, 0xaa, 0x7f, 0xff, 0x6b, 0xc4, 0x4c, 0xb4, 0xef, 0xae, 0xbf, 0x8a, 0x6c, 0xbc, 0x0b, 0xb4, 0x2a, 0x2d, 0x20, 0x00, 0x6c, 0xc4, 0x4b, 0xb4, 0xeb, 0xeb, 0xfa, 0xaa, - 0x6b, 0xc4, 0x2c, 0xb4, 0xff, 0x2a, 0xba, 0xaf, 0x8c, 0xc4, 0x69, 0x9b, 0x82, 0x02, 0xb8, 0x9e, 0x8c, 0xc4, 0x83, 0x61, 0x00, 0x80, 0xa0, 0xdc, 0x2b, 0xb4, 0x48, 0x93, 0xa8, 0x02, 0x8a, 0x7f, - 0x4b, 0xb4, 0xaa, 0xab, 0xea, 0xea, 0xb7, 0x2f, 0x4b, 0xb4, 0xea, 0xab, 0xfd, 0xff, 0x3a, 0xee, 0x4b, 0xb4, 0x68, 0xa3, 0xaa, 0x88, 0x80, 0x6a, 0x2b, 0xb4, 0x68, 0x9b, 0x00, 0x02, 0x0a, 0x75, - 0x4b, 0xb4, 0x81, 0x61, 0x00, 0x00, 0x00, 0xd7, 0x4b, 0xb4, 0x65, 0x7a, 0x00, 0x00, 0x2a, 0xed, 0x2b, 0xb4, 0xe3, 0x71, 0x00, 0x00, 0x00, 0x7a, 0x4b, 0xb4, 0x45, 0x7a, 0x08, 0x80, 0x2a, 0x5d, - 0x2b, 0xb4, 0x43, 0x7a, 0x00, 0x00, 0x00, 0xfd, 0x4b, 0xb4, 0x42, 0x59, 0x00, 0x00, 0x00, 0xa5, 0x2b, 0xb4, 0x28, 0x9b, 0x00, 0x00, 0xa0, 0xad, 0x6a, 0xbc, 0x84, 0x61, 0x00, 0x40, 0xff, 0xaa, - 0x4a, 0xb4, 0xe3, 0x48, 0x20, 0xa5, 0xaa, 0x8a, 0x0a, 0xb4, 0x49, 0x8b, 0x02, 0x7b, 0xaa, 0xea, 0x0a, 0xac, 0xc7, 0x82, 0x0a, 0xbb, 0xa6, 0x2b, 0x2a, 0xac, 0x49, 0x9b, 0x0a, 0x7f, 0x2c, 0xa2, - 0x2b, 0xb4, 0xe3, 0x69, 0x80, 0x0b, 0x00, 0xa7, 0x2b, 0xb4, 0xe8, 0x92, 0x82, 0x02, 0x20, 0xb5, 0x4b, 0xbc, 0x46, 0x7a, 0x00, 0x00, 0x80, 0xb7, 0x2b, 0xb4, 0xc6, 0x8a, 0x00, 0x00, 0xaa, 0x6b, - 0x2a, 0xb4, 0xa7, 0x82, 0x00, 0x00, 0x00, 0x95, 0x4b, 0xb4, 0x07, 0x8b, 0x0a, 0x00, 0xaa, 0xfd, 0x6c, 0xbc, 0x27, 0x93, 0x2a, 0xaa, 0xef, 0x5f, 0xac, 0xc4, 0x28, 0x93, 0xaa, 0xf2, 0x5f, 0xf7, - 0x6c, 0xbc, 0xe7, 0x8a, 0xa0, 0x8a, 0x7f, 0xff, 0x4a, 0xb4, 0x07, 0x93, 0x08, 0xff, 0x55, 0x7f, 0x0a, 0xac, 0x08, 0x8b, 0x08, 0xff, 0xff, 0xdf, 0x2a, 0xb4, 0xa7, 0x82, 0x0a, 0x5e, 0xff, 0xbf, - 0x2a, 0xac, 0x24, 0x72, 0x00, 0xd7, 0xff, 0xaa, 0x0a, 0xac, 0x63, 0x59, 0x00, 0x7f, 0xff, 0xaa, 0x4a, 0xb4, 0xe5, 0x69, 0xf8, 0xfd, 0xaf, 0xaa, 0xcb, 0xa3, 0x45, 0x72, 0xad, 0xaf, 0x2a, 0x02, - 0x4c, 0xb4, 0x09, 0x8b, 0xd7, 0xaf, 0xaa, 0x0a, 0x4c, 0xb4, 0x26, 0x93, 0x8a, 0x8a, 0xa0, 0x68, 0x2b, 0xb4, 0x06, 0x8b, 0x82, 0x00, 0xe0, 0x5f, 0xac, 0xc4, 0x23, 0x72, 0x0a, 0x82, 0x5f, 0x7f, - 0x49, 0xb4, 0xe1, 0x50, 0x80, 0xfe, 0xea, 0x5f, 0x46, 0x9b, 0x22, 0x51, 0xf0, 0xae, 0xff, 0xd5, 0x07, 0x8b, 0xc4, 0x69, 0x03, 0xaa, 0xb7, 0xbf, 0x07, 0x8b, 0x25, 0x72, 0x54, 0xba, 0xfd, 0x20, - 0x07, 0x8b, 0x26, 0x72, 0x7a, 0xaf, 0xaa, 0xa0, 0x48, 0x93, 0x06, 0x72, 0xb5, 0xbf, 0xaf, 0x0a, 0x48, 0x93, 0x45, 0x72, 0x2f, 0xa7, 0xea, 0x00, 0x48, 0x93, 0x04, 0x6a, 0x20, 0xaa, 0x7b, 0x00, - 0x47, 0x93, 0xe5, 0x69, 0xa8, 0xaa, 0xf5, 0x00, 0xa9, 0xa3, 0xc5, 0x61, 0x2a, 0xab, 0xbd, 0x8a, 0xa8, 0xa3, 0x64, 0x59, 0x80, 0x2b, 0x5e, 0x00, 0xa7, 0x9b, 0x45, 0x59, 0x00, 0x0a, 0xf5, 0xa2, - 0xa7, 0x9b, 0x05, 0x72, 0x08, 0x7a, 0xff, 0xbf, 0xa8, 0x9b, 0xa2, 0x40, 0x00, 0x55, 0x7e, 0xaa, 0x66, 0x93, 0xe2, 0x40, 0x00, 0x2d, 0x55, 0xaa, 0x08, 0xac, 0x03, 0x51, 0x0a, 0xe8, 0xd5, 0xff, - 0x8a, 0xb4, 0xa2, 0x48, 0x00, 0x57, 0xff, 0xbf, 0x27, 0xb4, 0xa3, 0x40, 0xa0, 0x55, 0xbf, 0xab, 0x46, 0x9b, 0x24, 0x51, 0xe0, 0x75, 0xfe, 0xaa, 0xe9, 0x82, 0xa0, 0x40, 0xf5, 0xeb, 0xba, 0x02, - 0x48, 0x8b, 0x03, 0x49, 0x55, 0x7f, 0xbb, 0x0a, 0x48, 0x93, 0x44, 0x51, 0xd5, 0xab, 0x22, 0x00, 0x28, 0x93, 0xe5, 0x69, 0x7b, 0xfa, 0xa8, 0x00, 0x69, 0x93, 0x63, 0x59, 0x7f, 0xfe, 0xaa, 0x00, - 0x69, 0x9b, 0x64, 0x59, 0xf5, 0xaf, 0x0a, 0x00, 0x69, 0x9b, 0xc5, 0x61, 0xd5, 0xaa, 0xaa, 0x08, 0x69, 0x93, 0xe5, 0x69, 0x5f, 0xba, 0x0a, 0x00, 0x89, 0x9b, 0xe5, 0x61, 0x5f, 0xaa, 0x00, 0x00, - 0x69, 0x9b, 0x06, 0x6a, 0xfd, 0xaa, 0x28, 0x00, 0x8a, 0x9b, 0x26, 0x6a, 0xad, 0xaa, 0x00, 0x02, 0xca, 0xa3, 0x08, 0x8b, 0xf5, 0xa3, 0xaa, 0x0a, 0xa9, 0xa3, 0x28, 0x93, 0x7f, 0xa8, 0xbc, 0xae, - 0xa9, 0xa3, 0x28, 0x93, 0xbe, 0x7f, 0xeb, 0xb0, 0xaa, 0xa3, 0xc7, 0x82, 0x22, 0x2d, 0x00, 0x0a, 0xca, 0xa3, 0x86, 0x82, 0x8a, 0x80, 0x28, 0xa6, 0xca, 0xa3, 0xe8, 0x92, 0x7f, 0xba, 0x02, 0x0a, - 0xca, 0xa3, 0x67, 0x7a, 0xa6, 0x00, 0x00, 0x00, 0x0c, 0xac, 0xe7, 0x8a, 0x9e, 0xbe, 0xbe, 0x2a, 0x0b, 0xac, 0xaa, 0xa3, 0x05, 0xe9, 0x0b, 0x00, 0x2b, 0xb4, 0x69, 0x9b, 0x06, 0x02, 0x08, 0xa0, - 0x4c, 0xbc, 0x0b, 0xb4, 0xbf, 0xc3, 0xf0, 0xfd, 0x6c, 0xbc, 0x0a, 0xac, 0xf9, 0xba, 0x98, 0x6e, 0x2b, 0xbc, 0x01, 0x51, 0x50, 0x5c, 0xd6, 0x57, 0x69, 0x9b, 0xa4, 0x61, 0xbd, 0x2b, 0x2b, 0x2b, - 0xad, 0xc4, 0xe8, 0x8a, 0x8d, 0x8b, 0xab, 0x8b, 0x2c, 0xbc, 0xe0, 0x50, 0x40, 0x40, 0x40, 0x60, 0x86, 0x82, 0x63, 0x59, 0x5f, 0xfb, 0xab, 0x83, 0x8d, 0xbc, 0x04, 0x72, 0xf7, 0xfa, 0x8b, 0x8b, - 0x2c, 0xac, 0xa6, 0x82, 0x81, 0xa3, 0xa4, 0xbb, 0x0b, 0xac, 0x69, 0x9b, 0x8b, 0xf6, 0x55, 0xd5, 0x89, 0xa3, 0x62, 0x61, 0xa8, 0xdc, 0xb6, 0xa7, 0x07, 0x93, 0xa6, 0x82, 0xfb, 0xea, 0xfc, 0xf4, - 0x48, 0x93, 0x65, 0x7a, 0xbe, 0x17, 0x27, 0x57, 0x0b, 0xb4, 0x24, 0x72, 0xbf, 0x3f, 0x3f, 0xc7, 0x6d, 0xc4, 0x22, 0x59, 0x54, 0x56, 0x57, 0x55, 0xc8, 0x7a, 0x03, 0x51, 0x55, 0xd5, 0xad, 0x0a, - 0x69, 0x93, 0x44, 0x51, 0xd5, 0xab, 0x2a, 0x02, 0xaa, 0xa3, 0x67, 0x72, 0xd5, 0x8b, 0x2a, 0x02, 0x0b, 0xac, 0x29, 0x93, 0xbd, 0xfb, 0xaa, 0x0a, 0x2c, 0xac, 0xaa, 0x9b, 0xfd, 0xbf, 0xaa, 0x2a, - 0x4b, 0xb4, 0xec, 0xab, 0xad, 0x2b, 0xaa, 0x08, 0x8c, 0xc4, 0xc1, 0x30, 0x00, 0x80, 0x70, 0x57, 0x88, 0xa3, 0xa3, 0x20, 0xfc, 0xd7, 0x57, 0x55, 0x85, 0x41, 0xc3, 0x28, 0xe8, 0xea, 0xff, 0xd5, - 0x24, 0x39, 0xa2, 0x18, 0x00, 0xaa, 0xfa, 0x5e, 0x24, 0x31, 0xc3, 0x18, 0xe0, 0xe8, 0xef, 0xf5, 0xe3, 0x20, 0x82, 0x10, 0x7f, 0xfe, 0xfb, 0xfa, 0xc3, 0x18, 0x82, 0x10, 0xfa, 0xf9, 0xcc, 0x80, - 0x8d, 0xbc, 0x4b, 0xb4, 0xbd, 0x17, 0xf5, 0xaf, 0x8c, 0xbc, 0x4b, 0xb4, 0x8f, 0xbc, 0xae, 0x7f, 0x6c, 0xbc, 0x6a, 0x9b, 0x80, 0x60, 0xa8, 0x20, 0x8c, 0xc4, 0x0b, 0xac, 0xff, 0xa1, 0x0a, 0x8a, - 0x8d, 0xc4, 0x0b, 0xac, 0xab, 0xf6, 0xe8, 0xaa, 0x6c, 0xbc, 0x0b, 0xac, 0x02, 0x2b, 0x29, 0xa0, 0x6c, 0xbc, 0x89, 0xa3, 0x80, 0xad, 0x2a, 0x8a, 0x4c, 0xbc, 0x2b, 0xb4, 0x2d, 0x82, 0x20, 0x0b, - 0x6c, 0xbc, 0x0b, 0xb4, 0x9b, 0x3a, 0xae, 0xea, 0x6c, 0xbc, 0xaa, 0xa3, 0x20, 0x98, 0xa8, 0xaf, 0x6c, 0xbc, 0xca, 0xa3, 0xa2, 0x2d, 0x0b, 0x80, 0x8c, 0xc4, 0x4b, 0xb4, 0x6b, 0x5f, 0xba, 0xff, - 0xac, 0xc4, 0x45, 0x7a, 0x82, 0x00, 0x00, 0x40, 0x6b, 0xbc, 0x85, 0x59, 0x00, 0x00, 0x28, 0x2d, 0x6c, 0xbc, 0x29, 0x93, 0x00, 0x02, 0xa2, 0x24, 0x6c, 0xbc, 0x2b, 0xb4, 0x08, 0x2f, 0x2f, 0x83, - 0x6c, 0xbc, 0x2a, 0xb4, 0xa8, 0x00, 0xc8, 0xff, 0x6c, 0xbc, 0x2b, 0xb4, 0x00, 0xe0, 0x28, 0x9b, 0x6c, 0xbc, 0x2b, 0xb4, 0x00, 0x0a, 0x2a, 0xae, 0x4c, 0xbc, 0x2b, 0xb4, 0xd0, 0x20, 0x08, 0x02, - 0x6c, 0xbc, 0x2b, 0xb4, 0x02, 0xf8, 0xe2, 0xee, 0x4c, 0xbc, 0x0b, 0xb4, 0x5c, 0xa8, 0xa8, 0x8e, 0x4b, 0xb4, 0x6a, 0x9b, 0x7a, 0xa0, 0x80, 0x00, 0x0b, 0xb4, 0x29, 0x93, 0x7b, 0xa8, 0xa0, 0x00, - 0x0b, 0xac, 0x48, 0x93, 0xd7, 0xfa, 0xaa, 0x00, 0xea, 0xb3, 0xc7, 0x82, 0x77, 0xba, 0x20, 0x00, 0xea, 0xab, 0x07, 0x93, 0xa9, 0xaa, 0xa2, 0x00, 0x0b, 0xac, 0x49, 0x9b, 0xfd, 0xff, 0xaa, 0x0a, - 0x4a, 0xbc, 0xe8, 0x82, 0xd5, 0xbf, 0xaa, 0xa0, 0xca, 0xa3, 0x48, 0x93, 0xe5, 0xee, 0x88, 0x00, 0xca, 0xa3, 0xe8, 0x8a, 0x7e, 0xa8, 0xa8, 0x00, 0xca, 0xa3, 0xe8, 0x8a, 0x7f, 0xea, 0xe2, 0x88, - 0xaa, 0xa3, 0xa7, 0x82, 0x7f, 0xaa, 0x2a, 0x00, 0xa9, 0xab, 0xca, 0x82, 0x29, 0xaa, 0x88, 0x00, 0xa9, 0xa3, 0x48, 0x9b, 0xd0, 0x97, 0x7a, 0x28, 0x2b, 0xb4, 0x89, 0xa3, 0x55, 0x55, 0xd5, 0xcb, - 0x0b, 0xac, 0x69, 0x9b, 0xeb, 0x7b, 0xeb, 0x0a, 0x2b, 0xb4, 0xaa, 0xa3, 0x7d, 0x5d, 0xd7, 0x3a, 0x2b, 0xb4, 0xaa, 0xa3, 0xa5, 0xbb, 0xaa, 0xa0, 0x0b, 0xb4, 0xc9, 0xa3, 0x7e, 0xfe, 0xea, 0xf0, - 0xea, 0xab, 0x89, 0x9b, 0xdf, 0xaa, 0xa2, 0x20, 0xeb, 0xab, 0x68, 0x9b, 0x7e, 0xfa, 0xfa, 0x20, 0xeb, 0xa3, 0x48, 0x93, 0xd7, 0xaf, 0xaa, 0x00, 0x0b, 0xac, 0x69, 0x9b, 0x7d, 0xfb, 0xff, 0x00, - 0x0b, 0xac, 0x48, 0x93, 0xff, 0x5f, 0xfe, 0xa0, 0xeb, 0xa3, 0x28, 0x93, 0x7f, 0xf7, 0xba, 0x00, 0xca, 0xa3, 0x28, 0x93, 0xde, 0xda, 0x2a, 0x20, 0xca, 0xa3, 0x48, 0x93, 0x57, 0xdf, 0xaa, 0x2a, - 0xca, 0xa3, 0x48, 0x9b, 0x7d, 0xfb, 0x0a, 0x02, 0xea, 0xab, 0x49, 0x9b, 0x5f, 0xfa, 0xea, 0x80, 0x4b, 0xb4, 0x08, 0x8b, 0xff, 0xdf, 0xea, 0xa2, 0xeb, 0xab, 0x08, 0x8b, 0x7b, 0xab, 0xa2, 0x00, - 0x0b, 0xac, 0x09, 0x93, 0x77, 0xbf, 0x2a, 0x02, 0x0b, 0xac, 0x29, 0x8b, 0xd5, 0x2a, 0x8a, 0xa0, 0x0b, 0xac, 0x6a, 0x9b, 0xe9, 0xaa, 0xba, 0x0b, 0x4b, 0xb4, 0xca, 0xa3, 0xfd, 0x0b, 0x82, 0x2b, - 0x4b, 0xbc, 0x04, 0x72, 0x00, 0x80, 0x7a, 0xf8, 0x4a, 0xbc, 0xc6, 0x82, 0xf8, 0xf5, 0xd5, 0x55, 0x68, 0x93, 0x25, 0x72, 0x78, 0xf8, 0xa2, 0xa8, 0xaa, 0xa3, 0xa4, 0x61, 0x5d, 0xea, 0xba, 0x00, - 0xa9, 0x9b, 0xc5, 0x61, 0x55, 0xfe, 0xaa, 0x80, 0x8a, 0x9b, 0x05, 0x62, 0xfd, 0xbf, 0xaa, 0x02, 0xa9, 0xa3, 0xc7, 0x82, 0xfd, 0xb7, 0xae, 0x00, 0xa9, 0xa3, 0x08, 0x8b, 0x6e, 0x7e, 0x7a, 0xe8, - 0xaa, 0xa3, 0xa7, 0x7a, 0xff, 0xa9, 0xa2, 0x0a, 0xc9, 0xa3, 0x08, 0x93, 0xdf, 0xff, 0xaf, 0xa8, 0xaa, 0xa3, 0x49, 0x93, 0xab, 0x2b, 0x8b, 0x6a, 0xca, 0xa3, 0x48, 0x93, 0x73, 0xba, 0xab, 0x0a, - 0xca, 0xab, 0x28, 0x8b, 0xfd, 0x82, 0xa8, 0xa2, 0xca, 0xa3, 0x08, 0x93, 0xeb, 0xaa, 0x89, 0xef, 0xeb, 0xab, 0x48, 0x93, 0xd7, 0xb5, 0xbb, 0x2e, 0x6c, 0xbc, 0x83, 0x59, 0xba, 0xa4, 0xba, 0xa8, - 0xaa, 0xa3, 0x08, 0x8b, 0xf5, 0x82, 0x22, 0x8a, 0xaa, 0xa3, 0xc7, 0x82, 0xba, 0x6e, 0x08, 0x8a, 0xc9, 0xa3, 0x87, 0x7a, 0x5e, 0x95, 0x0a, 0x2a, 0xc9, 0xa3, 0x28, 0x8b, 0x55, 0xfa, 0xe8, 0xa8, - 0x69, 0x9b, 0x08, 0x8b, 0xed, 0x81, 0x62, 0x60, 0x69, 0x93, 0xe7, 0x8a, 0x3b, 0x7f, 0xbd, 0xa2, 0x68, 0x9b, 0xa6, 0x82, 0x7a, 0xff, 0xa0, 0xa0, 0x89, 0x9b, 0xe7, 0x82, 0xab, 0x78, 0xde, 0x2a, - 0xca, 0xa3, 0xa7, 0x7a, 0xb5, 0xaf, 0x2a, 0x0a, 0xa9, 0xa3, 0x08, 0x8b, 0x77, 0xbe, 0xa8, 0xe8, 0xca, 0xa3, 0x08, 0x8b, 0xd6, 0xbe, 0x02, 0xaa, 0x0b, 0xac, 0x68, 0x93, 0xfe, 0x6f, 0xbf, 0x2f, - 0x4b, 0xac, 0x29, 0x93, 0xdf, 0xbf, 0xaa, 0x00, 0x4b, 0xac, 0x49, 0x9b, 0xd5, 0xff, 0xa0, 0xe4, 0x0a, 0xac, 0x69, 0x9b, 0xd5, 0xed, 0x8a, 0xff, 0x0b, 0xac, 0x48, 0x93, 0xf5, 0xab, 0x0a, 0xab, - 0x4c, 0xac, 0x89, 0x9b, 0x55, 0xff, 0xa0, 0xaf, 0x6b, 0xb4, 0x41, 0x61, 0xaa, 0x0a, 0xc0, 0x58, 0x8c, 0xbc, 0xa2, 0x61, 0xaa, 0xf8, 0xed, 0xff, 0xc9, 0xa3, 0x26, 0x72, 0x00, 0x5d, 0xbd, 0xab, - 0xc9, 0xa3, 0x28, 0x8b, 0x28, 0xd5, 0xaf, 0x0b, 0xca, 0xa3, 0x48, 0x9b, 0x7d, 0xdf, 0xaa, 0x20, 0xeb, 0xa3, 0x49, 0x9b, 0xa5, 0xab, 0x2a, 0x28, 0x2b, 0xac, 0x8a, 0x9b, 0xfb, 0xdf, 0x3a, 0xa0, - 0x6c, 0xbc, 0xaa, 0x9b, 0xff, 0x6b, 0xaa, 0xa0, 0xad, 0xc4, 0x2b, 0xac, 0xdf, 0xdc, 0xfd, 0xc7, 0x8d, 0xbc, 0x0b, 0xac, 0xaf, 0x8f, 0xee, 0x55, 0x4c, 0xb4, 0x89, 0x9b, 0x98, 0x9e, 0x2e, 0x2e, - 0x4c, 0xb4, 0xaa, 0xa3, 0x03, 0x20, 0x89, 0x62, 0x2b, 0xb4, 0x21, 0x51, 0xc0, 0x60, 0x50, 0x58, 0x49, 0x8b, 0xe2, 0x50, 0xfd, 0xbd, 0x2f, 0x2a, 0x0b, 0xac, 0xe7, 0x82, 0xad, 0xaf, 0x2b, 0x0a, - 0x8d, 0xc4, 0xeb, 0xa3, 0x8d, 0xa9, 0xad, 0xa7, 0x8d, 0xc4, 0x01, 0x51, 0x70, 0x50, 0xd0, 0xd0, 0xeb, 0xa3, 0xe4, 0x69, 0xfd, 0xad, 0x2b, 0x0a, 0x8d, 0xbc, 0x28, 0x8b, 0xc9, 0x8b, 0xaa, 0x8a, - 0x0a, 0xac, 0xc2, 0x69, 0xa2, 0xa8, 0xf7, 0xd5, 0x89, 0x9b, 0xa6, 0x8a, 0x20, 0x0a, 0xe9, 0xef, 0x28, 0x93, 0x24, 0x72, 0x8d, 0x09, 0x82, 0x8a, 0x48, 0x93, 0xa6, 0x82, 0xf6, 0x6e, 0xf2, 0xaf, - 0x0b, 0xac, 0xe4, 0x69, 0x9f, 0xff, 0x2f, 0x0b, 0x4c, 0xb4, 0x84, 0x61, 0x4b, 0xf2, 0xb8, 0x08, 0x0c, 0xac, 0xc6, 0x59, 0xad, 0xab, 0x02, 0x00, 0x2c, 0xac, 0xe9, 0x82, 0xf5, 0xae, 0xaa, 0x00, - 0x2c, 0xb4, 0x8a, 0x9b, 0xf5, 0xe9, 0xaa, 0xa0, 0x2c, 0xb4, 0xcb, 0xa3, 0x55, 0xab, 0x0f, 0x0a, 0x6b, 0xbc, 0x0c, 0xac, 0x75, 0x75, 0xbf, 0x4b, 0x8d, 0xc4, 0x23, 0x41, 0x00, 0x00, 0xe0, 0x57, - 0x8a, 0xcc, 0xc3, 0x28, 0xe0, 0x5e, 0x55, 0x55, 0x24, 0x31, 0xc3, 0x18, 0xb8, 0x7e, 0x77, 0xff, 0x04, 0x21, 0xc3, 0x18, 0x5f, 0x5f, 0xde, 0xb0, 0x24, 0x29, 0xc3, 0x20, 0xbd, 0xf5, 0x2f, 0xff, - 0x04, 0x21, 0xc3, 0x18, 0x54, 0xfe, 0xae, 0x2e, 0x04, 0x21, 0xa3, 0x18, 0x2e, 0xee, 0x8b, 0xb4, 0x04, 0x21, 0xc3, 0x18, 0xfb, 0xd5, 0xd7, 0x0d, 0xe4, 0x20, 0xa3, 0x18, 0xb6, 0x8a, 0xbe, 0xe8, - 0x6c, 0xbc, 0x0b, 0xb4, 0x80, 0x08, 0x09, 0x3a, 0x8c, 0xbc, 0x4b, 0xb4, 0x7f, 0x39, 0xae, 0x6b, 0x6c, 0xbc, 0x2b, 0xb4, 0xfa, 0xde, 0x26, 0xae, 0x6c, 0xbc, 0x2b, 0xb4, 0x2b, 0xe9, 0xea, 0xba, - 0x6c, 0xbc, 0x2b, 0xb4, 0x02, 0xef, 0x2b, 0x97, 0x8c, 0xbc, 0x0b, 0xac, 0xaa, 0xeb, 0x5e, 0xe8, 0x6d, 0xbc, 0x2b, 0xb4, 0xf2, 0xaf, 0x81, 0xb0, 0x6c, 0xc4, 0xeb, 0xab, 0x7b, 0xf0, 0xba, 0xe0, - 0x6c, 0xbc, 0x0b, 0xac, 0x73, 0xd7, 0xad, 0xaa, 0x6c, 0xbc, 0x0b, 0xb4, 0x2f, 0xeb, 0xb6, 0xae, 0x6c, 0xbc, 0x2b, 0xb4, 0xbf, 0x2b, 0x2e, 0x2e, 0x6c, 0xbc, 0x0b, 0xb4, 0x27, 0x00, 0x88, 0x20, - 0x6c, 0xc4, 0xa8, 0x7a, 0xd0, 0x80, 0x00, 0x00, 0x6c, 0xbc, 0x8c, 0x93, 0x2d, 0x82, 0xa0, 0x02, 0x6c, 0xbc, 0x2b, 0xb4, 0xeb, 0x29, 0xaa, 0xb2, 0xac, 0xc4, 0x84, 0x61, 0x80, 0x70, 0x00, 0x00, - 0x4c, 0xbc, 0x25, 0x72, 0x09, 0x03, 0x00, 0x00, 0x6c, 0xbc, 0x2b, 0xb4, 0xf5, 0xff, 0xdf, 0xaf, 0x6c, 0xbc, 0x2b, 0xb4, 0x2b, 0xaa, 0xaa, 0x7e, 0x4c, 0xbc, 0xeb, 0xab, 0x00, 0x80, 0xa8, 0xf5, - 0x6c, 0xbc, 0x2b, 0xb4, 0x7d, 0xe9, 0xad, 0x8f, 0x4c, 0xbc, 0x0b, 0xb4, 0xa2, 0x2f, 0xba, 0xaa, 0x4c, 0xbc, 0x0a, 0xb4, 0xf8, 0xde, 0xff, 0xa8, 0x2b, 0xb4, 0xea, 0xab, 0x3a, 0xc8, 0xa2, 0x20, - 0x4c, 0xbc, 0xea, 0xb3, 0x77, 0xe6, 0xdb, 0xca, 0x2b, 0xb4, 0xaa, 0xa3, 0xda, 0xaa, 0xba, 0xa8, 0xea, 0xb3, 0x0b, 0xac, 0xaa, 0xfd, 0xba, 0x7f, 0x6c, 0xbc, 0xca, 0xab, 0x35, 0xbf, 0xf7, 0xbf, - 0x4c, 0xb4, 0xe2, 0x48, 0xaf, 0xa9, 0x00, 0x80, 0x2b, 0xb4, 0xaa, 0xa3, 0xf5, 0x2f, 0xab, 0x2b, 0x0b, 0xb4, 0xa9, 0xa3, 0x7f, 0xe7, 0xa8, 0xa8, 0x2b, 0xb4, 0xc9, 0xa3, 0x75, 0xfb, 0xaa, 0x02, - 0x0b, 0xac, 0x89, 0x9b, 0xf7, 0xef, 0xa0, 0x00, 0x2b, 0xac, 0xaa, 0xa3, 0x55, 0xdf, 0xaa, 0x02, 0x2b, 0xb4, 0x8a, 0xa3, 0xfd, 0xba, 0x2a, 0x0a, 0x2b, 0xb4, 0xaa, 0xa3, 0xea, 0x2a, 0xa6, 0x02, - 0x2b, 0xbc, 0xea, 0xab, 0xee, 0xeb, 0xff, 0xde, 0x6b, 0xbc, 0xea, 0xab, 0x8d, 0xef, 0xbf, 0xff, 0x0b, 0xb4, 0xea, 0xab, 0x00, 0xa0, 0xd6, 0x3f, 0x0b, 0xb4, 0xca, 0xa3, 0xe6, 0xa8, 0xa0, 0x00, - 0x2a, 0xb4, 0xcb, 0xab, 0xb6, 0x0a, 0xae, 0xff, 0x4b, 0xbc, 0xaa, 0xa3, 0xa2, 0x8a, 0xff, 0xdf, 0x4b, 0xbc, 0xea, 0xab, 0x8a, 0x5b, 0x5d, 0x57, 0x2b, 0xb4, 0x48, 0x93, 0x28, 0x78, 0xeb, 0xaa, - 0x2b, 0xac, 0x89, 0xa3, 0xa8, 0xfd, 0xed, 0xfe, 0x2b, 0xb4, 0x89, 0xa3, 0xa0, 0xf7, 0xed, 0xe9, 0x2b, 0xb4, 0x8a, 0x9b, 0xbe, 0xd5, 0xbf, 0x0b, 0x6b, 0xbc, 0xaa, 0xa3, 0xf7, 0xff, 0x2a, 0x62, - 0x4b, 0xb4, 0x63, 0x69, 0x00, 0x00, 0x00, 0x7a, 0x4b, 0xb4, 0x06, 0x6a, 0x08, 0x00, 0x80, 0xdd, 0x2b, 0xac, 0xc7, 0x8a, 0x00, 0x00, 0x57, 0xdd, 0x4b, 0xb4, 0x25, 0x72, 0xaa, 0x00, 0xd7, 0xff, - 0x8a, 0xbc, 0xc4, 0x61, 0x0a, 0x80, 0xd5, 0xff, 0x09, 0xac, 0x67, 0x72, 0x00, 0xa0, 0x5d, 0xef, 0x8a, 0xb4, 0x85, 0x61, 0x02, 0x7f, 0xfe, 0xaf, 0x09, 0xb4, 0xc7, 0x59, 0xa0, 0xf5, 0xae, 0xaa, - 0xca, 0xa3, 0xa4, 0x61, 0xb7, 0xa2, 0x00, 0x2a, 0xc9, 0xab, 0xa8, 0x72, 0xf5, 0x82, 0x80, 0x08, 0xca, 0xab, 0x28, 0x8b, 0xad, 0x82, 0xea, 0xea, 0xa9, 0xa3, 0xe7, 0x8a, 0x80, 0xa8, 0xe2, 0x5a, - 0x89, 0x9b, 0x07, 0x8b, 0xa0, 0xaf, 0xfd, 0xfd, 0x4a, 0xb4, 0x67, 0x7a, 0x0a, 0xda, 0xbb, 0xab, 0x0a, 0xa4, 0xa7, 0x82, 0xa8, 0x6a, 0xfe, 0xaa, 0xea, 0xa3, 0xe8, 0x8a, 0x8a, 0x7d, 0xff, 0x88, - 0xca, 0xa3, 0x07, 0x8b, 0x0b, 0xa9, 0xab, 0x00, 0xeb, 0xa3, 0x89, 0x9b, 0xb7, 0xf7, 0x77, 0x82, 0xcb, 0xa3, 0x49, 0x93, 0xde, 0x2c, 0xab, 0x0a, 0x2b, 0xac, 0x89, 0x9b, 0xbf, 0xdf, 0x8b, 0xea, - 0x4c, 0xb4, 0x08, 0x8b, 0x7e, 0xaa, 0x2a, 0x22, 0x2b, 0xac, 0x6a, 0x93, 0xad, 0x0a, 0x2a, 0x2a, 0x0b, 0xac, 0x89, 0x9b, 0xaa, 0x5c, 0xa0, 0x08, 0x2b, 0xac, 0x8a, 0xa3, 0x5e, 0xfb, 0x78, 0x68, - 0x0c, 0xa4, 0x48, 0x9b, 0xff, 0xb7, 0xab, 0x82, 0x2c, 0xac, 0x69, 0x93, 0x57, 0x5b, 0xd5, 0x83, 0x2b, 0xb4, 0x89, 0x9b, 0xd5, 0xfd, 0xeb, 0x22, 0x0b, 0xac, 0x89, 0x9b, 0x57, 0x6b, 0xe0, 0xe0, - 0xeb, 0xab, 0x48, 0x93, 0xdd, 0xbf, 0xaa, 0x20, 0x0b, 0xac, 0x49, 0x93, 0xd7, 0xee, 0xa2, 0x20, 0x0b, 0xac, 0x6a, 0x9b, 0x5d, 0xeb, 0xaa, 0xe8, 0xea, 0xab, 0x89, 0x9b, 0x5d, 0xd6, 0x8a, 0xaa, - 0x2c, 0xac, 0x8a, 0x9b, 0x7b, 0xef, 0xe8, 0xe2, 0x2b, 0xac, 0x49, 0x93, 0xf7, 0xaa, 0xb8, 0xaa, 0x0b, 0xac, 0xaa, 0xa3, 0x5d, 0x2e, 0xff, 0xc3, 0x0b, 0xac, 0x89, 0x9b, 0x8b, 0xaa, 0x62, 0xbf, - 0x6c, 0xbc, 0x48, 0x93, 0xe2, 0x7a, 0xfa, 0xa2, 0x2b, 0xac, 0xc7, 0x82, 0x50, 0xbf, 0xfb, 0xaa, 0xaa, 0xa3, 0xe8, 0x82, 0xb7, 0x2b, 0x82, 0x28, 0xea, 0xa3, 0xc7, 0x82, 0x9a, 0x2a, 0x2a, 0xae, - 0x6b, 0xbc, 0xc5, 0x69, 0x22, 0x60, 0x7a, 0xee, 0x8a, 0x9b, 0xa3, 0x61, 0xd4, 0xa5, 0xaf, 0x0a, 0x8a, 0x9b, 0x87, 0x7a, 0xf7, 0xad, 0x2a, 0x00, 0xaa, 0xa3, 0x49, 0x93, 0xc5, 0xcb, 0xaa, 0x0a, - 0x0b, 0xac, 0x49, 0x9b, 0x29, 0xa9, 0xbe, 0x82, 0xea, 0xa3, 0x89, 0x9b, 0x8c, 0x02, 0x57, 0x09, 0x0b, 0xac, 0x89, 0x9b, 0x3e, 0x37, 0xa7, 0x0b, 0x4c, 0xb4, 0xca, 0xa3, 0x1e, 0x9f, 0xbb, 0xb8, - 0x4c, 0xb4, 0xeb, 0xab, 0x4c, 0x6a, 0xfe, 0x0f, 0x4c, 0xbc, 0xaa, 0xa3, 0xde, 0xe8, 0xe8, 0x8a, 0x8c, 0xbc, 0x07, 0x8b, 0xaa, 0xee, 0x6a, 0x2a, 0x2b, 0xb4, 0xc6, 0x82, 0x0a, 0x2a, 0x24, 0x02, - 0x8c, 0xbc, 0x65, 0x82, 0xa0, 0x2e, 0xaa, 0x40, 0x6d, 0xb4, 0x82, 0x59, 0xd4, 0xf7, 0xfd, 0xaf, 0xeb, 0xa3, 0x46, 0x6a, 0xad, 0x2b, 0x0a, 0x0a, 0x2c, 0xb4, 0xca, 0xa3, 0xad, 0xaf, 0x0b, 0x02, - 0xce, 0xc4, 0x0b, 0xac, 0xc5, 0xed, 0xaf, 0xeb, 0xae, 0xc4, 0x21, 0x51, 0xd8, 0x9c, 0xb4, 0xa4, 0x4c, 0xb4, 0x49, 0x93, 0x2d, 0x2f, 0x89, 0x0b, 0xae, 0xc4, 0x69, 0xa3, 0xaa, 0x2a, 0xca, 0x62, - 0xea, 0xab, 0x06, 0x72, 0xd7, 0x82, 0xaa, 0x0a, 0x0d, 0xac, 0xe7, 0x8a, 0x75, 0x5f, 0xfe, 0x00, 0x0c, 0xac, 0xe7, 0x8a, 0xf7, 0x55, 0xf7, 0x20, 0x6c, 0xb4, 0xc6, 0x82, 0xff, 0x95, 0x2b, 0x00, - 0x8d, 0xbc, 0x8a, 0x9b, 0xa9, 0x8a, 0x82, 0xa0, 0x4d, 0xb4, 0x0b, 0xac, 0xd7, 0x7e, 0xfc, 0xba, 0x6d, 0xb4, 0xeb, 0xab, 0xd7, 0xff, 0xaf, 0x0a, 0x8c, 0xbc, 0x0b, 0xac, 0xfd, 0x55, 0xf7, 0x0f, - 0x8c, 0xc4, 0x42, 0x49, 0x20, 0x00, 0x00, 0x5c, 0x4b, 0xbc, 0xe3, 0x30, 0x00, 0xc0, 0x5e, 0x55, 0x28, 0xbc, 0xe3, 0x28, 0x78, 0x55, 0x55, 0x55, 0x65, 0x41, 0x23, 0x29, 0xe2, 0xaa, 0x73, 0xe5, - 0x85, 0x39, 0xe4, 0x20, 0xfe, 0xfe, 0xfa, 0x62, 0x24, 0x31, 0xa3, 0x20, 0xf8, 0x7c, 0xfa, 0xcb, 0x04, 0x29, 0xa3, 0x18, 0xaa, 0xda, 0xf3, 0xe0, 0xc4, 0x20, 0x82, 0x10, 0x88, 0x2a, 0x28, 0x9c, - 0x04, 0x21, 0xc3, 0x18, 0xe5, 0xf3, 0xe0, 0xe8, 0xe4, 0x20, 0xa2, 0x18, 0xfb, 0xae, 0xea, 0xaa, 0xe4, 0x28, 0xa3, 0x18, 0xef, 0xaf, 0xad, 0x8e, 0x04, 0x21, 0xa3, 0x18, 0x98, 0xed, 0xfa, 0xff, - 0x4c, 0xbc, 0x2b, 0xb4, 0x52, 0xad, 0xf7, 0xd5, 0x6c, 0xbc, 0x2b, 0xb4, 0x2a, 0xab, 0x22, 0xea, 0x6c, 0xbc, 0x4b, 0xb4, 0xdb, 0x3d, 0xd5, 0xe5, 0x6d, 0xbc, 0x2b, 0xb4, 0x3f, 0xc3, 0xbe, 0xeb, - 0x0f, 0xcd, 0x2c, 0xb4, 0xff, 0x7f, 0x0f, 0xd5, 0xad, 0xbc, 0x4c, 0xb4, 0xf5, 0xfd, 0xd4, 0x55, 0x8c, 0xbc, 0x0b, 0xac, 0xa2, 0x9e, 0xbf, 0xff, 0x6c, 0xbc, 0x2b, 0xb4, 0xa8, 0xde, 0xe2, 0x89, - 0x6c, 0xbc, 0x2b, 0xb4, 0xaf, 0x9a, 0xef, 0x9b, 0x6c, 0xbc, 0x0b, 0xb4, 0xa8, 0x27, 0xab, 0x02, 0xad, 0xc4, 0x2c, 0xb4, 0xff, 0xff, 0xd7, 0xfc, 0x8c, 0xc4, 0x2b, 0xb4, 0xaa, 0xa8, 0xa9, 0xff, - 0xad, 0xc4, 0x0b, 0xb4, 0x7e, 0xf7, 0x25, 0xbf, 0x6c, 0xbc, 0x2b, 0xb4, 0xbf, 0x2b, 0xbe, 0xe0, 0x6c, 0xbc, 0x2b, 0xb4, 0x02, 0xa8, 0x8b, 0xda, 0x6c, 0xbc, 0x0b, 0xb4, 0xae, 0x28, 0x58, 0xfa, - 0x6c, 0xbc, 0x0b, 0xac, 0xba, 0x2a, 0x89, 0x08, 0x6c, 0xbc, 0x2b, 0xb4, 0x0a, 0xab, 0xf3, 0x5e, 0x6c, 0xbc, 0x0b, 0xb4, 0xaa, 0xa0, 0x6a, 0x2e, 0x6b, 0xbc, 0x2c, 0xb4, 0xf6, 0x8b, 0xbb, 0xe2, - 0x6c, 0xbc, 0x2b, 0xb4, 0xaa, 0x28, 0xec, 0xf7, 0x6c, 0xbc, 0x2b, 0xb4, 0xde, 0xca, 0x22, 0xfb, 0x6c, 0xbc, 0x2b, 0xb4, 0x7f, 0xeb, 0xbb, 0xf8, 0x4c, 0xbc, 0x2b, 0xb4, 0xc9, 0xb8, 0x00, 0xa8, - 0x6c, 0xbc, 0x0b, 0xac, 0x7f, 0xaa, 0xaf, 0xa3, 0x4c, 0xbc, 0x0a, 0xac, 0xdf, 0xff, 0xaa, 0x8a, 0x4c, 0xb4, 0x0b, 0xac, 0xf5, 0xab, 0x0a, 0x22, 0x4c, 0xb4, 0xaa, 0xab, 0xba, 0x68, 0xa8, 0x80, - 0x4b, 0xb4, 0xca, 0xab, 0xdf, 0xbb, 0x02, 0x20, 0x4c, 0xbc, 0x0a, 0xac, 0xdf, 0xaa, 0x0a, 0x8e, 0x4c, 0xbc, 0x0a, 0xac, 0xbd, 0xba, 0xb7, 0xab, 0x4c, 0xb4, 0x0a, 0xac, 0x32, 0xde, 0xdc, 0xaf, - 0x4c, 0xb4, 0x0a, 0xac, 0xa7, 0xbb, 0x2a, 0xaa, 0x4c, 0xbc, 0x0a, 0xac, 0xff, 0xfe, 0xbf, 0xaa, 0x6c, 0xbc, 0x0b, 0xb4, 0x7d, 0x5b, 0xbe, 0x8f, 0x6b, 0xbc, 0x66, 0x7a, 0x00, 0x00, 0x6a, 0x00, - 0x6c, 0xbc, 0x46, 0x72, 0x00, 0xa0, 0x09, 0xa8, 0x4c, 0xb4, 0x0a, 0xac, 0x7e, 0x77, 0xdf, 0xcb, 0x2c, 0xb4, 0xea, 0xab, 0xf7, 0xba, 0xea, 0x80, 0x2b, 0xb4, 0xea, 0xab, 0xae, 0xee, 0xeb, 0x08, - 0x2c, 0xb4, 0xca, 0xab, 0xf5, 0xae, 0xab, 0x0a, 0x2b, 0xb4, 0xea, 0xab, 0x55, 0xfa, 0xbe, 0xa8, 0x2b, 0xb4, 0xca, 0xa3, 0xfe, 0xfa, 0xba, 0x2b, 0xad, 0xc4, 0x04, 0x6a, 0xaa, 0xaa, 0x4a, 0x42, - 0x2b, 0xb4, 0x4a, 0x93, 0xaa, 0x08, 0x29, 0x09, 0x4c, 0xb4, 0xea, 0xab, 0x55, 0xc2, 0x7a, 0x5e, 0x2b, 0xb4, 0x89, 0x9b, 0xa8, 0xa8, 0x7a, 0x5e, 0xeb, 0xa3, 0x28, 0x93, 0xb6, 0xaa, 0xab, 0x0a, - 0x2b, 0xac, 0x69, 0x9b, 0xf7, 0x7e, 0xff, 0x8a, 0xee, 0xc4, 0x48, 0x93, 0x55, 0x75, 0x7d, 0xcf, 0x2c, 0xac, 0x08, 0x8b, 0x57, 0x77, 0xff, 0x2a, 0xeb, 0xa3, 0xe8, 0x82, 0xff, 0xad, 0x0b, 0x00, - 0xca, 0xa3, 0xe8, 0x82, 0xfd, 0x82, 0x82, 0x00, 0xcb, 0xa3, 0x08, 0x8b, 0x7f, 0x7a, 0xaa, 0xa0, 0xca, 0xa3, 0xa7, 0x7a, 0xe7, 0xaa, 0xaa, 0x00, 0xca, 0xa3, 0x08, 0x8b, 0xde, 0x3e, 0xae, 0xa0, - 0xeb, 0xa3, 0x49, 0x93, 0x55, 0xe7, 0x0a, 0x00, 0x6d, 0xb4, 0xc7, 0x82, 0x97, 0x3e, 0xaa, 0xaa, 0x0b, 0xa4, 0x08, 0x8b, 0xaa, 0xee, 0xda, 0x22, 0xcb, 0xa3, 0x29, 0x8b, 0x7a, 0xfe, 0x2f, 0x28, - 0x0b, 0xac, 0x09, 0x83, 0xb5, 0xaa, 0xa3, 0x00, 0x0b, 0xac, 0x8a, 0x9b, 0xfd, 0xaa, 0xa8, 0xe0, 0x4c, 0xb4, 0x8a, 0x9b, 0x5f, 0xbf, 0x0a, 0x2d, 0x4c, 0xb4, 0xaa, 0x9b, 0xbd, 0xa2, 0xaa, 0x88, - 0x2c, 0xb4, 0xea, 0xa3, 0xad, 0x8b, 0xef, 0x7a, 0xee, 0xbc, 0xca, 0xa3, 0x7f, 0x5f, 0x55, 0x3f, 0x4c, 0xb4, 0xcb, 0xa3, 0xd5, 0xff, 0xaf, 0xe0, 0x2c, 0xac, 0xea, 0xa3, 0xe4, 0xe8, 0x8e, 0xa8, - 0x8d, 0xb4, 0xea, 0xa3, 0xf7, 0x5c, 0xeb, 0xca, 0x2c, 0xb4, 0xea, 0xa3, 0xff, 0xfe, 0xea, 0xfb, 0x4c, 0xb4, 0xea, 0xa3, 0xff, 0xbf, 0xbf, 0x2d, 0x2b, 0xac, 0xca, 0xa3, 0x32, 0xf8, 0xee, 0x5e, - 0x6c, 0xb4, 0xca, 0xa3, 0xf2, 0x5d, 0xdd, 0xbd, 0x4c, 0xb4, 0xca, 0xa3, 0xff, 0xfd, 0x7f, 0x5c, 0x2b, 0xac, 0x8a, 0x9b, 0xea, 0xaa, 0x0d, 0xaa, 0x4c, 0xb4, 0xca, 0xa3, 0xf2, 0x6b, 0x7b, 0x7e, - 0x0b, 0xac, 0xaa, 0xa3, 0x8a, 0xd3, 0xbf, 0x82, 0x0b, 0xac, 0xca, 0xa3, 0x78, 0xa7, 0xbb, 0xc6, 0x2b, 0xac, 0xaa, 0xa3, 0xaf, 0xaa, 0xb8, 0x9d, 0x2b, 0xac, 0xaa, 0xa3, 0x25, 0xbb, 0xe8, 0xea, - 0x2b, 0xac, 0xca, 0xa3, 0xec, 0x6a, 0x7d, 0xed, 0x0b, 0xac, 0xca, 0xa3, 0xfc, 0x6a, 0x7d, 0x25, 0x0b, 0xac, 0xaa, 0xa3, 0xa2, 0xab, 0xea, 0xb4, 0x0b, 0xac, 0x69, 0x9b, 0xa0, 0xa8, 0xa5, 0x2a, - 0x2c, 0xb4, 0xa9, 0x9b, 0xf2, 0x73, 0xff, 0xde, 0xeb, 0xa3, 0x89, 0x9b, 0xdf, 0xaa, 0xe2, 0x3a, 0x0b, 0xac, 0x49, 0x9b, 0xf9, 0xe3, 0xab, 0xa0, 0x0b, 0xac, 0xaa, 0x9b, 0x55, 0x5d, 0xab, 0x23, - 0x4b, 0xb4, 0x89, 0x9b, 0x7b, 0x7d, 0xff, 0xf8, 0xea, 0xa3, 0xe7, 0x8a, 0x2a, 0x00, 0x00, 0x70, 0xea, 0xab, 0xe8, 0x8a, 0x8a, 0xaa, 0xaa, 0x09, 0x2b, 0xac, 0x8a, 0x9b, 0xbf, 0xaf, 0x29, 0x82, - 0x0b, 0xac, 0x28, 0x93, 0xe8, 0xe8, 0xa8, 0xb5, 0x0b, 0xac, 0xe8, 0x8a, 0x82, 0xa2, 0x80, 0x7e, 0x2b, 0xb4, 0x89, 0x9b, 0xaa, 0x2a, 0x02, 0x72, 0x4c, 0xb4, 0x69, 0x9b, 0xa8, 0x80, 0xa8, 0xf7, - 0x4c, 0xb4, 0x28, 0x93, 0x00, 0x00, 0xde, 0xeb, 0x4c, 0xb4, 0xa6, 0x82, 0x10, 0xa0, 0x0a, 0x02, 0x6c, 0xbc, 0xea, 0xab, 0xaf, 0xea, 0xa4, 0x8f, 0x6c, 0xbc, 0xeb, 0xab, 0xed, 0x8f, 0x8a, 0xa0, - 0xcd, 0xcc, 0xc4, 0x69, 0x6a, 0x52, 0xf8, 0xfa, 0x0b, 0xac, 0xa7, 0x82, 0xfd, 0xad, 0x2b, 0x0a, 0x4c, 0xb4, 0xaa, 0x9b, 0xf5, 0xae, 0xaa, 0x0a, 0x4c, 0xbc, 0x0b, 0xac, 0xbf, 0xbe, 0xee, 0xaa, - 0xee, 0xcc, 0x04, 0x72, 0x2a, 0xaa, 0x4a, 0x4a, 0x0b, 0xac, 0xe3, 0x69, 0x2f, 0x29, 0x2a, 0x0a, 0x8d, 0xc4, 0xeb, 0xa3, 0xad, 0xbf, 0x2b, 0x2b, 0xce, 0xc4, 0x28, 0x93, 0xd2, 0xfc, 0xb6, 0xaf, - 0x4c, 0xb4, 0x6a, 0x93, 0x29, 0x02, 0x88, 0x00, 0x4c, 0xbc, 0x0b, 0xac, 0xaa, 0xaa, 0x9e, 0x8f, 0x6c, 0xbc, 0x2b, 0xb4, 0xb9, 0xaa, 0xff, 0xeb, 0xad, 0xc4, 0x42, 0x59, 0x00, 0x00, 0x00, 0x60, - 0x8c, 0xc4, 0xc2, 0x38, 0x00, 0x00, 0x00, 0x55, 0xab, 0xc4, 0xe2, 0x30, 0x00, 0x00, 0x5e, 0x55, 0xaa, 0xc4, 0x03, 0x31, 0x00, 0x78, 0x55, 0x55, 0xaa, 0xcc, 0x03, 0x31, 0x78, 0x55, 0x55, 0x55, - 0xa6, 0x41, 0x04, 0x31, 0xad, 0x8d, 0xdd, 0x2b, 0x65, 0x41, 0x03, 0x21, 0x57, 0xbe, 0x5e, 0xe2, 0x44, 0x29, 0xc3, 0x20, 0x56, 0x5a, 0xfa, 0xe2, 0x44, 0x29, 0xc3, 0x20, 0xa9, 0xfd, 0xaa, 0x00, - 0x44, 0x31, 0xc3, 0x20, 0x72, 0xeb, 0xfb, 0x78, 0x04, 0x29, 0xc3, 0x10, 0x8a, 0xbf, 0xb6, 0xbf, 0x24, 0x21, 0xa3, 0x18, 0x7f, 0xff, 0x7b, 0x8a, 0xe4, 0x20, 0xa2, 0x10, 0xb6, 0xfa, 0xf2, 0x60, - 0x04, 0x21, 0xa2, 0x10, 0xef, 0xef, 0xff, 0xbf, 0x24, 0x29, 0xa3, 0x10, 0xff, 0xff, 0xaa, 0x2d, 0x24, 0x31, 0xa3, 0x18, 0x3f, 0x2d, 0xa0, 0xaa, 0x24, 0x29, 0xa3, 0x18, 0xee, 0xf2, 0x60, 0xf7, - 0x4c, 0xb4, 0x0b, 0xac, 0xaf, 0x0b, 0xaf, 0xb2, 0x4c, 0xbc, 0x0b, 0xac, 0xa0, 0xbf, 0xaf, 0xbf, 0x6c, 0xbc, 0x2b, 0xb4, 0xff, 0xcf, 0x5a, 0xef, 0x4c, 0xbc, 0x2b, 0xac, 0xa2, 0xad, 0xbf, 0xaa, - 0x4c, 0xbc, 0x0b, 0xac, 0x88, 0x2e, 0x0a, 0x68, 0x6c, 0xbc, 0x0b, 0xac, 0xd7, 0xe8, 0xba, 0xbf, 0x6c, 0xbc, 0xcb, 0xa3, 0x82, 0xa8, 0x7a, 0xaa, 0xcc, 0xc4, 0x0b, 0xac, 0xef, 0xff, 0x2d, 0x77, - 0x8c, 0xbc, 0x2b, 0xac, 0x0d, 0x82, 0xea, 0xb5, 0xad, 0xc4, 0x2b, 0xb4, 0xf2, 0xfd, 0xf7, 0x5f, 0x8c, 0xbc, 0x2b, 0xb4, 0xcb, 0xfa, 0x57, 0xbb, 0x8c, 0xbc, 0x2b, 0xb4, 0xff, 0x5f, 0xad, 0x02, - 0x6d, 0xbc, 0x2b, 0xb4, 0xbf, 0x2f, 0xae, 0xb6, 0x6c, 0xbc, 0x4b, 0xb4, 0x88, 0xba, 0xba, 0x5d, 0x6c, 0xbc, 0x2b, 0xb4, 0xca, 0xab, 0xda, 0xda, 0x6c, 0xbc, 0xeb, 0xab, 0xa8, 0xa9, 0x8a, 0x0a, - 0x4c, 0xbc, 0x2b, 0xac, 0xba, 0xf2, 0xab, 0xf8, 0x4c, 0xbc, 0x2b, 0xb4, 0xee, 0x7f, 0x73, 0xe2, 0x6c, 0xbc, 0x2b, 0xb4, 0xab, 0xf9, 0xf9, 0xa3, 0x6c, 0xbc, 0xca, 0xab, 0x28, 0xa2, 0xb7, 0x00, - 0x4c, 0xbc, 0x0b, 0xac, 0x2a, 0x00, 0x88, 0x78, 0x6c, 0xbc, 0xca, 0xa3, 0xaa, 0xa2, 0xaa, 0xa9, 0x8c, 0xbc, 0x0b, 0xac, 0xef, 0xfb, 0xdd, 0xef, 0x6c, 0xbc, 0x0b, 0xb4, 0x27, 0xaf, 0xeb, 0xbf, - 0x6c, 0xbc, 0x0b, 0xb4, 0xfe, 0xbe, 0x72, 0xde, 0x6b, 0xbc, 0x2c, 0xb4, 0xbf, 0x7a, 0x57, 0xbd, 0x4c, 0xbc, 0x0b, 0xac, 0xea, 0xba, 0xca, 0xfa, 0x6c, 0xbc, 0x2b, 0xac, 0xab, 0xee, 0xef, 0xfd, - 0x4c, 0xbc, 0x0b, 0xb4, 0xca, 0x62, 0xbe, 0xe2, 0x6c, 0xbc, 0x2b, 0xb4, 0x7d, 0xf7, 0xfd, 0xf0, 0x6c, 0xb4, 0x0b, 0xac, 0xff, 0xf2, 0xbe, 0xb7, 0x4c, 0xbc, 0x2b, 0xac, 0xef, 0xbe, 0xea, 0xae, - 0x6c, 0xbc, 0x0a, 0xb4, 0xf7, 0x8e, 0xef, 0xbf, 0x6c, 0xbc, 0x0a, 0xb4, 0xba, 0x9e, 0x9f, 0x3f, 0x6c, 0xbc, 0x0b, 0xb4, 0x2e, 0x7f, 0xbf, 0xbe, 0x2c, 0xbc, 0x0b, 0xac, 0xbe, 0xfa, 0xea, 0xfa, - 0x2c, 0xbc, 0xea, 0xab, 0x9e, 0xaf, 0xaf, 0xeb, 0x6c, 0xbc, 0x0a, 0xac, 0xfb, 0xbf, 0x16, 0x7e, 0x4c, 0xb4, 0x0b, 0xac, 0xab, 0x20, 0x3e, 0x27, 0x4c, 0xb4, 0xc6, 0x8a, 0x60, 0x00, 0xa0, 0x00, - 0x4b, 0xb4, 0x8a, 0xa3, 0xad, 0xab, 0x28, 0xaa, 0x2b, 0xb4, 0x8a, 0x9b, 0x29, 0x00, 0xa0, 0x00, 0x4c, 0xb4, 0x0b, 0xac, 0xc1, 0x23, 0xf1, 0xb2, 0x4c, 0xb4, 0xca, 0xab, 0x88, 0xa8, 0xeb, 0xdb, - 0x6c, 0xb4, 0xea, 0xab, 0x1f, 0xff, 0x75, 0xde, 0x2b, 0xb4, 0xaa, 0xa3, 0xcc, 0xa6, 0xea, 0xf0, 0x2b, 0xac, 0x8a, 0xa3, 0x2d, 0xa0, 0xae, 0x8a, 0x4b, 0xb4, 0xaa, 0x9b, 0xfd, 0xa8, 0xaf, 0xfa, - 0x2b, 0xac, 0xca, 0xa3, 0xee, 0xfe, 0xf4, 0xa9, 0x2b, 0xac, 0xca, 0xa3, 0xdf, 0xfb, 0x2e, 0x5f, 0x6c, 0xb4, 0xca, 0xa3, 0xff, 0xf7, 0xf4, 0x7d, 0x2b, 0xac, 0xca, 0xa3, 0xff, 0xff, 0xa7, 0xf8, - 0xeb, 0xab, 0xaa, 0xa3, 0x5e, 0x57, 0x1c, 0x5e, 0x0b, 0xac, 0x8a, 0x9b, 0xff, 0xbf, 0x8d, 0x8b, 0x6c, 0xb4, 0xca, 0xa3, 0x75, 0x7b, 0xfc, 0xed, 0x2b, 0xb4, 0xaa, 0x9b, 0xf5, 0xab, 0x36, 0x0a, - 0x2b, 0xac, 0xaa, 0x9b, 0x37, 0x8b, 0x0b, 0xba, 0x6d, 0xb4, 0xca, 0xa3, 0x37, 0xff, 0xea, 0xff, 0x0f, 0xc5, 0xca, 0xa3, 0x73, 0x7f, 0x7f, 0xd5, 0x2c, 0xb4, 0xca, 0x9b, 0x2b, 0x09, 0xac, 0xde, - 0x2b, 0xac, 0xca, 0xa3, 0xac, 0xee, 0xd7, 0x7c, 0x4c, 0xb4, 0xaa, 0x9b, 0xfe, 0xff, 0xfc, 0xbd, 0x4c, 0xb4, 0xcb, 0xa3, 0x8d, 0xf2, 0xa3, 0x22, 0x2c, 0xac, 0xeb, 0xa3, 0x80, 0x7e, 0x83, 0x21, - 0x2c, 0xb4, 0xeb, 0xab, 0xdd, 0xcb, 0x5f, 0xfb, 0x4c, 0xb4, 0xea, 0xa3, 0xbf, 0xed, 0xa3, 0xef, 0x6c, 0xb4, 0xcb, 0xab, 0xea, 0xd8, 0x78, 0xbf, 0x6c, 0xb4, 0xea, 0xab, 0x5f, 0x7f, 0x57, 0x73, - 0x2c, 0xac, 0xca, 0xa3, 0x8a, 0x6d, 0xfb, 0x6b, 0x0b, 0xac, 0xca, 0xa3, 0x82, 0xba, 0xa6, 0x99, 0x4c, 0xb4, 0xaa, 0x9b, 0xb2, 0xde, 0xb7, 0xbf, 0x0b, 0xac, 0xca, 0xa3, 0xcf, 0xcb, 0x7a, 0x8a, - 0x0c, 0xac, 0xca, 0xa3, 0xfa, 0x97, 0xff, 0xe2, 0x4c, 0xac, 0xca, 0xa3, 0xd5, 0x5f, 0xb7, 0x58, 0x4c, 0xac, 0xca, 0xa3, 0x8d, 0xfb, 0xcb, 0xf7, 0x2b, 0xac, 0x48, 0x93, 0xaa, 0xaa, 0x00, 0xd7, - 0x4b, 0xb4, 0xc7, 0x82, 0xaa, 0x22, 0x6a, 0xaa, 0x6b, 0xb4, 0x67, 0x72, 0xaa, 0xa8, 0xad, 0xaa, 0x0a, 0xac, 0xe5, 0x71, 0x00, 0x00, 0x80, 0x5e, 0xea, 0xab, 0x06, 0x6a, 0x00, 0x00, 0xd6, 0xa9, - 0xea, 0xab, 0x26, 0x62, 0x00, 0xa0, 0xd5, 0x02, 0x2a, 0xac, 0x08, 0x8b, 0xaa, 0xb7, 0xaf, 0x4b, 0x2b, 0xac, 0xc8, 0x82, 0x0a, 0xa0, 0xde, 0xab, 0x2a, 0xac, 0x28, 0x93, 0xaa, 0xd7, 0xbf, 0x02, - 0xeb, 0xa3, 0xc5, 0x82, 0x20, 0xf0, 0x0a, 0x58, 0x0b, 0xac, 0x86, 0x82, 0x08, 0xaa, 0xea, 0xdd, 0xea, 0xab, 0x26, 0x8b, 0x08, 0xfa, 0xff, 0x6a, 0x2a, 0xac, 0x20, 0x59, 0xa8, 0xaa, 0x02, 0x5f, - 0xca, 0xa3, 0xa3, 0x61, 0x00, 0x0a, 0xc8, 0x7d, 0xe9, 0xa3, 0xe1, 0x50, 0x00, 0xa0, 0x55, 0x57, 0x6a, 0xb4, 0x42, 0x59, 0x82, 0x9f, 0xb5, 0xf5, 0xea, 0xab, 0xc6, 0x8a, 0x28, 0x29, 0x03, 0xc9, - 0x6b, 0xbc, 0xe1, 0x48, 0x8a, 0xaa, 0x80, 0x57, 0x6b, 0xbc, 0x41, 0x59, 0x2a, 0x00, 0xf7, 0xd5, 0x0a, 0xac, 0xe2, 0x69, 0x00, 0xa0, 0xea, 0x7a, 0x2a, 0xb4, 0xe4, 0x71, 0x00, 0xb9, 0xaa, 0xb7, - 0x2b, 0xb4, 0xa7, 0x82, 0xc2, 0xda, 0xaa, 0xaa, 0xad, 0xc4, 0x63, 0x7a, 0xaa, 0x2a, 0x0a, 0x7b, 0xad, 0xc4, 0x85, 0x82, 0xaa, 0xaa, 0x0a, 0xb7, 0x8d, 0xc4, 0xca, 0xab, 0x2a, 0xe8, 0xe0, 0x9f, - 0x4c, 0xbc, 0x86, 0x7a, 0x9a, 0xaa, 0xa8, 0x00, 0x2b, 0xb4, 0xc9, 0xa3, 0x2b, 0xad, 0xea, 0xa0, 0x4b, 0xbc, 0xca, 0xab, 0x88, 0xab, 0xb9, 0xfd, 0x4c, 0xb4, 0x68, 0x9b, 0x80, 0xbd, 0xab, 0x8a, - 0xee, 0xcc, 0x45, 0x72, 0xd2, 0xde, 0xbe, 0xbe, 0x4b, 0xbc, 0x6a, 0x93, 0xa9, 0xaf, 0x2a, 0x0a, 0x8d, 0xc4, 0xc6, 0x8a, 0x82, 0x42, 0xa8, 0xaa, 0x8c, 0xbc, 0x88, 0xa3, 0xad, 0x0a, 0x8a, 0xbd, - 0x6c, 0xbc, 0xc9, 0xab, 0xaa, 0xaa, 0x28, 0xa9, 0x6d, 0xbc, 0x2a, 0xb4, 0xab, 0x2a, 0x02, 0x85, 0xad, 0xc4, 0x4c, 0xb4, 0xfd, 0xee, 0x3f, 0xbb, 0x6c, 0xc4, 0xe3, 0x30, 0x70, 0x5c, 0x56, 0x55, - 0x65, 0x41, 0xc3, 0x18, 0x70, 0x7a, 0xee, 0xef, 0x44, 0x29, 0xc3, 0x18, 0x2f, 0xaf, 0xdf, 0xff, 0x45, 0x39, 0xc3, 0x18, 0xe0, 0xfe, 0xde, 0x5f, 0x24, 0x31, 0xa3, 0x18, 0x82, 0xf2, 0xff, 0xdf, - 0xe6, 0x49, 0xa3, 0x18, 0x0b, 0xff, 0xff, 0xf5, 0x85, 0x41, 0x04, 0x29, 0x8a, 0x9e, 0x7b, 0x7a, 0xa5, 0x41, 0xe4, 0x20, 0xf7, 0xdc, 0xaf, 0x8b, 0x45, 0x31, 0xe4, 0x20, 0x7b, 0xdf, 0xe8, 0x82, - 0xe4, 0x20, 0xc3, 0x18, 0xe2, 0xde, 0x76, 0x38, 0x45, 0x29, 0xe3, 0x20, 0xb5, 0xd5, 0xdd, 0x2d, 0x65, 0x39, 0xe3, 0x20, 0x8f, 0xeb, 0xba, 0x56, 0x04, 0x31, 0xc3, 0x18, 0xd8, 0xa8, 0xa8, 0x7f, - 0x04, 0x21, 0xc3, 0x18, 0x66, 0xa8, 0x00, 0xe2, 0x24, 0x21, 0xa3, 0x10, 0xdd, 0x7f, 0x7a, 0xe2, 0xe4, 0x20, 0xa3, 0x18, 0x89, 0x89, 0xfe, 0x2a, 0x04, 0x21, 0xc3, 0x18, 0xbd, 0xfe, 0xff, 0x2a, - 0x4c, 0xbc, 0xca, 0xa3, 0xab, 0x2a, 0xae, 0x5f, 0x8c, 0xbc, 0x0b, 0xb4, 0xfb, 0xff, 0xff, 0xcd, 0x6c, 0xbc, 0x2b, 0xb4, 0xee, 0x7f, 0x6c, 0x55, 0x6c, 0xbc, 0x0b, 0xac, 0xaf, 0x16, 0x8b, 0xba, - 0x6c, 0xbc, 0xeb, 0xab, 0x7a, 0xaa, 0x0a, 0xba, 0x6c, 0xbc, 0x0b, 0xac, 0x08, 0xaa, 0xef, 0x5f, 0x6c, 0xbc, 0xeb, 0xab, 0xe8, 0x9b, 0xf7, 0xff, 0x4c, 0xb4, 0xca, 0xa3, 0xab, 0xfd, 0x7f, 0x3b, - 0x4c, 0xb4, 0xeb, 0xab, 0xbf, 0xa8, 0x0e, 0xb6, 0x4c, 0xb4, 0xea, 0xab, 0xe8, 0x2d, 0xe8, 0xaf, 0x6c, 0xbc, 0x0b, 0xb4, 0x2f, 0xfb, 0xd5, 0xbf, 0xac, 0xc4, 0x0b, 0xac, 0xa8, 0x5f, 0x7f, 0xbf, - 0x6d, 0xbc, 0x4b, 0xb4, 0x9e, 0xf9, 0x69, 0x7d, 0x8c, 0xbc, 0x0b, 0xb4, 0xb8, 0xaa, 0xd7, 0x2f, 0x8c, 0xbc, 0x0b, 0xb4, 0xfa, 0xde, 0x7a, 0xb8, 0x4c, 0xbc, 0x0b, 0xb4, 0x0b, 0x8a, 0xab, 0x07, - 0x6c, 0xbc, 0x0b, 0xb4, 0xbf, 0xaa, 0xaa, 0x78, 0x4c, 0xbc, 0xeb, 0xa3, 0x28, 0x0a, 0x2f, 0x77, 0x6c, 0xbc, 0x0b, 0xac, 0xa0, 0xb8, 0xaa, 0xf9, 0x6c, 0xbc, 0xeb, 0xab, 0xa0, 0xea, 0xaa, 0x6a, - 0x2b, 0xb4, 0xea, 0xab, 0x00, 0x00, 0x00, 0x7a, 0x4c, 0xbc, 0xea, 0xab, 0xab, 0x80, 0x0a, 0x7f, 0x4c, 0xbc, 0xea, 0xab, 0x02, 0x2b, 0x28, 0x07, 0x4c, 0xbc, 0xe7, 0x82, 0x70, 0x00, 0x00, 0x28, - 0x4c, 0xbc, 0xeb, 0xa3, 0xbd, 0xb8, 0xaa, 0x8a, 0x4c, 0xb4, 0x0b, 0xac, 0x2e, 0x60, 0x80, 0xab, 0x6c, 0xbc, 0x0b, 0xac, 0xb7, 0xed, 0xaf, 0x7c, 0x8c, 0xbc, 0x2b, 0xb4, 0x9f, 0xcd, 0xf7, 0x5d, - 0x6c, 0xbc, 0x0b, 0xb4, 0x2a, 0xab, 0x2a, 0x7b, 0x4c, 0xbc, 0x0b, 0xac, 0xa0, 0xee, 0xb2, 0xb7, 0x4c, 0xbc, 0x2b, 0xb4, 0x77, 0xe3, 0x74, 0xdf, 0x4c, 0xbc, 0x0b, 0xac, 0xf8, 0xaa, 0x9b, 0xdb, - 0x4c, 0xbc, 0x2b, 0xb4, 0xe5, 0x78, 0x2f, 0xe5, 0x6c, 0xbc, 0x0a, 0xb4, 0xbf, 0xbc, 0x85, 0xea, 0x4c, 0xb4, 0xeb, 0xab, 0xb8, 0x00, 0xa6, 0x2a, 0x6d, 0xbc, 0x0b, 0xac, 0x3e, 0xff, 0x97, 0x7f, - 0xce, 0xc4, 0x0b, 0xac, 0xff, 0xf2, 0xdd, 0x5f, 0x4c, 0xb4, 0xca, 0xab, 0x28, 0x00, 0x76, 0xef, 0x4c, 0xbc, 0x0b, 0xac, 0xab, 0xae, 0x0f, 0xff, 0x2b, 0xb4, 0x89, 0xa3, 0x00, 0x80, 0x26, 0x00, - 0x4b, 0xb4, 0xca, 0xa3, 0x4a, 0x0b, 0xaa, 0xc2, 0x6c, 0xbc, 0xca, 0xab, 0xba, 0xe2, 0xd7, 0xf7, 0x2b, 0xb4, 0xaa, 0xa3, 0x22, 0xba, 0xad, 0xaf, 0x4b, 0xb4, 0xaa, 0xa3, 0xa2, 0xa8, 0xdf, 0xde, - 0x4b, 0xb4, 0xca, 0xa3, 0xaa, 0x2a, 0xd5, 0xfb, 0x6c, 0xbc, 0xca, 0xa3, 0xf7, 0xe0, 0x6f, 0xfb, 0x8d, 0xbc, 0xaa, 0xa3, 0xeb, 0xcb, 0xdf, 0x7f, 0x2b, 0xac, 0xaa, 0xa3, 0xe8, 0xd6, 0xff, 0xa9, - 0x2b, 0xac, 0x8a, 0x9b, 0xf2, 0xd7, 0xbf, 0xaf, 0x4c, 0xac, 0xcb, 0xa3, 0xed, 0xff, 0x82, 0x2a, 0x2b, 0xac, 0xca, 0xa3, 0xab, 0xf7, 0x8a, 0x98, 0x6c, 0xb4, 0x8a, 0x9b, 0x8a, 0xff, 0xfd, 0xdf, - 0x2b, 0xac, 0x8a, 0x9b, 0x97, 0xab, 0x82, 0x0a, 0xce, 0xbc, 0xca, 0xa3, 0x57, 0x55, 0x3d, 0xf7, 0x4c, 0xac, 0xcb, 0xa3, 0xef, 0xad, 0x3c, 0xb6, 0x6c, 0xb4, 0xeb, 0xab, 0x75, 0xa2, 0xba, 0x0b, - 0x4c, 0xb4, 0xaa, 0xa3, 0xff, 0x80, 0xe9, 0x00, 0x6c, 0xb4, 0xcb, 0xa3, 0xfe, 0x27, 0x8b, 0xea, 0x6c, 0xb4, 0x8a, 0x9b, 0xaa, 0x82, 0xfa, 0xf7, 0x2b, 0xa4, 0x08, 0x8b, 0xa0, 0xb6, 0xaf, 0xba, - 0x2b, 0xac, 0xa9, 0x9b, 0xf9, 0xab, 0x2d, 0x5d, 0x4c, 0xb4, 0x89, 0x93, 0x2f, 0x82, 0xaa, 0xdf, 0x4c, 0xb4, 0xcb, 0xa3, 0xfa, 0x5c, 0xae, 0x88, 0x4c, 0xb4, 0xea, 0xa3, 0x02, 0xb9, 0x6f, 0x7b, - 0x6c, 0xb4, 0x49, 0x93, 0xbe, 0x82, 0x7a, 0x3a, 0x6d, 0xb4, 0x68, 0x93, 0xa2, 0xba, 0xf5, 0x7e, 0x2b, 0xac, 0x07, 0x8b, 0x02, 0xfa, 0xdd, 0xe5, 0x4b, 0xac, 0x86, 0x7a, 0xae, 0xfa, 0x2a, 0x6a, - 0x2c, 0xac, 0xe8, 0x8a, 0x0a, 0x8f, 0xe8, 0xdd, 0x4b, 0xb4, 0x08, 0x8b, 0x82, 0x2a, 0xdd, 0xe3, 0x0b, 0xac, 0x65, 0x7a, 0xaa, 0xa0, 0x2a, 0x5a, 0x2b, 0xac, 0xe7, 0x8a, 0x02, 0xb6, 0xaa, 0xfd, - 0x2b, 0xac, 0xe7, 0x92, 0x58, 0xaf, 0x82, 0x7f, 0x2a, 0xac, 0xa7, 0x82, 0xfb, 0xaa, 0x02, 0x7e, 0x0a, 0xac, 0xc9, 0x82, 0xfa, 0x80, 0x82, 0xf5, 0xca, 0xa3, 0x65, 0x7a, 0x2a, 0xe2, 0x5a, 0xfe, - 0x2a, 0xac, 0x46, 0x72, 0xe0, 0xbf, 0x5d, 0xab, 0x4b, 0xac, 0xc4, 0x61, 0xff, 0xfa, 0xf5, 0x0a, 0x2c, 0xac, 0x05, 0x6a, 0x2b, 0x56, 0xb5, 0xa8, 0xeb, 0xa3, 0x02, 0x59, 0x00, 0x57, 0x02, 0x00, - 0x2a, 0xac, 0x03, 0x51, 0x00, 0x55, 0x00, 0xaa, 0x4b, 0xac, 0x22, 0x51, 0xba, 0x57, 0x00, 0xaa, 0x8a, 0xbc, 0x23, 0x51, 0x00, 0x55, 0x80, 0x5f, 0x2a, 0xac, 0xe2, 0x40, 0x60, 0x8b, 0x7f, 0x55, - 0xa9, 0x9b, 0xc2, 0x38, 0x2d, 0xfe, 0xd5, 0x75, 0x88, 0xa3, 0x23, 0x49, 0xc0, 0x55, 0x55, 0x55, 0x83, 0x59, 0x02, 0x41, 0x0c, 0xee, 0xcb, 0x9a, 0x85, 0x7a, 0x03, 0x49, 0xd7, 0x3f, 0xd5, 0xff, - 0x24, 0x72, 0x23, 0x59, 0xa0, 0xea, 0x75, 0x2b, 0x66, 0x7a, 0x63, 0x59, 0xf8, 0x55, 0x5f, 0x7f, 0x25, 0x72, 0x42, 0x51, 0xf7, 0x37, 0xbf, 0x3f, 0x68, 0x93, 0xe4, 0x71, 0x5b, 0xaa, 0x8b, 0x02, - 0x69, 0x9b, 0x23, 0x59, 0x5f, 0xfa, 0xe0, 0x00, 0x48, 0x93, 0x23, 0x51, 0xbd, 0x2f, 0x0a, 0x00, 0x27, 0x93, 0x25, 0x72, 0xdf, 0xa2, 0x00, 0x00, 0x89, 0xa3, 0x07, 0x8b, 0x27, 0xbb, 0xed, 0xea, - 0x0a, 0xb4, 0x28, 0x93, 0x8f, 0x8f, 0xad, 0xa9, 0xea, 0xab, 0xe8, 0x92, 0x48, 0xa0, 0xa0, 0x00, 0x8d, 0xbc, 0x24, 0x72, 0xaf, 0x0a, 0x6a, 0x2a, 0xab, 0xc4, 0x62, 0x59, 0xaa, 0x88, 0xfb, 0xd7, - 0x4b, 0xbc, 0xc5, 0x8a, 0x0a, 0x02, 0x00, 0x9a, 0x4b, 0xbc, 0x29, 0x8b, 0xa2, 0xde, 0xa2, 0x2a, 0x2b, 0xb4, 0xa8, 0xa3, 0x29, 0xab, 0x0a, 0xab, 0x8c, 0xc4, 0xca, 0xa3, 0xf7, 0xaf, 0xaf, 0x8b, - 0xc9, 0xa3, 0xa2, 0x69, 0x2a, 0x29, 0x0b, 0xab, 0x8d, 0xc4, 0x48, 0x9b, 0xbf, 0x2a, 0xaa, 0x6b, 0x4c, 0xbc, 0xaa, 0xa3, 0x3b, 0xed, 0x03, 0xa2, 0x6d, 0xbc, 0x20, 0x59, 0xc2, 0xe0, 0xd0, 0xb0, - 0x4c, 0xbc, 0x48, 0x9b, 0xfd, 0xfd, 0xbe, 0x2e, 0x6c, 0xbc, 0xea, 0xab, 0x77, 0xff, 0xea, 0xa8, 0x8d, 0xc4, 0x02, 0x41, 0xca, 0x4a, 0x4a, 0x42, 0x24, 0x39, 0xc3, 0x20, 0xf8, 0xaf, 0x7e, 0xea, - 0x24, 0x29, 0xc3, 0x20, 0xaa, 0xd4, 0xf5, 0xfc, 0x45, 0x29, 0xe3, 0x20, 0xaf, 0xff, 0xa7, 0x25, 0x25, 0x29, 0xc3, 0x18, 0x5e, 0x76, 0x76, 0x70, 0x04, 0x21, 0xa3, 0x18, 0xfe, 0xfe, 0xb7, 0x2a, - 0x24, 0x31, 0xc3, 0x18, 0x35, 0x35, 0xb7, 0xff, 0xc7, 0x49, 0xe3, 0x20, 0xe2, 0xea, 0xff, 0x55, 0x45, 0x31, 0xa3, 0x20, 0x8a, 0xfe, 0xdf, 0x28, 0x45, 0x29, 0xc3, 0x18, 0xf7, 0xbd, 0xbd, 0x00, - 0x45, 0x31, 0xc3, 0x18, 0xdf, 0xfe, 0xfe, 0x78, 0x04, 0x29, 0xc3, 0x18, 0xab, 0xbb, 0xb5, 0x29, 0x24, 0x29, 0xc3, 0x18, 0xff, 0xaf, 0xde, 0x68, 0x24, 0x29, 0xc3, 0x20, 0xaf, 0x2e, 0x5f, 0xdd, - 0x24, 0x29, 0xe3, 0x20, 0xa5, 0xe2, 0xb5, 0x45, 0x24, 0x31, 0xc3, 0x18, 0x7e, 0x7a, 0x58, 0xff, 0x04, 0x21, 0xc3, 0x18, 0x2f, 0xad, 0x89, 0x2f, 0x24, 0x29, 0xe3, 0x20, 0xba, 0x77, 0x7e, 0xfc, - 0x2c, 0xb4, 0xaa, 0xa3, 0xaa, 0xf8, 0x57, 0x8a, 0x0b, 0xac, 0xaa, 0xa3, 0x2b, 0x7a, 0xae, 0x22, 0x2b, 0xb4, 0xca, 0xa3, 0x88, 0x09, 0x2a, 0xea, 0x2c, 0xb4, 0xca, 0xa3, 0x29, 0x82, 0xda, 0xbf, - 0x4b, 0xb4, 0xca, 0xa3, 0xa8, 0xbf, 0xb7, 0x3f, 0x4c, 0xb4, 0xca, 0xa3, 0xe2, 0xde, 0x8a, 0x2e, 0x4c, 0xbc, 0xeb, 0xab, 0xff, 0xae, 0xbe, 0x00, 0x4c, 0xbc, 0x0b, 0xac, 0x2b, 0xea, 0xdb, 0xbe, - 0x4c, 0xbc, 0xca, 0xab, 0xf8, 0xaa, 0xa7, 0x2e, 0x4b, 0xbc, 0xaa, 0xa3, 0xae, 0x82, 0x5e, 0xae, 0x4c, 0xbc, 0xeb, 0xab, 0x2d, 0x3f, 0x75, 0xaa, 0x6c, 0xbc, 0xca, 0xab, 0xf8, 0xaa, 0xaa, 0x7a, - 0x4b, 0xb4, 0x6a, 0xa3, 0x82, 0x02, 0x9e, 0x2a, 0x4c, 0xbc, 0x0b, 0xb4, 0xaf, 0xff, 0x2f, 0x6a, 0x8c, 0xbc, 0x0b, 0xb4, 0xe3, 0xff, 0xed, 0xfd, 0x4b, 0xb4, 0xca, 0xab, 0x08, 0x02, 0xa2, 0xd0, - 0x4c, 0xbc, 0xca, 0xab, 0x02, 0xaa, 0x6a, 0xab, 0x2c, 0xb4, 0xca, 0xab, 0x00, 0x00, 0xe9, 0x8a, 0x4b, 0xb4, 0xaa, 0xa3, 0x8a, 0xad, 0xa2, 0x82, 0x4c, 0xbc, 0x8a, 0xa3, 0xba, 0x42, 0x02, 0x28, - 0x6c, 0xbc, 0x6a, 0xa3, 0xf8, 0xa9, 0xaa, 0x20, 0x4c, 0xbc, 0xeb, 0xab, 0xdb, 0xad, 0x9c, 0xa8, 0x8c, 0xbc, 0x2b, 0xac, 0x62, 0x5d, 0xaf, 0xa2, 0x4e, 0xcd, 0x0b, 0xac, 0xf7, 0x57, 0xff, 0xe3, - 0x6c, 0xbc, 0x0b, 0xac, 0xff, 0xdb, 0xf8, 0xea, 0x8d, 0xbc, 0x0b, 0xb4, 0x85, 0xea, 0xef, 0x57, 0x4c, 0xbc, 0xea, 0xab, 0xf8, 0xca, 0xe2, 0x75, 0x6c, 0xbc, 0x0b, 0xb4, 0xff, 0xed, 0xca, 0x89, - 0x6c, 0xbc, 0x0b, 0xac, 0x7e, 0x5f, 0xff, 0x28, 0xce, 0xc4, 0x0b, 0xac, 0xfd, 0xb3, 0xf7, 0xff, 0x8d, 0xbc, 0x0b, 0xac, 0x7f, 0xa3, 0xfe, 0xf7, 0x6c, 0xbc, 0x0b, 0xac, 0xff, 0xaa, 0xb5, 0x96, - 0x6c, 0xbc, 0xea, 0xa3, 0xff, 0x77, 0xa8, 0xaa, 0xad, 0xc4, 0x0b, 0xac, 0x7f, 0xbd, 0x3f, 0xef, 0x4c, 0xb4, 0xea, 0xa3, 0xaa, 0xb0, 0x94, 0x00, 0x4c, 0xb4, 0xea, 0xab, 0x65, 0x0b, 0x8b, 0xa8, - 0x4c, 0xb4, 0xea, 0xab, 0xbd, 0xae, 0xba, 0x22, 0x4c, 0xb4, 0xeb, 0xab, 0x7f, 0xae, 0x38, 0x80, 0xee, 0xc4, 0xeb, 0xab, 0xfc, 0xff, 0xf5, 0xff, 0x6c, 0xb4, 0x89, 0xa3, 0xfe, 0xf6, 0xaa, 0x82, - 0x6c, 0xbc, 0xeb, 0xab, 0xfd, 0xfd, 0xe3, 0x3b, 0x2b, 0xb4, 0xea, 0xab, 0x6d, 0x5e, 0xdb, 0x72, 0x2b, 0xb4, 0xea, 0xab, 0xf9, 0x7f, 0xb8, 0xcb, 0x2c, 0xb4, 0xea, 0xa3, 0xa5, 0xef, 0xaa, 0x03, - 0x4b, 0xb4, 0xca, 0xa3, 0x6b, 0xf2, 0xab, 0x3b, 0x0b, 0xb4, 0xca, 0xa3, 0xb8, 0x2a, 0xff, 0xeb, 0x2c, 0xac, 0xaa, 0x9b, 0xef, 0xc0, 0xbc, 0xf7, 0x2b, 0xac, 0x49, 0x93, 0x02, 0xa2, 0x7a, 0xff, - 0x2b, 0xac, 0x49, 0x8b, 0x22, 0x2a, 0xdd, 0xaa, 0x2c, 0xac, 0xaa, 0x9b, 0x0a, 0x3f, 0xe1, 0xdf, 0x2c, 0xac, 0x89, 0x9b, 0xa0, 0x0e, 0xaf, 0xdf, 0x2b, 0xac, 0x89, 0x9b, 0x0a, 0x00, 0xab, 0x5f, - 0x2b, 0xac, 0x49, 0x93, 0xa8, 0x08, 0x7a, 0xf7, 0x6c, 0xb4, 0x29, 0x93, 0x22, 0xaa, 0xb5, 0xaa, 0x4b, 0xb4, 0xa9, 0x9b, 0xa8, 0x82, 0x7f, 0x5e, 0x2b, 0xac, 0xe7, 0x8a, 0x00, 0x8a, 0xab, 0xdf, - 0x2a, 0xb4, 0x08, 0x8b, 0x00, 0xea, 0xba, 0x7f, 0x0a, 0xac, 0x07, 0x8b, 0x08, 0x5f, 0xfa, 0xff, 0x2a, 0xac, 0xc6, 0x69, 0x00, 0xaf, 0x5e, 0xaa, 0x0a, 0xac, 0x47, 0x72, 0xea, 0xaa, 0xd7, 0x0a, - 0xc9, 0x9b, 0xe8, 0x8a, 0xaf, 0xc0, 0xf5, 0xea, 0xea, 0xa3, 0x29, 0x8b, 0xbf, 0xff, 0xde, 0x09, 0xad, 0xbc, 0x89, 0x93, 0xcb, 0xad, 0xfd, 0xdf, 0x2a, 0xac, 0xa6, 0x82, 0x80, 0x80, 0xd6, 0xaa, - 0xea, 0xa3, 0xe5, 0x8a, 0xa0, 0xea, 0xfe, 0x7b, 0x0a, 0xac, 0x64, 0x7a, 0x00, 0xff, 0xeb, 0xd5, 0xea, 0xab, 0x03, 0x6a, 0x02, 0xaa, 0xfa, 0xd7, 0xa9, 0xa3, 0x24, 0x6a, 0x88, 0xbb, 0xbf, 0x57, - 0xca, 0xa3, 0xc3, 0x61, 0xad, 0x0a, 0x7e, 0xff, 0xc9, 0x9b, 0xe3, 0x61, 0xad, 0x22, 0x5a, 0xfa, 0xa9, 0xa3, 0x45, 0x72, 0xaa, 0x08, 0xad, 0xa9, 0xc9, 0xa3, 0x04, 0x72, 0x00, 0x00, 0xef, 0x7f, - 0xe9, 0xa3, 0x05, 0x6a, 0xaa, 0xaa, 0x2b, 0x3d, 0xe9, 0xa3, 0xa2, 0x61, 0x00, 0xba, 0xa0, 0xbd, 0xc9, 0xa3, 0x85, 0x7a, 0xa0, 0xae, 0xff, 0xb5, 0xc9, 0xa3, 0xa4, 0x61, 0x22, 0xa8, 0x57, 0x00, - 0xc9, 0xa3, 0x65, 0x72, 0x00, 0xba, 0xbd, 0xfe, 0x4a, 0xb4, 0xc5, 0x82, 0x80, 0x7f, 0xdf, 0x5d, 0xe9, 0xab, 0x66, 0x7a, 0xea, 0xe2, 0xde, 0x2a, 0xe9, 0xa3, 0x24, 0x72, 0xbf, 0xab, 0xaa, 0x7c, - 0xe9, 0xa3, 0xa4, 0x69, 0xae, 0xea, 0xe0, 0x55, 0x27, 0x8b, 0x43, 0x51, 0xf8, 0x58, 0xfa, 0x7b, 0xc5, 0x59, 0x23, 0x49, 0x7f, 0xeb, 0x7c, 0xfa, 0x43, 0x49, 0xc2, 0x28, 0xaa, 0xe0, 0x7e, 0x88, - 0x63, 0x51, 0xa2, 0x28, 0xbf, 0x9f, 0x35, 0x37, 0x84, 0x59, 0x22, 0x51, 0x5f, 0x7d, 0xeb, 0x8b, 0x83, 0x59, 0x22, 0x51, 0xff, 0xa5, 0x7f, 0xab, 0x84, 0x59, 0x42, 0x59, 0xad, 0x25, 0x29, 0xa2, - 0x45, 0x7a, 0x83, 0x59, 0xfd, 0x0b, 0x23, 0xf5, 0x05, 0x6a, 0x43, 0x59, 0x7e, 0xf8, 0xa0, 0xab, 0x27, 0x83, 0x64, 0x59, 0xb5, 0xbd, 0x2f, 0xaa, 0x68, 0x9b, 0x66, 0x7a, 0xab, 0x2a, 0xb2, 0xdf, - 0x89, 0x9b, 0x07, 0x8b, 0xea, 0xa1, 0xad, 0xeb, 0x89, 0x9b, 0xc7, 0x82, 0xfa, 0xfa, 0xbf, 0x4a, 0xaa, 0x9b, 0xc7, 0x82, 0xdf, 0xbf, 0xbd, 0x03, 0xa9, 0x9b, 0x48, 0x93, 0xd7, 0xb5, 0x3b, 0x80, - 0xca, 0xa3, 0x89, 0x93, 0x01, 0xe5, 0x3f, 0x2f, 0xaa, 0xab, 0x89, 0xa3, 0xa2, 0xaa, 0xb5, 0x7d, 0x2b, 0xb4, 0x89, 0xa3, 0xab, 0xbf, 0xaf, 0x3d, 0x4c, 0xb4, 0xa7, 0x82, 0xda, 0xaa, 0xa2, 0xa0, - 0x2a, 0xb4, 0xa7, 0x8a, 0x98, 0xa0, 0xa0, 0xa0, 0x0a, 0xb4, 0xe3, 0x71, 0xe8, 0x7a, 0xfe, 0xee, 0x4a, 0xb4, 0x64, 0x82, 0x02, 0x7f, 0xab, 0x5f, 0x4b, 0xb4, 0x21, 0x51, 0x60, 0xbe, 0xae, 0x2b, - 0xea, 0xab, 0x42, 0x51, 0x2d, 0x08, 0x00, 0x2c, 0x4c, 0xbc, 0x89, 0xa3, 0xeb, 0x0b, 0x0a, 0x62, 0xcc, 0xc4, 0x01, 0x61, 0x08, 0xe8, 0x5c, 0x54, 0xa9, 0xa3, 0x81, 0x61, 0xb0, 0xbf, 0x39, 0x93, - 0x0a, 0xb4, 0xa2, 0x69, 0x02, 0xae, 0xba, 0xb6, 0xea, 0xb3, 0xa5, 0x8a, 0x28, 0x2b, 0xdf, 0xd7, 0x2c, 0xbc, 0x44, 0x41, 0x62, 0x72, 0x70, 0x7a, 0x85, 0x41, 0x24, 0x29, 0x7b, 0xfc, 0xef, 0xeb, - 0x45, 0x39, 0xe3, 0x20, 0x5d, 0xfe, 0xfc, 0x8a, 0xa6, 0x41, 0xe3, 0x20, 0x2f, 0xef, 0x55, 0xff, 0xc6, 0x39, 0xc4, 0x20, 0xf0, 0x55, 0xff, 0xff, 0x05, 0x29, 0xe3, 0x20, 0x55, 0x9b, 0x67, 0xda, - 0x04, 0x29, 0xc3, 0x18, 0xd7, 0x9f, 0x2c, 0x00, 0x24, 0x29, 0xc3, 0x18, 0xbd, 0xba, 0x27, 0xba, 0x85, 0x39, 0xe4, 0x20, 0xba, 0xf0, 0xe8, 0x5f, 0xa6, 0x39, 0xc3, 0x20, 0xf8, 0xfe, 0xf5, 0x55, - 0x25, 0x29, 0xc3, 0x20, 0x94, 0xd7, 0xe9, 0xba, 0x04, 0x31, 0xe3, 0x20, 0x35, 0x57, 0x57, 0x56, 0x24, 0x29, 0xc3, 0x18, 0xf0, 0xfe, 0x5a, 0xff, 0x04, 0x31, 0xa3, 0x20, 0xbf, 0xef, 0x5f, 0x00, - 0x24, 0x29, 0xc3, 0x20, 0x62, 0xb5, 0xa5, 0x0e, 0x25, 0x29, 0xe3, 0x20, 0xdd, 0x2b, 0x7a, 0x80, 0x24, 0x31, 0xc3, 0x18, 0x57, 0xe8, 0xff, 0xae, 0x05, 0x31, 0xc3, 0x18, 0xf5, 0x55, 0xbb, 0xa2, - 0x4b, 0xbc, 0xea, 0xa3, 0x8a, 0xd7, 0x57, 0xd7, 0x2c, 0xb4, 0xea, 0xab, 0xa0, 0xfb, 0x0f, 0xdd, 0x2c, 0xb4, 0xca, 0xa3, 0xa7, 0xd0, 0x02, 0xfe, 0x2b, 0xb4, 0xaa, 0x9b, 0xf7, 0x8b, 0xa0, 0xab, - 0x2b, 0xb4, 0xaa, 0x9b, 0xb7, 0xff, 0x8a, 0x00, 0x2c, 0xb4, 0xca, 0xa3, 0xeb, 0xfd, 0xa0, 0xe0, 0x4c, 0xbc, 0xca, 0xa3, 0x02, 0xab, 0x6f, 0xd7, 0x2b, 0xb4, 0x68, 0x93, 0x00, 0x60, 0x2a, 0xaa, - 0x4c, 0xb4, 0x8a, 0x9b, 0xa2, 0xbd, 0xa2, 0x0a, 0x4c, 0xb4, 0xca, 0xab, 0xc2, 0xa2, 0x60, 0x28, 0x6b, 0xb4, 0x6a, 0x9b, 0x83, 0xe0, 0xfa, 0xb6, 0x6c, 0xb4, 0xaa, 0xa3, 0xdc, 0xbf, 0x6d, 0xab, - 0x6c, 0xbc, 0xcb, 0xab, 0x2a, 0xfa, 0x6f, 0xa8, 0x6c, 0xbc, 0xea, 0xab, 0xa8, 0xaa, 0xfb, 0x5e, 0x6c, 0xbc, 0xcb, 0xa3, 0xaa, 0xa8, 0xd7, 0xef, 0x4c, 0xbc, 0x0b, 0xac, 0xb3, 0xbb, 0xfa, 0xde, - 0x4c, 0xb4, 0xca, 0xab, 0x56, 0xfa, 0xef, 0x80, 0x6c, 0xbc, 0x8a, 0x9b, 0xaa, 0xab, 0xaa, 0x58, 0x4c, 0xb4, 0xcb, 0xab, 0xaa, 0x2a, 0x82, 0xd6, 0x6c, 0xbc, 0xca, 0xab, 0x8a, 0xaa, 0xaa, 0x5b, - 0x6c, 0xbc, 0xeb, 0xa3, 0x8a, 0xba, 0x7e, 0xfd, 0x8c, 0xbc, 0x0b, 0xac, 0x9f, 0x8d, 0x6a, 0xdd, 0xcd, 0xc4, 0xeb, 0xab, 0xfb, 0xe8, 0x7f, 0xff, 0x6c, 0xbc, 0x0b, 0xac, 0xae, 0xa7, 0xcb, 0x9e, - 0x6c, 0xbc, 0x0b, 0xac, 0xfe, 0xde, 0xfb, 0x98, 0x4b, 0xb4, 0xa9, 0xa3, 0x5a, 0xfa, 0xa0, 0x20, 0x4b, 0xb4, 0xca, 0xab, 0xff, 0xd5, 0xad, 0xa8, 0x4c, 0xbc, 0xea, 0xab, 0x2f, 0x27, 0xa7, 0xaf, - 0x8c, 0xbc, 0x0b, 0xac, 0xa2, 0x28, 0xbf, 0x97, 0x6c, 0xbc, 0xeb, 0xab, 0xa2, 0xa2, 0x6a, 0xd7, 0x8d, 0xc4, 0x08, 0x8b, 0xb4, 0xa4, 0xaa, 0xaa, 0x2c, 0xb4, 0xea, 0xa3, 0xbf, 0xbf, 0xda, 0xbc, - 0x6c, 0xb4, 0x0b, 0xac, 0xdf, 0x2f, 0xfd, 0xa7, 0x8d, 0xbc, 0x0a, 0xac, 0xe2, 0xea, 0x57, 0xff, 0x8c, 0xbc, 0xeb, 0xab, 0xf8, 0xfd, 0x77, 0x7f, 0x4c, 0xb4, 0xea, 0xa3, 0xaa, 0xa0, 0xab, 0x75, - 0x6c, 0xb4, 0xca, 0xab, 0x8f, 0x2f, 0x3d, 0xab, 0x4c, 0xb4, 0xeb, 0xab, 0x8b, 0xac, 0x78, 0xbe, 0x4c, 0xbc, 0xc8, 0xa3, 0x0b, 0xaa, 0xa8, 0x7e, 0x4c, 0xb4, 0x26, 0x93, 0x00, 0xa8, 0xae, 0x5f, - 0x2c, 0xb4, 0xe5, 0x82, 0x00, 0x0a, 0x80, 0x7a, 0x4b, 0xb4, 0xa7, 0x82, 0xa8, 0x80, 0x8a, 0xd7, 0x2b, 0xac, 0xc7, 0x8a, 0x00, 0x80, 0xb7, 0xaa, 0x4b, 0xb4, 0x89, 0x9b, 0x02, 0x6a, 0x5f, 0x5f, - 0x2b, 0xb4, 0x29, 0x93, 0xb8, 0x2f, 0x5d, 0xff, 0x0a, 0xac, 0xa7, 0x7a, 0x00, 0x00, 0xf5, 0x02, 0x6b, 0xb4, 0x09, 0x8b, 0xaa, 0xf8, 0x55, 0x2a, 0x8c, 0xb4, 0x86, 0x82, 0x80, 0xdf, 0xaf, 0xaa, - 0x0a, 0xac, 0x09, 0x8b, 0xa8, 0x5f, 0xfb, 0x28, 0xaa, 0xa3, 0x69, 0x93, 0xfd, 0x89, 0x2a, 0xa2, 0x0b, 0xac, 0x07, 0x8b, 0xaa, 0xaa, 0xa8, 0xbd, 0x2b, 0xac, 0x69, 0x93, 0x7d, 0xef, 0x8a, 0xe8, - 0x4c, 0xb4, 0x08, 0x8b, 0xaf, 0xaa, 0x82, 0xd5, 0xea, 0xab, 0x06, 0x83, 0x08, 0x02, 0xea, 0x7a, 0x2b, 0xac, 0xa6, 0x82, 0xaa, 0x00, 0xf7, 0x77, 0x0a, 0xac, 0x82, 0x59, 0x22, 0x00, 0xaa, 0x5e, - 0xc9, 0xa3, 0xe5, 0x69, 0x00, 0x82, 0xf0, 0xbd, 0x2a, 0xac, 0x85, 0x7a, 0x82, 0xfd, 0xfd, 0x5f, 0xc9, 0xa3, 0xc1, 0x48, 0x00, 0x22, 0x57, 0xea, 0xa7, 0x9b, 0xe3, 0x48, 0xea, 0xa0, 0xf5, 0xaf, - 0x49, 0x93, 0x23, 0x6a, 0x28, 0xfd, 0xaf, 0x8b, 0x0a, 0xa4, 0x03, 0x51, 0x02, 0x5e, 0xea, 0xaa, 0x67, 0x9b, 0x04, 0x41, 0xa0, 0xd5, 0xaa, 0xaa, 0x08, 0x8b, 0x43, 0x51, 0x7a, 0xf5, 0x22, 0x02, - 0x6a, 0x8b, 0x22, 0x59, 0x55, 0xea, 0xaa, 0x0a, 0xaa, 0x9b, 0x84, 0x59, 0x75, 0xbf, 0xaa, 0x00, 0xca, 0x9b, 0x85, 0x59, 0xd6, 0xaa, 0xaa, 0x00, 0xeb, 0xa3, 0x45, 0x72, 0xff, 0x5f, 0x2a, 0xa8, - 0xeb, 0xa3, 0x66, 0x72, 0x7f, 0x57, 0xa0, 0x02, 0x2c, 0xac, 0xe5, 0x61, 0xff, 0xfd, 0x28, 0x02, 0x0b, 0xa4, 0x87, 0x7a, 0xf5, 0xfd, 0xa0, 0x00, 0x0b, 0xac, 0x66, 0x72, 0x5f, 0xe7, 0x80, 0x80, - 0x2b, 0xac, 0x86, 0x7a, 0x55, 0xef, 0x02, 0xaa, 0xca, 0xa3, 0x64, 0x59, 0x5f, 0x2e, 0x00, 0x00, 0xea, 0xa3, 0xc6, 0x59, 0xd5, 0x00, 0x00, 0x20, 0xca, 0xa3, 0xe5, 0x61, 0xde, 0x00, 0xa8, 0xa8, - 0xea, 0xa3, 0x85, 0x61, 0x5f, 0x20, 0xaa, 0xa2, 0xaa, 0x9b, 0x45, 0x51, 0xd5, 0x00, 0x00, 0x00, 0xca, 0x9b, 0x03, 0x49, 0x57, 0x00, 0x00, 0x00, 0xca, 0xa3, 0xa6, 0x59, 0xad, 0xa0, 0x00, 0x00, - 0xea, 0xa3, 0x67, 0x7a, 0x6f, 0xdf, 0x00, 0x08, 0xca, 0xa3, 0x47, 0x72, 0x7d, 0x0a, 0xa0, 0x00, 0x25, 0x72, 0x02, 0x41, 0xea, 0xf8, 0xea, 0x78, 0x64, 0x51, 0xa2, 0x28, 0xe8, 0x78, 0x7e, 0xaf, - 0x63, 0x51, 0x82, 0x20, 0x37, 0x37, 0x27, 0x0f, 0x84, 0x59, 0x43, 0x51, 0x2a, 0x8d, 0xfd, 0x7b, 0x83, 0x59, 0x22, 0x51, 0xfc, 0xde, 0x2b, 0x28, 0xe4, 0x59, 0x43, 0x51, 0xd5, 0xb7, 0xff, 0x2f, - 0x45, 0x72, 0x63, 0x59, 0xfd, 0xb9, 0x2d, 0x0a, 0xc7, 0x7a, 0x04, 0x6a, 0xd5, 0xfd, 0xab, 0x2b, 0x48, 0x8b, 0xe5, 0x61, 0xbf, 0xa7, 0x2f, 0x2a, 0x69, 0x93, 0xa7, 0x7a, 0xa5, 0xab, 0x8a, 0x00, - 0x8a, 0x9b, 0x48, 0x8b, 0xb7, 0xb3, 0xab, 0xaa, 0x89, 0x93, 0x48, 0x8b, 0x72, 0xba, 0x48, 0x5e, 0xa9, 0x93, 0x48, 0x8b, 0x80, 0xa8, 0xff, 0xed, 0x89, 0x9b, 0x48, 0x93, 0xa0, 0x27, 0x8a, 0x6e, - 0xca, 0x9b, 0x69, 0x93, 0xab, 0xff, 0xbf, 0x2d, 0xcb, 0xa3, 0x89, 0x9b, 0xff, 0xed, 0xab, 0x0a, 0x0b, 0xb4, 0xaa, 0x9b, 0x0b, 0xad, 0xaa, 0xbe, 0x2b, 0xb4, 0xaa, 0xa3, 0xf8, 0xea, 0xfb, 0xf7, - 0x2b, 0xb4, 0xc7, 0x8a, 0xf0, 0xf0, 0xd2, 0x0a, 0x2a, 0xb4, 0x08, 0x93, 0xf5, 0x7f, 0xea, 0xb8, 0x48, 0x9b, 0xa2, 0x69, 0xa0, 0xa0, 0xf8, 0xd0, 0xea, 0xab, 0x65, 0x82, 0xaf, 0x0d, 0xad, 0x8e, - 0x8c, 0xc4, 0x04, 0x6a, 0x3e, 0x1a, 0xaa, 0x2a, 0x8b, 0xbc, 0xc5, 0x82, 0x40, 0x63, 0xe2, 0xe8, 0x8d, 0xc4, 0x62, 0x69, 0x5c, 0xd8, 0xd8, 0xdf, 0xca, 0xab, 0x21, 0x59, 0xae, 0xaf, 0x87, 0xaf, - 0x2a, 0x8b, 0xa3, 0x69, 0x5e, 0xb4, 0x2f, 0x02, 0x6a, 0x93, 0x65, 0x82, 0xbd, 0xbc, 0x2a, 0x2a, 0xeb, 0xab, 0x03, 0x31, 0x50, 0x58, 0x58, 0x5c, 0x85, 0x39, 0xe3, 0x20, 0xfb, 0x73, 0x63, 0xfd, - 0x24, 0x29, 0xc3, 0x20, 0xaf, 0xdf, 0xbd, 0xe0, 0x25, 0x29, 0xc3, 0x28, 0x9f, 0xaa, 0xa2, 0xa8, 0x45, 0x29, 0xe3, 0x20, 0xff, 0x6e, 0x3b, 0xfa, 0x45, 0x29, 0xe4, 0x20, 0xdf, 0xd7, 0xe8, 0x3e, - 0x65, 0x31, 0xc3, 0x20, 0xff, 0x9f, 0xea, 0xe2, 0x45, 0x31, 0xe4, 0x20, 0x57, 0xde, 0xd6, 0x2a, 0x85, 0x31, 0x04, 0x21, 0xdd, 0x55, 0x7d, 0xa0, 0x65, 0x31, 0xc3, 0x18, 0xbf, 0xde, 0xaa, 0x20, - 0x25, 0x31, 0xc3, 0x18, 0xe0, 0x5f, 0xba, 0x00, 0x45, 0x31, 0xc4, 0x20, 0x55, 0xdf, 0x22, 0x00, 0x65, 0x39, 0xe3, 0x20, 0xbd, 0xab, 0x8a, 0xea, 0x45, 0x39, 0x04, 0x29, 0xb8, 0xff, 0xf7, 0x6b, - 0x44, 0x31, 0xe3, 0x28, 0xbf, 0xdf, 0x57, 0xea, 0x24, 0x29, 0xc3, 0x20, 0xa0, 0xa4, 0x8a, 0xaa, 0x45, 0x31, 0xe4, 0x28, 0xfb, 0x2f, 0xbd, 0xf5, 0x45, 0x31, 0x04, 0x29, 0xff, 0xf2, 0x73, 0x7d, - 0x4c, 0xb4, 0xcb, 0xa3, 0x22, 0xa0, 0x2a, 0xbd, 0x2b, 0xb4, 0xea, 0xab, 0x42, 0x72, 0xf0, 0x03, 0x2b, 0xb4, 0xca, 0xab, 0xd7, 0x3d, 0xa2, 0x7a, 0x2c, 0xb4, 0xca, 0xa3, 0xb7, 0xfa, 0x60, 0xeb, - 0x4c, 0xbc, 0xeb, 0xa3, 0x82, 0xeb, 0x75, 0x7f, 0x4c, 0xb4, 0xaa, 0x9b, 0xbc, 0xfd, 0xaf, 0xaa, 0x2c, 0xb4, 0xcb, 0xab, 0xe2, 0x9b, 0xa2, 0x2a, 0x6c, 0xbc, 0xaa, 0x9b, 0xfb, 0xa2, 0x9a, 0xfe, - 0x2c, 0xb4, 0xeb, 0xab, 0x01, 0xd0, 0xac, 0x75, 0x4c, 0xbc, 0xca, 0xa3, 0xda, 0xee, 0xab, 0xe2, 0x6c, 0xbc, 0xcb, 0xa3, 0x7b, 0x8b, 0xaa, 0xb7, 0x4c, 0xb4, 0x0b, 0xac, 0x0f, 0x9d, 0xb5, 0xaa, - 0x4c, 0xb4, 0xcb, 0xab, 0xe0, 0x2a, 0xea, 0x8d, 0x4c, 0xb4, 0xcb, 0xa3, 0xf5, 0xaf, 0xe3, 0xea, 0x2c, 0xb4, 0xca, 0xa3, 0xeb, 0xa9, 0x8a, 0xe0, 0x4c, 0xbc, 0xcb, 0xa3, 0x9f, 0x3e, 0x2a, 0xaf, - 0x8c, 0xbc, 0x0b, 0xb4, 0xef, 0xef, 0x2b, 0x7f, 0x4c, 0xbc, 0xaa, 0xa3, 0xae, 0xfe, 0x58, 0xfe, 0x4c, 0xb4, 0xaa, 0xa3, 0xe2, 0xfb, 0xfd, 0xaf, 0x6c, 0xb4, 0xea, 0xab, 0x55, 0x2f, 0x7b, 0xf7, - 0x4c, 0xb4, 0x8a, 0xa3, 0x6a, 0xbc, 0xbf, 0xaa, 0x2b, 0xb4, 0xca, 0xa3, 0x2a, 0xd0, 0xf6, 0x82, 0x2b, 0xb4, 0xca, 0xa3, 0x3a, 0x0f, 0x9c, 0xab, 0x4c, 0xb4, 0xea, 0xab, 0x2a, 0x0a, 0xa5, 0xed, - 0x4c, 0xbc, 0xea, 0xab, 0x88, 0x00, 0x7f, 0xde, 0x4b, 0xb4, 0x28, 0x8b, 0xa8, 0xaa, 0xa7, 0x08, 0x2b, 0xb4, 0xaa, 0xa3, 0x4f, 0x6b, 0x2a, 0xaa, 0x2c, 0xb4, 0xca, 0xa3, 0x2d, 0x2b, 0xaa, 0x0a, - 0x4b, 0xb4, 0xea, 0xa3, 0x00, 0x8a, 0xe9, 0x72, 0x4c, 0xb4, 0xeb, 0xab, 0xad, 0xf2, 0xbb, 0xaa, 0x4c, 0xb4, 0xeb, 0xab, 0x9d, 0x35, 0xdf, 0x3a, 0x4c, 0xb4, 0xca, 0xa3, 0x4a, 0x2a, 0x8a, 0x68, - 0x6c, 0xbc, 0xaa, 0xa3, 0xab, 0xea, 0xaa, 0x58, 0x8c, 0xbc, 0x89, 0xa3, 0xa7, 0xbd, 0xa0, 0x5f, 0x6b, 0xb4, 0xaa, 0xa3, 0xfe, 0x28, 0x7f, 0xf5, 0x6c, 0xbc, 0x49, 0x9b, 0xa8, 0xa0, 0x55, 0xa2, - 0x2b, 0xb4, 0x69, 0x9b, 0x20, 0x56, 0xd7, 0x7a, 0x0a, 0xac, 0x08, 0x8b, 0xe8, 0xfd, 0xfe, 0xaf, 0x0a, 0xac, 0x87, 0x7a, 0xb7, 0x8a, 0xaa, 0xa8, 0xeb, 0xab, 0xc7, 0x82, 0x5f, 0xaa, 0xaa, 0x02, - 0x0b, 0xac, 0x09, 0x8b, 0x5d, 0xee, 0xdf, 0x02, 0x4b, 0xb4, 0x09, 0x8b, 0xff, 0xaa, 0xd7, 0x28, 0x0a, 0xac, 0x89, 0x9b, 0x57, 0x6a, 0xf6, 0xfc, 0x2b, 0xb4, 0x28, 0x93, 0x8a, 0xf9, 0xbe, 0xf8, - 0x2b, 0xac, 0x85, 0x7a, 0x02, 0x3a, 0x2a, 0x5e, 0xc9, 0xab, 0x88, 0x72, 0x08, 0xaa, 0xe0, 0xd7, 0x4c, 0xac, 0xa6, 0x82, 0xee, 0x7a, 0xff, 0x2f, 0x4b, 0xb4, 0xa8, 0x82, 0xea, 0x57, 0xef, 0x22, - 0x6c, 0xb4, 0x87, 0x7a, 0xff, 0xfb, 0xfd, 0xa0, 0x4b, 0xb4, 0xe6, 0x61, 0xaa, 0xb7, 0x2a, 0xaa, 0x2b, 0xac, 0x66, 0x7a, 0xfb, 0x0a, 0x68, 0x60, 0x6c, 0xb4, 0xc4, 0x61, 0xab, 0xf8, 0xfd, 0xeb, - 0xea, 0xa3, 0x05, 0x6a, 0x82, 0xdf, 0xea, 0xbe, 0x89, 0x93, 0x05, 0x6a, 0xd7, 0xbf, 0x89, 0x02, 0xeb, 0xa3, 0xa7, 0x7a, 0xfd, 0x75, 0xea, 0x20, 0x2d, 0xa4, 0x87, 0x82, 0x55, 0xff, 0xef, 0x08, - 0x0b, 0xa4, 0xc7, 0x82, 0x55, 0xbf, 0xae, 0x82, 0xeb, 0x9b, 0x66, 0x7a, 0x55, 0xfb, 0xaf, 0x3a, 0x0b, 0xa4, 0x67, 0x72, 0xfd, 0xaa, 0x82, 0x00, 0x2a, 0xac, 0xa8, 0x7a, 0xf5, 0xae, 0x2a, 0xfa, - 0x2b, 0xac, 0x09, 0x83, 0xfd, 0xa2, 0xae, 0x8e, 0xeb, 0xa3, 0x08, 0x8b, 0x5f, 0xbb, 0x22, 0x7f, 0x2b, 0xa4, 0x09, 0x83, 0xd5, 0xad, 0x02, 0xab, 0x6c, 0xb4, 0x28, 0x8b, 0xff, 0xf5, 0xfc, 0xea, - 0xea, 0x9b, 0x28, 0x8b, 0x2f, 0xf6, 0x2a, 0xe2, 0x0b, 0xac, 0x49, 0x93, 0xfa, 0x5d, 0x8f, 0xb7, 0xea, 0xa3, 0x29, 0x8b, 0xba, 0xad, 0x0a, 0x2a, 0xea, 0xa3, 0x69, 0x93, 0xb0, 0xea, 0x77, 0xa2, - 0x0b, 0xa4, 0x49, 0x93, 0xa8, 0xbf, 0x7f, 0xbe, 0x2a, 0xac, 0x28, 0x93, 0x2b, 0x7e, 0xdf, 0xbe, 0xea, 0xa3, 0x68, 0x93, 0x88, 0xed, 0xcb, 0xf9, 0x0b, 0xa4, 0x68, 0x9b, 0xdd, 0xff, 0x2b, 0x7d, - 0x0a, 0xac, 0x89, 0x9b, 0xf0, 0x3d, 0xbf, 0x95, 0x0a, 0xac, 0x69, 0x9b, 0x72, 0xbe, 0x6d, 0xb8, 0xca, 0xa3, 0x69, 0x9b, 0xaa, 0xf0, 0x6f, 0x58, 0xaa, 0xa3, 0x48, 0x93, 0x20, 0xdf, 0x5a, 0xef, - 0xaa, 0xa3, 0x69, 0x93, 0xbe, 0xff, 0xd5, 0xb1, 0xaa, 0x9b, 0x49, 0x93, 0x18, 0xfa, 0xef, 0xf7, 0xaa, 0xa3, 0x49, 0x8b, 0xb8, 0x7e, 0x8b, 0xbd, 0xc9, 0xa3, 0x8a, 0x93, 0xff, 0xe5, 0xaf, 0xee, - 0xc9, 0xa3, 0xa2, 0x61, 0x00, 0x00, 0xe0, 0x70, 0xea, 0xab, 0x02, 0x49, 0xe0, 0xfe, 0xd7, 0x0d, 0xeb, 0xa3, 0xe3, 0x40, 0x57, 0xed, 0xc0, 0x80, 0xe5, 0x61, 0xe2, 0x38, 0x7a, 0x78, 0xf8, 0xde, - 0x63, 0x59, 0xe2, 0x40, 0x0d, 0x0b, 0x2b, 0xab, 0x84, 0x59, 0x42, 0x51, 0xf5, 0x0e, 0x8e, 0x0b, 0xc5, 0x61, 0x43, 0x51, 0xb7, 0x7f, 0x79, 0x1f, 0xc8, 0x7a, 0x63, 0x51, 0xf5, 0xf5, 0xb5, 0x0a, - 0xe8, 0x82, 0xe5, 0x61, 0xb5, 0xab, 0xaa, 0x00, 0x48, 0x8b, 0x87, 0x7a, 0xf5, 0xff, 0xab, 0x22, 0x89, 0x8b, 0x08, 0x83, 0xf5, 0x95, 0x27, 0xae, 0x89, 0x93, 0x48, 0x8b, 0x25, 0x83, 0x7b, 0x5f, - 0x89, 0x93, 0x28, 0x8b, 0xe0, 0xbd, 0xad, 0xa5, 0x69, 0x93, 0x28, 0x8b, 0x47, 0xa3, 0x83, 0xea, 0xaa, 0x93, 0x28, 0x8b, 0xff, 0xf9, 0xbd, 0x2d, 0xaa, 0x9b, 0x69, 0x93, 0xdb, 0x9f, 0x30, 0x2a, - 0xca, 0xa3, 0x89, 0x9b, 0x23, 0x8b, 0xfa, 0xef, 0xca, 0xa3, 0x89, 0x9b, 0x08, 0xae, 0xff, 0xad, 0xcb, 0xab, 0xa9, 0x9b, 0x8a, 0x2d, 0x2b, 0xbf, 0x0b, 0xac, 0xca, 0xa3, 0xff, 0x1f, 0x27, 0xeb, - 0x4b, 0xbc, 0xca, 0xa3, 0x8d, 0x2b, 0x2f, 0x2f, 0x6c, 0xbc, 0xa6, 0x82, 0xac, 0xf8, 0xd8, 0x78, 0xaa, 0xab, 0x04, 0x6a, 0xda, 0xf8, 0xa2, 0xa8, 0x2d, 0xa4, 0x67, 0x82, 0xb6, 0x0a, 0x2a, 0x28, - 0x90, 0xa4, 0x29, 0x9b, 0x7d, 0x5f, 0x2a, 0x0a, 0xb0, 0xac, 0x05, 0x7a, 0x75, 0xab, 0x80, 0xf8, 0xed, 0xa3, 0x41, 0x59, 0xd7, 0xdc, 0xde, 0x9a, 0x4a, 0x8b, 0x46, 0x7a, 0x9f, 0x09, 0x2a, 0x02, - 0x8b, 0x8b, 0xea, 0x82, 0xf7, 0xa0, 0xa6, 0xaf, 0x8e, 0xbc, 0x09, 0x83, 0xd5, 0x95, 0xb5, 0x35, 0xab, 0xa3, 0xe3, 0x28, 0x5c, 0x54, 0x56, 0x57, 0xa6, 0x49, 0xe3, 0x20, 0xf5, 0xf5, 0x3d, 0xf7, - 0x08, 0x52, 0x04, 0x29, 0x55, 0xd5, 0xeb, 0x0b, 0x86, 0x39, 0x25, 0x29, 0xfd, 0xbf, 0xc2, 0xe0, 0xa6, 0x39, 0x25, 0x31, 0xfd, 0x8f, 0x37, 0x83, 0xa6, 0x39, 0x45, 0x31, 0x7b, 0xa2, 0x88, 0xfb, - 0xe6, 0x49, 0x65, 0x31, 0xfd, 0xfb, 0xe1, 0xe9, 0xa5, 0x39, 0x03, 0x29, 0xa5, 0xb6, 0xde, 0x58, 0xa6, 0x41, 0x24, 0x31, 0x5e, 0xbe, 0x8b, 0x5d, 0x65, 0x31, 0x04, 0x29, 0x67, 0xa8, 0xa7, 0xa7, - 0x65, 0x39, 0x04, 0x29, 0xeb, 0xa8, 0xea, 0x5f, 0x65, 0x39, 0x04, 0x29, 0xb7, 0xce, 0x7d, 0x55, 0x45, 0x31, 0xe3, 0x20, 0x3a, 0xba, 0xbf, 0x5f, 0x45, 0x31, 0xe3, 0x20, 0xe2, 0xbf, 0xff, 0xad, - 0x45, 0x29, 0xe3, 0x20, 0x3b, 0x2e, 0xb8, 0xb7, 0x45, 0x31, 0xe4, 0x20, 0xa8, 0xba, 0xfe, 0xdf, 0x25, 0x29, 0xe3, 0x20, 0x00, 0xa8, 0x97, 0x1a, 0x45, 0x31, 0xe3, 0x28, 0xaf, 0x8b, 0xf7, 0xfb, - 0x4c, 0xb4, 0x8a, 0x9b, 0x20, 0xae, 0x7a, 0x8a, 0x6c, 0xb4, 0xaa, 0x9b, 0x0a, 0xde, 0x2b, 0xaa, 0x4c, 0xb4, 0xea, 0xa3, 0x97, 0xaf, 0xf0, 0xea, 0x4c, 0xb4, 0xeb, 0xab, 0x78, 0xff, 0xa7, 0x15, - 0x4c, 0xb4, 0xea, 0xab, 0xfb, 0x7b, 0xbb, 0x89, 0x4c, 0xb4, 0xcb, 0xa3, 0xdf, 0x8b, 0x02, 0xbc, 0x2c, 0xb4, 0x8a, 0x9b, 0xa2, 0xa8, 0x98, 0xfa, 0x4c, 0xb4, 0xcb, 0xa3, 0x6a, 0x8a, 0x2e, 0xbf, - 0x4c, 0xb4, 0xaa, 0xa3, 0xff, 0x2a, 0x72, 0xa0, 0x6c, 0xbc, 0xeb, 0xab, 0xd5, 0x82, 0xfd, 0xdf, 0x4c, 0xb4, 0xeb, 0xa3, 0xfb, 0xf0, 0xd7, 0x83, 0x4c, 0xb4, 0xaa, 0x9b, 0x0a, 0x28, 0xaa, 0xf6, - 0x4c, 0xb4, 0xeb, 0xa3, 0xfa, 0xa0, 0xeb, 0xf5, 0x2c, 0xb4, 0xca, 0xa3, 0x0a, 0x7a, 0xf7, 0x8a, 0x4c, 0xb4, 0xca, 0xa3, 0x2a, 0x8d, 0xff, 0xae, 0x2c, 0xb4, 0xeb, 0xab, 0xc0, 0xfe, 0x93, 0x8f, - 0x4c, 0xb4, 0xca, 0xa3, 0x01, 0xaa, 0x8a, 0xfa, 0x2b, 0xb4, 0xeb, 0xa3, 0xfc, 0xdf, 0xbd, 0xeb, 0x2c, 0xb4, 0x8a, 0x9b, 0xe2, 0x20, 0xb6, 0xea, 0x4c, 0xb4, 0xaa, 0x9b, 0xab, 0xaf, 0x78, 0xf7, - 0x2b, 0xb4, 0xaa, 0x9b, 0x00, 0x97, 0xeb, 0xec, 0x0c, 0xb4, 0xca, 0xa3, 0xe8, 0xdb, 0xeb, 0x2e, 0x0b, 0xac, 0x8a, 0x9b, 0xe1, 0x82, 0x2f, 0x80, 0x4b, 0xb4, 0xaa, 0xa3, 0xc9, 0xa7, 0xae, 0xba, - 0x6c, 0xb4, 0xeb, 0xa3, 0xff, 0xae, 0xdd, 0x22, 0x2b, 0xb4, 0xcb, 0xa3, 0x00, 0xfa, 0xd7, 0x88, 0x2b, 0xb4, 0xa9, 0xa3, 0x2a, 0x1a, 0x2a, 0xf8, 0x4c, 0xb4, 0xa9, 0xa3, 0xfe, 0xfe, 0x28, 0xf5, - 0x4c, 0xb4, 0x27, 0x93, 0xa8, 0xaa, 0xa0, 0x7a, 0x4c, 0xb4, 0xa6, 0x7a, 0x02, 0x00, 0x08, 0xbd, 0x4c, 0xb4, 0xa5, 0x82, 0x00, 0xa8, 0x88, 0xdc, 0x6c, 0xb4, 0xe7, 0x8a, 0x00, 0xaa, 0xea, 0x57, - 0x6b, 0xbc, 0xa7, 0x82, 0x00, 0x80, 0xaf, 0xad, 0x4b, 0xbc, 0x68, 0x93, 0xe0, 0xff, 0xd7, 0xf5, 0x0b, 0xac, 0x69, 0x93, 0x3b, 0xa8, 0x6f, 0xa2, 0x0a, 0xac, 0xe8, 0x82, 0x00, 0xae, 0xfd, 0xaa, - 0xea, 0xab, 0xc6, 0x7a, 0xa8, 0x2f, 0xa9, 0x00, 0xeb, 0xa3, 0x48, 0x93, 0xff, 0xdf, 0xff, 0x00, 0x2b, 0xac, 0x28, 0x8b, 0xad, 0xf9, 0x2b, 0xea, 0x2b, 0xb4, 0x69, 0x9b, 0xa2, 0x7f, 0xf2, 0x88, - 0x8d, 0xb4, 0x49, 0x93, 0xd7, 0x8d, 0xf7, 0x2f, 0x4c, 0xb4, 0x49, 0x93, 0xff, 0x5c, 0x57, 0xaa, 0x8b, 0xb4, 0x08, 0x8b, 0xff, 0x55, 0xfd, 0x8a, 0x4b, 0xac, 0xe8, 0x82, 0xaf, 0xcf, 0x55, 0x02, - 0x6c, 0xac, 0x29, 0x8b, 0xfd, 0xf5, 0xbf, 0x2f, 0x8d, 0xb4, 0x8a, 0x93, 0xf5, 0x7f, 0xd4, 0xb8, 0xce, 0xbc, 0x49, 0x93, 0xf7, 0xff, 0xb2, 0xe8, 0x4c, 0xb4, 0xa6, 0x7a, 0x82, 0x02, 0x0a, 0x6a, - 0x2a, 0xb4, 0xc8, 0x7a, 0xe2, 0xa8, 0xf8, 0x5f, 0xad, 0xbc, 0x26, 0x6a, 0x0a, 0x60, 0xb5, 0xea, 0x4b, 0xb4, 0x06, 0x6a, 0xbc, 0xbd, 0xab, 0xf7, 0xc9, 0xa3, 0x87, 0x7a, 0xfe, 0x2a, 0xf2, 0xf5, - 0xca, 0x9b, 0x67, 0x7a, 0xbd, 0x8c, 0x7f, 0xb5, 0x0a, 0xa4, 0xa7, 0x82, 0x0a, 0xef, 0xfd, 0xef, 0x4b, 0xac, 0x04, 0x72, 0xa0, 0xab, 0xdf, 0xfe, 0xea, 0xab, 0xa4, 0x59, 0x00, 0x08, 0xaa, 0x55, - 0xa9, 0x9b, 0x64, 0x51, 0x80, 0xa0, 0xba, 0xb5, 0xca, 0x9b, 0x66, 0x72, 0xa9, 0xbf, 0x2d, 0x83, 0xca, 0x9b, 0xe7, 0x82, 0x20, 0x02, 0x80, 0x7e, 0x0b, 0xa4, 0x47, 0x72, 0xa7, 0x08, 0xaa, 0x0b, - 0x2b, 0xac, 0x49, 0x8b, 0xd5, 0xe3, 0xab, 0xba, 0x2b, 0xa4, 0xe8, 0x8a, 0x22, 0xed, 0xfe, 0x82, 0x2a, 0xac, 0x28, 0x8b, 0x8a, 0xdf, 0xad, 0xaf, 0xea, 0xa3, 0x29, 0x8b, 0xa8, 0xdf, 0xab, 0x7e, - 0x0a, 0xa4, 0x48, 0x93, 0xee, 0x2b, 0xb0, 0xd5, 0x2b, 0xac, 0x28, 0x8b, 0x37, 0xaa, 0xfb, 0xf7, 0xea, 0xa3, 0x49, 0x93, 0x8a, 0xa8, 0x5f, 0x8b, 0x0a, 0xa4, 0x69, 0x93, 0x2f, 0xf5, 0xf5, 0x7f, - 0xea, 0xa3, 0x48, 0x93, 0xfe, 0x97, 0xf8, 0xdf, 0xa9, 0x9b, 0x28, 0x93, 0xed, 0x82, 0xe8, 0xe3, 0xca, 0x9b, 0x48, 0x93, 0xfd, 0xfc, 0xfd, 0xff, 0xca, 0xa3, 0x68, 0x93, 0x8a, 0xdf, 0xaa, 0xea, - 0xa9, 0x9b, 0x28, 0x8b, 0x80, 0xab, 0x00, 0x36, 0xaa, 0xa3, 0x68, 0x93, 0xaf, 0xaa, 0xba, 0xee, 0xca, 0xa3, 0x69, 0x9b, 0x6c, 0x6a, 0xfa, 0xfe, 0xa9, 0xa3, 0x68, 0x93, 0x3a, 0x7c, 0x27, 0x5f, - 0xea, 0xa3, 0x28, 0x8b, 0x7f, 0xf7, 0xf7, 0x0d, 0xca, 0xa3, 0x49, 0x8b, 0xd5, 0x0e, 0x0e, 0xfe, 0xca, 0xa3, 0x48, 0x8b, 0x2b, 0xea, 0xac, 0x7f, 0x89, 0x9b, 0xe2, 0x69, 0x00, 0xa8, 0xe8, 0x7a, - 0x68, 0x93, 0x22, 0x49, 0x7c, 0x97, 0x27, 0x0d, 0xca, 0xa3, 0x44, 0x7a, 0xa3, 0xa8, 0xaa, 0x7b, 0xa9, 0x9b, 0x82, 0x61, 0x80, 0x08, 0xa0, 0x57, 0xc4, 0x59, 0x22, 0x41, 0xd8, 0xf6, 0xde, 0x5e, - 0x84, 0x51, 0x43, 0x49, 0x87, 0x3a, 0x0e, 0xa5, 0xe8, 0x7a, 0x44, 0x51, 0x7d, 0xb5, 0x2f, 0x2f, 0x28, 0x8b, 0xe6, 0x59, 0xad, 0xfa, 0xaa, 0xe8, 0xe8, 0x82, 0x66, 0x72, 0x36, 0xab, 0xf9, 0x0d, - 0x69, 0x8b, 0xc7, 0x7a, 0xf7, 0xbd, 0x3b, 0xab, 0x69, 0x93, 0xe8, 0x7a, 0x35, 0x8b, 0x28, 0xaa, 0x89, 0x93, 0x08, 0x8b, 0x0a, 0xea, 0x7f, 0xaf, 0x69, 0x93, 0xe8, 0x82, 0xa0, 0xaa, 0xf9, 0xa8, - 0x69, 0x93, 0x08, 0x83, 0x0e, 0xac, 0xb9, 0xaa, 0xaa, 0x9b, 0x28, 0x8b, 0xfd, 0xaf, 0x2b, 0xea, 0xaa, 0x9b, 0x48, 0x8b, 0xaf, 0x8b, 0x7b, 0xff, 0x8a, 0x9b, 0x48, 0x93, 0x82, 0xaa, 0x9d, 0x2b, - 0xaa, 0x9b, 0x68, 0x93, 0xb2, 0x67, 0xad, 0x2a, 0xca, 0x9b, 0x69, 0x93, 0x89, 0xea, 0xaa, 0xca, 0xea, 0xa3, 0x89, 0x9b, 0x2d, 0x83, 0xea, 0x2f, 0xeb, 0xab, 0xaa, 0x9b, 0xaa, 0x2f, 0x38, 0xaa, - 0x4b, 0xb4, 0xea, 0xa3, 0x2b, 0xbf, 0x3d, 0x35, 0x6c, 0xbc, 0x24, 0x72, 0x60, 0x40, 0xe0, 0x80, 0x4b, 0xb4, 0x24, 0x72, 0xe8, 0x68, 0xfc, 0x38, 0x2c, 0xac, 0x49, 0x8b, 0xaa, 0xaa, 0xf8, 0x73, - 0x2d, 0x9c, 0x66, 0x7a, 0x00, 0xaa, 0xfa, 0x7f, 0x8a, 0x8b, 0x67, 0x72, 0xb8, 0xff, 0xf5, 0x75, 0x08, 0x83, 0xa4, 0x59, 0x90, 0xb0, 0xa8, 0xaa, 0x8b, 0x8b, 0xc8, 0x7a, 0xbd, 0xbf, 0xad, 0x09, - 0xeb, 0xab, 0x2a, 0x83, 0x55, 0xd5, 0x35, 0x0d, 0x4c, 0xbc, 0x85, 0x51, 0xaa, 0x40, 0x40, 0xe0, 0x07, 0x4a, 0xc3, 0x28, 0x57, 0xff, 0xfe, 0xa8, 0xc6, 0x39, 0xe4, 0x20, 0xf5, 0x5f, 0x0a, 0x02, - 0xc6, 0x39, 0x05, 0x21, 0x0b, 0xad, 0xfa, 0xa0, 0xe6, 0x41, 0x24, 0x31, 0xa8, 0xab, 0x5e, 0x6b, 0x06, 0x4a, 0x24, 0x31, 0xbe, 0xdf, 0xb5, 0x35, 0xe6, 0x49, 0x04, 0x31, 0xea, 0xa7, 0x82, 0x02, - 0xe6, 0x49, 0x65, 0x31, 0xfd, 0xfd, 0xca, 0x7e, 0xc6, 0x41, 0xe4, 0x20, 0x4a, 0xa8, 0x8a, 0xaa, 0x45, 0x31, 0xe4, 0x28, 0x81, 0xa9, 0xad, 0xbf, 0x45, 0x31, 0x04, 0x29, 0x8b, 0x68, 0xca, 0x2a, - 0x45, 0x31, 0x04, 0x29, 0x56, 0xf7, 0xff, 0xec, 0x24, 0x29, 0xe3, 0x18, 0x9a, 0xc0, 0xe2, 0x88, 0x24, 0x31, 0xe3, 0x18, 0xef, 0xbf, 0x29, 0xaa, 0x45, 0x29, 0xc3, 0x20, 0x7e, 0xae, 0x2a, 0x3a, - 0x44, 0x29, 0xe3, 0x20, 0x7f, 0xc2, 0x6a, 0xff, 0x24, 0x31, 0xe3, 0x20, 0xa7, 0xab, 0xbd, 0x6b, 0x65, 0x31, 0xe4, 0x28, 0xbb, 0x57, 0x55, 0x0d, 0xe3, 0x30, 0x45, 0x29, 0xff, 0x97, 0xaa, 0x0b, - 0x4c, 0xb4, 0xaa, 0xa3, 0xaf, 0xff, 0xdf, 0x2f, 0x4b, 0xb4, 0xca, 0xa3, 0x5f, 0xbf, 0x55, 0x88, 0x6c, 0xbc, 0x69, 0x9b, 0x2a, 0xaa, 0xb6, 0xbe, 0x4c, 0xbc, 0xea, 0xa3, 0x7f, 0xff, 0xb7, 0x3e, - 0x4a, 0xbc, 0xcb, 0xa3, 0xfd, 0x7f, 0x57, 0xe0, 0x2c, 0xb4, 0xca, 0xa3, 0xef, 0xe3, 0xdf, 0x2e, 0x2c, 0xb4, 0xea, 0xa3, 0xea, 0xff, 0xfb, 0x8a, 0x6c, 0xbc, 0xeb, 0xab, 0x75, 0xf7, 0xfd, 0x3f, - 0x4c, 0xb4, 0xca, 0xa3, 0x7d, 0xcb, 0x3f, 0x02, 0x4b, 0xb4, 0xca, 0xab, 0xff, 0xaa, 0xb8, 0x5e, 0x2b, 0xb4, 0xea, 0xab, 0xda, 0xb5, 0xff, 0xc9, 0x4b, 0xac, 0x89, 0xa3, 0xca, 0xae, 0xea, 0x77, - 0x2b, 0xac, 0x69, 0x9b, 0x2a, 0xaa, 0xfe, 0x7f, 0x2b, 0xb4, 0x6a, 0x9b, 0x98, 0xa0, 0xff, 0xfd, 0x4b, 0xbc, 0x07, 0x8b, 0x80, 0x82, 0xf5, 0xff, 0x0b, 0xac, 0x48, 0x93, 0x00, 0x02, 0xdf, 0x2b, - 0x4c, 0xb4, 0xa9, 0x9b, 0xc2, 0xf6, 0x6f, 0xe2, 0x2b, 0xb4, 0xca, 0xa3, 0xe2, 0xff, 0x7d, 0xe3, 0x0a, 0xa4, 0x89, 0x9b, 0xcd, 0xea, 0xf5, 0x80, 0x2b, 0xac, 0xe8, 0x8a, 0x80, 0x2b, 0x7a, 0xaa, - 0x0a, 0xac, 0x08, 0x8b, 0x00, 0xba, 0xf5, 0xaa, 0xeb, 0xa3, 0x48, 0x93, 0x38, 0x5b, 0xfe, 0x02, 0x0b, 0xa4, 0x49, 0x9b, 0xea, 0x7f, 0x82, 0xaa, 0x2b, 0xac, 0x69, 0x93, 0x2a, 0x7f, 0xbf, 0x0a, - 0x8c, 0xb4, 0x49, 0x93, 0xf7, 0x8b, 0xaa, 0xab, 0x2b, 0xb4, 0xca, 0xa3, 0xa9, 0x42, 0x60, 0x7f, 0xeb, 0xa3, 0x49, 0x93, 0x78, 0xff, 0xaa, 0x2a, 0xeb, 0xa3, 0x69, 0x9b, 0xdf, 0x57, 0xf7, 0x20, - 0xca, 0xa3, 0x48, 0x93, 0x5a, 0xf7, 0xb2, 0x08, 0x2b, 0xa4, 0xc8, 0x82, 0xf5, 0xad, 0xaf, 0x02, 0x2b, 0xac, 0x29, 0x8b, 0xb7, 0xaa, 0xaa, 0x02, 0x2c, 0xac, 0xa9, 0x9b, 0x57, 0xfe, 0xaa, 0x00, - 0xae, 0xbc, 0x89, 0x93, 0x55, 0xff, 0xbf, 0x0a, 0x4c, 0xb4, 0x8a, 0x93, 0xfd, 0xaf, 0x0a, 0x00, 0xee, 0xc4, 0xeb, 0xa3, 0x55, 0xef, 0x02, 0xaa, 0xee, 0xc4, 0xca, 0xa3, 0x55, 0x02, 0x78, 0xd7, - 0x8d, 0xbc, 0x69, 0x93, 0xbf, 0x2b, 0xc2, 0xde, 0x8d, 0xbc, 0xaa, 0x9b, 0xf8, 0xff, 0xef, 0xad, 0x8c, 0xbc, 0xaa, 0xa3, 0xd5, 0xff, 0xaf, 0x00, 0x0b, 0xb4, 0x48, 0x8b, 0x2a, 0x0a, 0xa0, 0xde, - 0x6c, 0xb4, 0x28, 0x93, 0x2a, 0xea, 0xff, 0x7f, 0x0a, 0xb4, 0x69, 0x93, 0x80, 0xff, 0x56, 0xff, 0xea, 0xa3, 0xe8, 0x8a, 0x5e, 0x0a, 0xae, 0xaa, 0xeb, 0xa3, 0x05, 0x6a, 0x58, 0xad, 0xa8, 0x00, - 0xeb, 0xa3, 0x6a, 0x93, 0x0d, 0xab, 0xff, 0xad, 0x8d, 0xb4, 0x89, 0x9b, 0xb2, 0xd5, 0x7d, 0x57, 0xea, 0xa3, 0x48, 0x93, 0x86, 0x5f, 0xfe, 0xde, 0xca, 0xa3, 0xc7, 0x82, 0xb6, 0x3f, 0xaa, 0xaa, - 0x2c, 0xa4, 0x48, 0x93, 0x0a, 0x27, 0xff, 0xd7, 0x2c, 0xac, 0x49, 0x93, 0x5a, 0xfe, 0x3f, 0xbf, 0x2c, 0xa4, 0x28, 0x93, 0x55, 0x97, 0x3e, 0xe3, 0x8d, 0xac, 0xe8, 0x8a, 0x5f, 0xdc, 0xf0, 0xfa, - 0x0f, 0xbd, 0x6a, 0x93, 0x75, 0xfd, 0xfd, 0xc9, 0xeb, 0xa3, 0x08, 0x8b, 0x7f, 0xe8, 0xa8, 0xaa, 0xeb, 0x9b, 0xa7, 0x82, 0x7b, 0xa8, 0xaa, 0x08, 0x2c, 0xa4, 0xc8, 0x7a, 0x75, 0xf5, 0x83, 0x80, - 0xcb, 0x9b, 0xa7, 0x72, 0xdd, 0xff, 0xab, 0x02, 0x0c, 0xa4, 0x48, 0x8b, 0x75, 0xb7, 0xfc, 0x0b, 0x8c, 0xb4, 0x09, 0x8b, 0xdf, 0xb8, 0xaa, 0xfe, 0x0b, 0xa4, 0x29, 0x8b, 0x0a, 0xa8, 0xa6, 0x22, - 0x2b, 0xac, 0x69, 0x93, 0xa8, 0x97, 0x6b, 0x82, 0x0a, 0xa4, 0x49, 0x93, 0xa8, 0xf6, 0x9e, 0x7a, 0xeb, 0xa3, 0x29, 0x8b, 0xff, 0xa2, 0x02, 0x3d, 0x2c, 0xac, 0x28, 0x8b, 0x5f, 0xfb, 0xfe, 0x22, - 0x0a, 0xa4, 0x49, 0x93, 0xf5, 0x7b, 0xa0, 0xb8, 0xca, 0x9b, 0x48, 0x93, 0xde, 0xdb, 0x88, 0xfe, 0xca, 0xa3, 0x28, 0x8b, 0x5f, 0xff, 0xaa, 0x2a, 0xca, 0xa3, 0x28, 0x8b, 0xf7, 0xef, 0x8a, 0xe2, - 0xa9, 0x9b, 0x48, 0x8b, 0x8b, 0x90, 0x00, 0x20, 0xca, 0x9b, 0x49, 0x8b, 0x85, 0x2a, 0xe0, 0x26, 0x0b, 0xa4, 0x69, 0x93, 0x5d, 0xff, 0x5f, 0xc3, 0x0b, 0xa4, 0x69, 0x93, 0xff, 0xff, 0x63, 0x7b, - 0xea, 0x9b, 0x48, 0x93, 0xca, 0xe9, 0xe3, 0xaa, 0xca, 0xa3, 0x28, 0x8b, 0x2a, 0x9b, 0xbb, 0x2e, 0xea, 0xa3, 0x29, 0x93, 0xfe, 0x7f, 0xef, 0x2f, 0xca, 0x9b, 0x49, 0x93, 0xaf, 0x8f, 0xa2, 0xc9, - 0xca, 0x9b, 0x08, 0x83, 0xc2, 0xda, 0xda, 0x8a, 0x89, 0x93, 0xe7, 0x82, 0xa8, 0x8a, 0xe8, 0x68, 0x68, 0x93, 0x25, 0x72, 0x20, 0xea, 0x7a, 0x7f, 0xc6, 0x82, 0x83, 0x61, 0x78, 0x5b, 0xfb, 0xa9, - 0xe7, 0x8a, 0x63, 0x51, 0x09, 0x03, 0xea, 0x2a, 0xe7, 0x8a, 0x22, 0x51, 0xfc, 0x56, 0x7c, 0x78, 0xc4, 0x61, 0x22, 0x51, 0x70, 0xd7, 0x35, 0xaf, 0xe8, 0x82, 0xc1, 0x40, 0x7f, 0xc3, 0xbf, 0xff, - 0x25, 0x6a, 0xa2, 0x38, 0xfd, 0xbf, 0xb4, 0xfa, 0xaa, 0x93, 0x84, 0x51, 0xad, 0xad, 0x29, 0x2d, 0xaa, 0x9b, 0x26, 0x6a, 0xaa, 0xaa, 0x00, 0x60, 0xe8, 0x7a, 0x05, 0x62, 0x08, 0x00, 0xfc, 0xad, - 0x28, 0x83, 0x66, 0x72, 0x02, 0xaa, 0xbd, 0x75, 0x28, 0x8b, 0xa7, 0x7a, 0x2a, 0x0a, 0xbe, 0x89, 0x8a, 0x93, 0x08, 0x83, 0xff, 0xf7, 0xfb, 0xc9, 0x89, 0x93, 0x28, 0x8b, 0xf9, 0xad, 0xe8, 0x77, - 0x8a, 0x93, 0x28, 0x8b, 0x82, 0x78, 0xdf, 0xbb, 0x89, 0x93, 0x28, 0x8b, 0xee, 0x6f, 0xb6, 0x3e, 0x8a, 0x93, 0x48, 0x8b, 0x95, 0xad, 0x37, 0x0a, 0x8a, 0x9b, 0x69, 0x93, 0xbf, 0x2d, 0x02, 0x28, - 0xca, 0x9b, 0x89, 0x93, 0xeb, 0xbd, 0x9f, 0x28, 0xca, 0xa3, 0x89, 0x93, 0xbc, 0xbe, 0xea, 0xba, 0x0b, 0xa4, 0xa9, 0x9b, 0xff, 0xf5, 0x35, 0xa5, 0xeb, 0xab, 0xca, 0x9b, 0x2f, 0xaa, 0xff, 0xab, - 0x2b, 0xb4, 0xea, 0xa3, 0x37, 0xbf, 0xd5, 0xd7, 0x4b, 0xbc, 0xea, 0xab, 0xe2, 0xea, 0xbb, 0xfd, 0x4c, 0xbc, 0x85, 0x7a, 0x1e, 0xf8, 0xf8, 0xb8, 0x0a, 0xac, 0x48, 0x93, 0x79, 0xe8, 0xb8, 0xfb, - 0x69, 0x9b, 0x87, 0x7a, 0x7e, 0x7a, 0x6a, 0xe8, 0xa7, 0x7a, 0x46, 0x72, 0xee, 0xa8, 0x1a, 0xa0, 0x6a, 0x8b, 0x87, 0x7a, 0x75, 0xfd, 0x8f, 0x2f, 0xee, 0xcc, 0x09, 0x83, 0x55, 0xd5, 0x2d, 0x0f, - 0xad, 0xc4, 0x6a, 0x93, 0xbd, 0xa2, 0xa0, 0x80, 0x8d, 0xbc, 0x23, 0x39, 0xf0, 0x50, 0x5c, 0x54, 0xa6, 0x41, 0x44, 0x31, 0x38, 0x95, 0x22, 0xe3, 0xc6, 0x41, 0x03, 0x29, 0x2a, 0x02, 0x7e, 0xb7, - 0x06, 0x52, 0x24, 0x31, 0xff, 0x8f, 0xfd, 0xf7, 0xe6, 0x49, 0x24, 0x39, 0xeb, 0x2e, 0xf2, 0x57, 0xe6, 0x41, 0x24, 0x29, 0x9f, 0x5c, 0xf7, 0xdf, 0xc6, 0x41, 0x24, 0x31, 0xfe, 0x72, 0x29, 0xfa, - 0xa6, 0x41, 0x24, 0x31, 0x38, 0x6d, 0xae, 0xea, 0x66, 0x41, 0x24, 0x29, 0xa8, 0xaa, 0xdf, 0x55, 0x85, 0x39, 0xe3, 0x28, 0xd6, 0x58, 0x78, 0xa8, 0x65, 0x31, 0xe4, 0x20, 0x2a, 0xbb, 0xbf, 0xfd, - 0x65, 0x31, 0x04, 0x29, 0x7e, 0xfb, 0xaa, 0xe8, 0x65, 0x31, 0x04, 0x29, 0x97, 0x7d, 0xab, 0xf8, 0xe5, 0x30, 0x44, 0x29, 0xe2, 0xbf, 0xea, 0xf7, 0x45, 0x31, 0x04, 0x29, 0x5d, 0xab, 0x67, 0xaf, - 0x65, 0x31, 0xe4, 0x20, 0xe2, 0xde, 0xfb, 0xbe, 0x65, 0x31, 0xe3, 0x28, 0xef, 0xbd, 0x00, 0xee, 0x24, 0x39, 0xe3, 0x28, 0xa2, 0x9a, 0xfb, 0xe2, 0x24, 0x39, 0xc3, 0x28, 0x7a, 0x5a, 0xf0, 0x5d, - 0x4c, 0xbc, 0xea, 0xab, 0xd2, 0xa0, 0xaa, 0xbe, 0x4c, 0xb4, 0xea, 0xab, 0x7a, 0xfa, 0xf8, 0xea, 0x4c, 0xb4, 0xca, 0xab, 0x95, 0x8f, 0x2a, 0x2a, 0x6c, 0xc4, 0x2a, 0xb4, 0x25, 0x37, 0xdf, 0x55, - 0x6b, 0xc4, 0x2a, 0xb4, 0x7a, 0xe8, 0xfa, 0xff, 0x4b, 0xb4, 0xea, 0xab, 0xe7, 0x8b, 0x80, 0xa0, 0x4c, 0xb4, 0xea, 0xab, 0xa9, 0x0a, 0xaa, 0xaa, 0x4c, 0xb4, 0x0a, 0xac, 0xff, 0xbb, 0xae, 0xa2, - 0x4c, 0xb4, 0x0a, 0xac, 0x6b, 0xaf, 0xf5, 0xb0, 0x2b, 0xb4, 0xea, 0xab, 0x5a, 0xbe, 0x28, 0xa0, 0x2b, 0xb4, 0xaa, 0xab, 0x7b, 0xaa, 0x80, 0x80, 0x4b, 0xb4, 0xca, 0xab, 0x55, 0xff, 0xea, 0x8a, - 0x4b, 0xb4, 0xaa, 0x9b, 0xdd, 0xee, 0xaa, 0x02, 0x4b, 0xb4, 0xca, 0xa3, 0x55, 0xbf, 0xab, 0x00, 0x4c, 0xb4, 0xeb, 0xa3, 0x37, 0xef, 0xaa, 0xa8, 0x4c, 0xb4, 0x0b, 0xac, 0xac, 0x8a, 0xff, 0xab, - 0x4c, 0xb4, 0x0b, 0xac, 0xfe, 0xac, 0xf6, 0x77, 0x4c, 0xb4, 0xea, 0xab, 0xde, 0xa0, 0x0f, 0xbf, 0x4c, 0xb4, 0xeb, 0xab, 0x55, 0xfa, 0x20, 0x2e, 0xcd, 0xbc, 0xeb, 0xa3, 0x7f, 0xf7, 0xbb, 0xa2, - 0x6c, 0xb4, 0xeb, 0xa3, 0xf5, 0xab, 0xe8, 0x2c, 0x6c, 0xb4, 0x0b, 0xa4, 0xd5, 0xbf, 0x0b, 0xda, 0x4c, 0xac, 0xeb, 0xa3, 0xfd, 0xc8, 0xde, 0xe2, 0xae, 0xb4, 0xea, 0xa3, 0x5d, 0x55, 0xff, 0x8f, - 0x4c, 0xac, 0xea, 0xa3, 0x75, 0xbf, 0xaa, 0x00, 0x4c, 0xb4, 0xeb, 0xa3, 0xd7, 0xff, 0xaa, 0x08, 0x4c, 0xb4, 0xeb, 0xab, 0x5d, 0xeb, 0xba, 0x00, 0x8d, 0xb4, 0xca, 0xa3, 0x57, 0xff, 0xbb, 0x2a, - 0xce, 0xbc, 0xeb, 0xa3, 0x55, 0xdf, 0xaa, 0x80, 0xae, 0xb4, 0x0b, 0xac, 0x55, 0xff, 0x82, 0x4b, 0x2f, 0xcd, 0x0b, 0xa4, 0xd5, 0xff, 0x33, 0xf5, 0xce, 0xbc, 0x2c, 0xac, 0x5b, 0xe8, 0x28, 0xe7, - 0xad, 0xbc, 0x0b, 0xac, 0xdb, 0xee, 0xf4, 0xdf, 0x6c, 0xb4, 0xeb, 0xa3, 0xb8, 0xaf, 0x2a, 0x6e, 0x2f, 0xcd, 0xca, 0xa3, 0xff, 0xff, 0x7f, 0xcf, 0xad, 0xbc, 0xca, 0xa3, 0xff, 0xfc, 0x55, 0x75, - 0x0e, 0xc5, 0xaa, 0x9b, 0xb5, 0x37, 0x7f, 0xff, 0x0d, 0xc5, 0x8a, 0x9b, 0xa0, 0x7f, 0x5d, 0x7f, 0x2c, 0xac, 0x28, 0x8b, 0x78, 0xee, 0xaa, 0xea, 0xce, 0xbc, 0x28, 0x93, 0xfd, 0x7f, 0xff, 0x8a, - 0x0b, 0xac, 0x08, 0x8b, 0xb9, 0xaa, 0xaa, 0x82, 0x0c, 0xac, 0x48, 0x93, 0xfb, 0x9c, 0xfe, 0xfc, 0x2b, 0xac, 0x29, 0x8b, 0x8a, 0x5f, 0xa2, 0xaa, 0x2b, 0xac, 0x28, 0x8b, 0x6a, 0x2f, 0x20, 0x0a, - 0x4c, 0xb4, 0xab, 0x9b, 0x7b, 0xa2, 0xa2, 0x82, 0x0b, 0xac, 0x07, 0x83, 0xea, 0xb8, 0x60, 0xa0, 0xca, 0x9b, 0x03, 0x6a, 0x00, 0x00, 0x02, 0x2d, 0xca, 0x9b, 0x89, 0x93, 0x56, 0xf6, 0xa8, 0x22, - 0xcb, 0xa3, 0x8a, 0x93, 0xd5, 0x7a, 0x0a, 0x02, 0x4c, 0xac, 0x6a, 0x93, 0xd7, 0xb5, 0xae, 0x82, 0x0e, 0xbd, 0x29, 0x93, 0xdf, 0xff, 0x0a, 0xaa, 0xee, 0xbc, 0xaa, 0x93, 0x7e, 0x2d, 0xfc, 0x55, - 0x6d, 0xac, 0xaa, 0x9b, 0x82, 0xfa, 0x7f, 0xf2, 0xcf, 0xbc, 0x8a, 0x93, 0x5f, 0xff, 0x53, 0xff, 0xae, 0xb4, 0x8a, 0x93, 0xff, 0x2e, 0x05, 0xae, 0x8d, 0xac, 0xaa, 0x9b, 0xdf, 0x9e, 0xda, 0xf3, - 0xac, 0xb4, 0x8a, 0x93, 0xf5, 0xe8, 0x55, 0xf3, 0x4c, 0xac, 0xaa, 0x93, 0x2a, 0xa2, 0xda, 0x4a, 0x2c, 0xa4, 0x69, 0x93, 0xe7, 0xca, 0xe2, 0xfd, 0x2c, 0xa4, 0x08, 0x8b, 0x2b, 0x7f, 0xaa, 0x00, - 0x2b, 0xac, 0x49, 0x8b, 0x1a, 0xbd, 0x97, 0xba, 0x0b, 0xa4, 0x89, 0x93, 0x3c, 0xad, 0x0d, 0x29, 0x0b, 0xa4, 0x89, 0x93, 0xbe, 0xf2, 0x62, 0xfc, 0x4c, 0xac, 0x89, 0x93, 0xff, 0x2f, 0x3d, 0xbf, - 0x4c, 0xac, 0x69, 0x93, 0xbf, 0xfc, 0xfe, 0xd5, 0x2c, 0xa4, 0x89, 0x93, 0xdf, 0xba, 0x78, 0xfb, 0x2b, 0xa4, 0x69, 0x9b, 0xdf, 0x82, 0xaf, 0x7f, 0xca, 0x9b, 0x48, 0x93, 0x3a, 0x88, 0x3e, 0xd7, - 0xea, 0xa3, 0x48, 0x93, 0xa8, 0x7d, 0xf7, 0xdc, 0xea, 0xa3, 0x48, 0x93, 0xe2, 0x67, 0xbd, 0xeb, 0xaa, 0x9b, 0x28, 0x8b, 0xae, 0x89, 0xa0, 0xeb, 0xaa, 0x9b, 0x28, 0x8b, 0x0f, 0xaf, 0xf6, 0xab, - 0xa9, 0x9b, 0x48, 0x93, 0x9b, 0xb8, 0xcb, 0x3d, 0x2b, 0xac, 0x69, 0x8b, 0x77, 0xd7, 0xbd, 0x3c, 0xea, 0xa3, 0x69, 0x93, 0xbd, 0xc8, 0x8f, 0x7e, 0xca, 0x9b, 0x08, 0x83, 0x8a, 0xa2, 0xca, 0x7a, - 0xc9, 0xa3, 0xc7, 0x72, 0x0a, 0xfa, 0x7f, 0x7f, 0x49, 0x8b, 0x45, 0x6a, 0xa4, 0xb8, 0xf8, 0x6f, 0x48, 0x8b, 0xa3, 0x59, 0x6a, 0x7a, 0x3f, 0x8d, 0x07, 0x83, 0x66, 0x72, 0x7f, 0xea, 0xec, 0xb6, - 0x89, 0x93, 0x04, 0x72, 0xaa, 0xaa, 0x8a, 0x6a, 0xc6, 0x82, 0xa3, 0x61, 0x6c, 0x5e, 0x9f, 0x0d, 0xe7, 0x7a, 0x22, 0x51, 0xb5, 0x3e, 0xbe, 0x0b, 0x28, 0x8b, 0x05, 0x62, 0x75, 0xcb, 0x8a, 0x00, - 0x69, 0x93, 0xa4, 0x51, 0x79, 0xaa, 0x02, 0xc0, 0xca, 0x9b, 0xe4, 0x61, 0xa9, 0xff, 0x7f, 0x8b, 0xad, 0xb4, 0x63, 0x59, 0xaf, 0xab, 0x2a, 0x5e, 0xad, 0xbc, 0x25, 0x6a, 0x5e, 0xfa, 0xa0, 0xd5, - 0x28, 0x83, 0xa4, 0x59, 0xaa, 0x0a, 0xa0, 0x58, 0x48, 0x8b, 0xc5, 0x61, 0x0a, 0x08, 0xaa, 0xad, 0xca, 0x9b, 0xa7, 0x7a, 0xaa, 0xfe, 0xb5, 0x8d, 0x89, 0x93, 0xe8, 0x82, 0xd7, 0x2b, 0xbb, 0xaa, - 0xca, 0x9b, 0x48, 0x8b, 0xfd, 0xff, 0xeb, 0xa3, 0xaa, 0x9b, 0x08, 0x83, 0xa8, 0x9e, 0xa8, 0x27, 0xaa, 0x9b, 0x69, 0x93, 0x9f, 0xad, 0xbf, 0xf0, 0xca, 0x9b, 0x89, 0x93, 0xac, 0xbb, 0x0a, 0xff, - 0xeb, 0xa3, 0x89, 0x93, 0x3f, 0xbe, 0xaf, 0xfd, 0xeb, 0xa3, 0xa9, 0x93, 0xfe, 0xaa, 0xaf, 0xf5, 0xeb, 0xa3, 0xaa, 0x9b, 0x2b, 0xaf, 0xbb, 0x5f, 0xea, 0xa3, 0x89, 0x9b, 0xa2, 0xa8, 0xff, 0xad, - 0xea, 0xab, 0xa9, 0x9b, 0xab, 0xff, 0xbb, 0xbf, 0x0a, 0xac, 0xca, 0xa3, 0x02, 0x0b, 0xaf, 0xef, 0x2b, 0xb4, 0xa9, 0xa3, 0x58, 0xfa, 0xfe, 0xdf, 0xc9, 0xa3, 0xc6, 0x82, 0xc2, 0x21, 0xe2, 0x68, - 0xa9, 0xa3, 0xc8, 0x7a, 0x7e, 0x7a, 0x7b, 0xf0, 0x2a, 0x83, 0x66, 0x72, 0xff, 0x7a, 0x0a, 0x82, 0x0c, 0xa4, 0xa3, 0x59, 0xaa, 0xaa, 0x08, 0x29, 0xcd, 0xc4, 0x89, 0x9b, 0x0d, 0x0b, 0xab, 0x22, - 0x2f, 0xd5, 0x84, 0x51, 0x20, 0x08, 0xc0, 0x62, 0x46, 0x6a, 0x04, 0x29, 0x74, 0x7f, 0x5f, 0xff, 0x86, 0x39, 0xe3, 0x28, 0xff, 0x7f, 0xf5, 0x82, 0x86, 0x39, 0xc3, 0x20, 0xbf, 0xb7, 0x2e, 0x0a, - 0xa6, 0x41, 0x04, 0x31, 0xb7, 0xac, 0xaa, 0xaa, 0xa6, 0x41, 0x24, 0x31, 0xda, 0xea, 0xba, 0xaf, 0xa5, 0x41, 0x24, 0x31, 0xff, 0x57, 0xd7, 0x0b, 0x85, 0x41, 0xe4, 0x30, 0x82, 0x0b, 0x7f, 0x50, - 0xc6, 0x49, 0xc3, 0x28, 0xfa, 0xea, 0x8b, 0xb5, 0x85, 0x41, 0x04, 0x29, 0xdf, 0xfe, 0xff, 0x0a, 0xa6, 0x39, 0x45, 0x31, 0xe8, 0xfe, 0xdf, 0xe2, 0x65, 0x39, 0xc3, 0x28, 0xdf, 0x7e, 0xd0, 0xe0, - 0x45, 0x39, 0xe3, 0x20, 0x28, 0xea, 0xff, 0x55, 0x64, 0x31, 0xc3, 0x20, 0xa8, 0xff, 0x77, 0x77, 0x44, 0x31, 0xa3, 0x20, 0x00, 0xfa, 0xbf, 0x7d, 0x24, 0x31, 0xc3, 0x20, 0x82, 0x5a, 0xe8, 0x57, - 0x24, 0x31, 0xe3, 0x20, 0xd6, 0xf5, 0xf8, 0x75, 0x04, 0x39, 0xc3, 0x20, 0xad, 0x25, 0x0b, 0xed, 0x24, 0x39, 0xe3, 0x30, 0x7c, 0xec, 0x94, 0x0b, 0x24, 0x39, 0x03, 0x31, 0x75, 0x33, 0x5a, 0xf2, - 0x6c, 0xbc, 0x2b, 0xb4, 0xf5, 0xfa, 0xff, 0xfa, 0x6c, 0xbc, 0x2b, 0xac, 0xff, 0xfa, 0xae, 0xbe, 0x6c, 0xb4, 0x2b, 0xac, 0x39, 0x8a, 0x82, 0xaa, 0x6d, 0xbc, 0x4b, 0xb4, 0x55, 0x5d, 0xaf, 0xdc, - 0x6c, 0xbc, 0x2b, 0xac, 0xbb, 0xaa, 0xaa, 0xaa, 0x6c, 0xbc, 0x4b, 0xb4, 0x5d, 0xfd, 0xfb, 0xd7, 0x6d, 0xbc, 0x2b, 0xb4, 0xdf, 0xfe, 0x3a, 0xee, 0x6c, 0xbc, 0x2b, 0xac, 0xed, 0xeb, 0xba, 0xbe, - 0x6c, 0xbc, 0x2b, 0xac, 0xff, 0xee, 0xaa, 0xba, 0x6c, 0xbc, 0x2b, 0xac, 0x55, 0xff, 0xbf, 0xaa, 0x4c, 0xbc, 0x2b, 0xac, 0xda, 0xaf, 0xfa, 0xbe, 0x4b, 0xbc, 0x0c, 0xac, 0xaf, 0xef, 0xbf, 0xaa, - 0x4c, 0xbc, 0x0b, 0xac, 0xbe, 0xfe, 0xaf, 0xaa, 0x6c, 0xbc, 0x2b, 0xb4, 0xf5, 0x7f, 0x55, 0xb6, 0x4b, 0xbc, 0x0b, 0xac, 0xaa, 0xa3, 0xff, 0xbb, 0x4c, 0xb4, 0x0b, 0xac, 0xea, 0xbe, 0xfb, 0xeb, - 0x2c, 0xb4, 0x0b, 0xac, 0xd7, 0xcf, 0x23, 0x28, 0x2c, 0xb4, 0x0b, 0xac, 0xef, 0xff, 0xa2, 0xe2, 0x6c, 0xb4, 0x0b, 0xac, 0xf5, 0x9d, 0xdc, 0xaf, 0x4c, 0xb4, 0x0b, 0xac, 0x57, 0xfe, 0x58, 0xe3, - 0xad, 0xbc, 0xeb, 0xab, 0xb3, 0xdf, 0x57, 0x77, 0x0e, 0xc5, 0x0b, 0xac, 0xe8, 0xb3, 0xff, 0x55, 0xad, 0xbc, 0xeb, 0xab, 0xff, 0xf0, 0x57, 0x55, 0xed, 0xc4, 0xeb, 0xa3, 0xa8, 0xbf, 0xff, 0xf5, - 0x4c, 0xb4, 0xcb, 0xa3, 0xa0, 0xa0, 0x57, 0xae, 0xad, 0xbc, 0xcb, 0xa3, 0xab, 0xff, 0xb5, 0xc8, 0x0f, 0xc5, 0xcb, 0x9b, 0x82, 0x7f, 0xc3, 0xbf, 0xad, 0xbc, 0xec, 0xab, 0xfa, 0xbd, 0xef, 0x2f, - 0x8d, 0xb4, 0xcb, 0xa3, 0xdf, 0x02, 0xeb, 0x6e, 0x2f, 0xc5, 0x0c, 0xac, 0xaf, 0x8f, 0xf7, 0x5d, 0xcd, 0xbc, 0x2c, 0xac, 0xf7, 0xac, 0xff, 0xeb, 0xce, 0xbc, 0x89, 0x9b, 0xa8, 0x78, 0x3b, 0xee, - 0x8d, 0xbc, 0xaa, 0xa3, 0xde, 0x90, 0xe8, 0xaa, 0x8d, 0xbc, 0xca, 0xa3, 0xfb, 0xcd, 0xb5, 0xeb, 0x6c, 0xb4, 0xca, 0xa3, 0xef, 0xfd, 0x43, 0xaa, 0x8c, 0xbc, 0xca, 0xa3, 0xfb, 0x57, 0x0d, 0x57, - 0x8c, 0xb4, 0xaa, 0x9b, 0xaa, 0xad, 0xff, 0xcf, 0xee, 0xc4, 0xca, 0xa3, 0xc3, 0x55, 0x5d, 0xfd, 0xad, 0xbc, 0xaa, 0x9b, 0xe2, 0x7e, 0xa7, 0xf2, 0x8d, 0xbc, 0xaa, 0x9b, 0xcf, 0x7f, 0xf8, 0xcb, - 0x6d, 0xb4, 0xca, 0x9b, 0xc3, 0x41, 0x12, 0xaa, 0xcd, 0xc4, 0x6a, 0x93, 0xfa, 0xed, 0xe2, 0xea, 0x2b, 0xac, 0x69, 0x93, 0xfd, 0xf8, 0xeb, 0x80, 0x2c, 0xac, 0xaa, 0x9b, 0x3f, 0xde, 0x5f, 0xaf, - 0x8d, 0xb4, 0xea, 0xa3, 0xa8, 0xfd, 0xa3, 0x55, 0x4c, 0xb4, 0xea, 0xa3, 0x7c, 0x58, 0xfa, 0x8b, 0x4c, 0xb4, 0x63, 0x59, 0xbe, 0xb4, 0xd8, 0xd8, 0xca, 0x9b, 0xe8, 0x82, 0x02, 0x0a, 0xab, 0xad, - 0xeb, 0xa3, 0x89, 0x93, 0xa2, 0xaa, 0x7d, 0xfd, 0x0b, 0xac, 0x8a, 0x93, 0x2b, 0xaf, 0xbd, 0xbe, 0x0b, 0xa4, 0x69, 0x93, 0x7e, 0x76, 0xab, 0x02, 0x6c, 0xb4, 0xaa, 0x9b, 0x55, 0xcf, 0xdf, 0xef, - 0x2b, 0xac, 0xaa, 0x9b, 0x2b, 0x77, 0x5f, 0xef, 0xae, 0xb4, 0x89, 0x9b, 0xa2, 0xfd, 0xff, 0xff, 0x8d, 0xb4, 0xca, 0xa3, 0x7e, 0x7c, 0x57, 0xd5, 0x4c, 0xac, 0xaa, 0xa3, 0x89, 0xf5, 0xf7, 0xf7, - 0x6d, 0xb4, 0xaa, 0x9b, 0xae, 0x8f, 0x57, 0xf5, 0x0b, 0xa4, 0x8a, 0x9b, 0x78, 0x7e, 0xaf, 0xbe, 0x0b, 0xa4, 0x8a, 0x9b, 0x7b, 0xaa, 0xba, 0x22, 0x6d, 0xb4, 0xa9, 0x9b, 0x44, 0xfb, 0xff, 0x7f, - 0xeb, 0xa3, 0x8a, 0x9b, 0x2b, 0x02, 0xea, 0xdc, 0x0b, 0xac, 0xaa, 0x9b, 0x37, 0xfa, 0xeb, 0x9f, 0x0b, 0xa4, 0x49, 0x93, 0xa9, 0xa0, 0xea, 0xaa, 0x0b, 0xa4, 0x69, 0x93, 0xf7, 0x5f, 0xfb, 0x3e, - 0x4c, 0xac, 0x89, 0x93, 0x73, 0x5d, 0xfb, 0xfa, 0x0c, 0xa4, 0x69, 0x93, 0x9f, 0xd5, 0x6a, 0xa8, 0x4c, 0xac, 0xe8, 0x82, 0xfe, 0xdf, 0x3f, 0x0a, 0x0b, 0xa4, 0x69, 0x93, 0x5e, 0xbe, 0x2b, 0xa0, - 0xea, 0xa3, 0x69, 0x93, 0xaf, 0xab, 0x72, 0xfe, 0xca, 0x9b, 0x69, 0x93, 0xe8, 0x78, 0xd7, 0x57, 0xca, 0x9b, 0x48, 0x8b, 0xa5, 0xe2, 0x7a, 0xef, 0xca, 0x93, 0x49, 0x8b, 0xde, 0x3f, 0x7b, 0xb7, - 0xaa, 0x9b, 0x68, 0x8b, 0xff, 0xd4, 0xe7, 0xff, 0xca, 0x9b, 0x48, 0x8b, 0xfb, 0x73, 0xfb, 0x7d, 0xca, 0x9b, 0x08, 0x7b, 0xe2, 0xfe, 0xde, 0x76, 0x69, 0x8b, 0xe8, 0x7a, 0x3e, 0xb8, 0xdf, 0x0b, - 0x68, 0x93, 0xa6, 0x7a, 0xde, 0xa7, 0xfe, 0x4e, 0x28, 0x83, 0xc4, 0x59, 0x68, 0xd8, 0xb6, 0x2f, 0x08, 0x83, 0xa7, 0x7a, 0xb5, 0xf9, 0x6e, 0x0e, 0x49, 0x8b, 0x65, 0x6a, 0xff, 0xfb, 0x9f, 0x3e, - 0x69, 0x93, 0x83, 0x59, 0x72, 0x78, 0x58, 0x7c, 0x49, 0x8b, 0x43, 0x51, 0xbd, 0x21, 0x0a, 0x08, 0x49, 0x93, 0xa7, 0x72, 0xcd, 0xb8, 0x82, 0x23, 0x89, 0x93, 0xe7, 0x82, 0xa5, 0xeb, 0x23, 0x2a, - 0xaa, 0x9b, 0x05, 0x62, 0x9a, 0x0a, 0x00, 0xa0, 0x0b, 0xa4, 0x68, 0x93, 0x07, 0x2d, 0xaf, 0xf5, 0xea, 0xa3, 0x82, 0x59, 0xa0, 0xe0, 0x98, 0xb6, 0x68, 0x93, 0xa3, 0x59, 0x78, 0xaf, 0x7e, 0x7a, - 0x28, 0x83, 0x44, 0x51, 0x75, 0xe8, 0x57, 0x75, 0xe7, 0x7a, 0x04, 0x41, 0x0b, 0xaa, 0xf5, 0x7b, 0xa9, 0x93, 0x64, 0x51, 0xaa, 0x0a, 0xab, 0xf5, 0x0a, 0x9c, 0x26, 0x6a, 0xaa, 0xa8, 0xf7, 0xbf, - 0xaa, 0x93, 0x47, 0x72, 0x00, 0xaa, 0x9f, 0x2a, 0x2b, 0xac, 0x49, 0x8b, 0x3f, 0xf5, 0x75, 0xff, 0x89, 0x93, 0xa6, 0x7a, 0x27, 0x0d, 0x08, 0x88, 0xca, 0x9b, 0x49, 0x8b, 0xae, 0x8a, 0x82, 0x6b, - 0xaa, 0x9b, 0x69, 0x93, 0x2e, 0x00, 0xae, 0xe5, 0xca, 0xa3, 0x89, 0x93, 0x7f, 0x22, 0x55, 0xfd, 0xeb, 0xa3, 0x89, 0x9b, 0xaf, 0x0a, 0x8d, 0xae, 0xeb, 0xab, 0xaa, 0x9b, 0xab, 0xaa, 0xfa, 0xff, - 0x0b, 0xac, 0xaa, 0x9b, 0xbf, 0xab, 0xeb, 0x57, 0x0b, 0xac, 0xaa, 0x9b, 0xaa, 0x0a, 0xaf, 0xa9, 0x0b, 0xac, 0xaa, 0xa3, 0xf0, 0xe0, 0xff, 0xff, 0xca, 0xab, 0x07, 0x93, 0x80, 0x00, 0x00, 0x48, - 0xca, 0xa3, 0x24, 0x72, 0x82, 0xab, 0xa1, 0x0b, 0xea, 0xa3, 0x67, 0x72, 0x7f, 0xfa, 0xaa, 0xb0, 0x6c, 0xb4, 0x27, 0x6a, 0xad, 0x2f, 0x0a, 0x0a, 0xee, 0xcc, 0x4c, 0xb4, 0xad, 0x2f, 0xaa, 0x3a, - 0x2f, 0xd5, 0x43, 0x41, 0x50, 0x58, 0x5c, 0x57, 0xe6, 0x49, 0x85, 0x39, 0xfe, 0x7e, 0xf7, 0xa8, 0xa6, 0x41, 0x45, 0x31, 0x02, 0x8e, 0x2e, 0xde, 0xe7, 0x41, 0x45, 0x31, 0xf8, 0x0a, 0xbb, 0x55, - 0xc6, 0x41, 0x04, 0x31, 0xaa, 0x00, 0xa0, 0xb5, 0xc6, 0x39, 0x24, 0x31, 0xa8, 0x78, 0x7b, 0xfa, 0x65, 0x39, 0x24, 0x29, 0x00, 0x3e, 0x3f, 0xd5, 0xe6, 0x49, 0xe3, 0x30, 0xca, 0xea, 0xff, 0xd5, - 0x44, 0x39, 0xc3, 0x28, 0xb5, 0xaa, 0x28, 0xa2, 0x44, 0x41, 0xc3, 0x20, 0xa8, 0x5e, 0xac, 0xff, 0x24, 0x31, 0xc3, 0x20, 0xaa, 0x6a, 0x40, 0xba, 0x04, 0x29, 0xc3, 0x18, 0xa0, 0x57, 0xbb, 0x5a, - 0x04, 0x29, 0xa3, 0x18, 0x20, 0xbf, 0xfb, 0x77, 0x04, 0x29, 0xa3, 0x18, 0x7e, 0xee, 0xbb, 0xbf, 0x04, 0x31, 0xa3, 0x18, 0x5f, 0xff, 0xe8, 0x2a, 0x24, 0x31, 0xa3, 0x18, 0x7d, 0xff, 0xaf, 0x02, - 0x04, 0x29, 0xa2, 0x18, 0x8d, 0xb5, 0xfa, 0xaa, 0x04, 0x29, 0xa3, 0x20, 0xae, 0xb6, 0xad, 0xae, 0x24, 0x39, 0xa3, 0x20, 0xa2, 0xea, 0x7a, 0x5e, 0x04, 0x39, 0xc2, 0x18, 0x2a, 0xaa, 0xbd, 0xbf, - 0x8d, 0xbc, 0x2b, 0xb4, 0xbf, 0xbe, 0x7f, 0xe3, 0x6c, 0xbc, 0x4b, 0xb4, 0xee, 0x6d, 0xf7, 0xfa, 0x6d, 0xbc, 0x4b, 0xb4, 0xae, 0xae, 0x9d, 0xb8, 0x6c, 0xbc, 0x4c, 0xb4, 0xf7, 0x3e, 0xdf, 0x7a, - 0x6c, 0xbc, 0x2b, 0xb4, 0xee, 0xba, 0xae, 0xeb, 0x6c, 0xbc, 0x4b, 0xb4, 0x5b, 0xbd, 0xfb, 0x73, 0x6c, 0xbc, 0x2b, 0xac, 0xfe, 0xba, 0xbb, 0xef, 0x6c, 0xbc, 0x2b, 0xac, 0xee, 0xab, 0xfa, 0xfe, - 0x6c, 0xbc, 0x4b, 0xac, 0xfa, 0xfe, 0xff, 0xfa, 0x4c, 0xbc, 0x2b, 0xac, 0xfa, 0xaa, 0xaa, 0xaa, 0x6c, 0xbc, 0x2b, 0xb4, 0xff, 0xff, 0x6f, 0xdc, 0x6c, 0xbc, 0x2b, 0xac, 0xeb, 0xff, 0xff, 0xb7, - 0x4c, 0xbc, 0x2b, 0xac, 0xbb, 0xae, 0xff, 0xaf, 0x6c, 0xb4, 0x2b, 0xac, 0xbf, 0x2b, 0xdf, 0x75, 0x4c, 0xb4, 0x0b, 0xac, 0xa8, 0x20, 0x0a, 0xfa, 0x4c, 0xb4, 0x0b, 0xac, 0xab, 0x02, 0x3a, 0xb9, - 0x6b, 0xb4, 0x0c, 0xac, 0xd7, 0xe2, 0xfe, 0xbf, 0x4c, 0xb4, 0x0b, 0xac, 0xaf, 0xaf, 0xbb, 0xbe, 0x4c, 0xb4, 0xeb, 0xab, 0xa8, 0xba, 0x7e, 0xba, 0x0c, 0xb4, 0xeb, 0xa3, 0xaa, 0xfe, 0xbb, 0xea, - 0x2c, 0xb4, 0xea, 0xa3, 0xee, 0xba, 0xff, 0xfe, 0x2b, 0xb4, 0xea, 0xa3, 0xaa, 0x8a, 0xfa, 0xff, 0x4c, 0xb4, 0xea, 0xa3, 0xd7, 0xf7, 0x3f, 0xff, 0x4b, 0xb4, 0xca, 0xa3, 0x3b, 0x7f, 0x7f, 0x7f, - 0x8c, 0xb4, 0xaa, 0xa3, 0xac, 0xbf, 0xff, 0x7f, 0x8d, 0xb4, 0xeb, 0xab, 0x0f, 0xee, 0xfd, 0xfe, 0x0f, 0xc5, 0x0b, 0xa4, 0xff, 0xf9, 0x2d, 0x55, 0x8e, 0xb4, 0x0b, 0xac, 0xae, 0xe9, 0x22, 0xad, - 0xcd, 0xbc, 0x2c, 0xac, 0x67, 0x5f, 0xa8, 0x5e, 0xce, 0xbc, 0x2c, 0xac, 0xdd, 0xff, 0xf4, 0xdd, 0x6d, 0xb4, 0xaa, 0xa3, 0x6a, 0x80, 0x08, 0xa0, 0x6d, 0xb4, 0xeb, 0xa3, 0xe5, 0xa2, 0xd8, 0xcb, - 0x30, 0xc5, 0xaa, 0x9b, 0xff, 0x3f, 0x7f, 0xff, 0xcd, 0xbc, 0xca, 0xa3, 0x7f, 0xe8, 0xfa, 0xfe, 0x8c, 0xb4, 0xca, 0xa3, 0xd5, 0x33, 0xfb, 0xeb, 0xee, 0xbc, 0xca, 0xa3, 0x5b, 0x5c, 0x75, 0xeb, - 0xcd, 0xc4, 0x8a, 0x9b, 0xf7, 0xff, 0xff, 0xfc, 0x8c, 0xb4, 0xca, 0x9b, 0x73, 0xfb, 0xa7, 0x2f, 0xae, 0xbc, 0xaa, 0x9b, 0x2a, 0xfa, 0x2d, 0xfa, 0x6d, 0xb4, 0xaa, 0x9b, 0xf3, 0xff, 0x82, 0x7a, - 0x6d, 0xb4, 0x0b, 0xa4, 0x43, 0xf5, 0x3a, 0x9a, 0x8d, 0xb4, 0x0b, 0xac, 0x5f, 0xf5, 0xb9, 0xa2, 0x6d, 0xb4, 0xeb, 0xa3, 0x57, 0xef, 0xae, 0x80, 0x6c, 0xb4, 0xca, 0xa3, 0x75, 0xb6, 0xaf, 0xf0, - 0x2c, 0xac, 0x89, 0x93, 0x2a, 0x20, 0x90, 0xae, 0x2b, 0xac, 0xca, 0xa3, 0x0f, 0x3e, 0x70, 0x5d, 0xea, 0xa3, 0xa4, 0x59, 0xd0, 0x70, 0xd0, 0xd0, 0xcb, 0x9b, 0xa8, 0x72, 0x2f, 0x29, 0x09, 0x0b, - 0xec, 0xa3, 0xaa, 0x9b, 0xbd, 0x8b, 0x0b, 0x0a, 0x2c, 0xac, 0xcb, 0xa3, 0xd7, 0xde, 0xae, 0x80, 0x4c, 0xb4, 0xeb, 0xa3, 0x55, 0x57, 0x77, 0xf1, 0x4c, 0xac, 0xaa, 0x9b, 0xea, 0xea, 0x5f, 0x2b, - 0x69, 0xb4, 0xab, 0x9b, 0xdf, 0xf7, 0xf5, 0x8a, 0x2b, 0xac, 0xa4, 0x82, 0x82, 0x88, 0x00, 0x60, 0xac, 0xbc, 0x41, 0x59, 0xaa, 0xaa, 0x80, 0x57, 0x0a, 0xac, 0x62, 0x59, 0x00, 0x00, 0xfa, 0x55, - 0x6b, 0xb4, 0x82, 0x59, 0xaa, 0x00, 0xd7, 0x55, 0x4a, 0xac, 0xa3, 0x61, 0x00, 0x80, 0x5f, 0x55, 0x8a, 0xb4, 0x83, 0x59, 0x00, 0xfa, 0x55, 0x55, 0x8b, 0xb4, 0xc4, 0x61, 0x00, 0x7f, 0xdd, 0xbf, - 0x2b, 0xa4, 0xa7, 0x7a, 0x20, 0xfd, 0xfd, 0x2b, 0x4a, 0xac, 0xa7, 0x7a, 0x82, 0x55, 0xee, 0xb8, 0xea, 0xa3, 0xa7, 0x7a, 0x28, 0xff, 0xbf, 0x76, 0x2a, 0xac, 0x47, 0x72, 0x2a, 0xaa, 0xfa, 0x55, - 0x09, 0xac, 0xa7, 0x7a, 0x80, 0x7f, 0xff, 0xaf, 0xca, 0x9b, 0xc7, 0x7a, 0x00, 0xaf, 0x77, 0xba, 0x0a, 0xa4, 0x05, 0x62, 0x2a, 0x0a, 0x77, 0xaa, 0xea, 0xa3, 0x45, 0x6a, 0xa8, 0x00, 0xa5, 0xaa, - 0xca, 0xa3, 0x28, 0x8b, 0x8b, 0xa2, 0x0b, 0xf5, 0x4c, 0xac, 0xe7, 0x82, 0xff, 0xff, 0xff, 0x4f, 0x89, 0x93, 0xe7, 0x82, 0xf0, 0xa2, 0xf7, 0xbf, 0xaa, 0x93, 0x08, 0x8b, 0xe2, 0xfe, 0x9e, 0xbf, - 0xa9, 0x93, 0x08, 0x83, 0xea, 0x61, 0xef, 0xb7, 0x89, 0x93, 0x08, 0x7b, 0x2f, 0xae, 0x2d, 0xfb, 0xaa, 0x93, 0xe8, 0x7a, 0xde, 0xb8, 0xea, 0x02, 0x49, 0x83, 0xe3, 0x69, 0x80, 0x80, 0x00, 0x68, - 0x29, 0x8b, 0xc5, 0x59, 0x6a, 0xda, 0x3c, 0x0b, 0x69, 0x8b, 0x47, 0x62, 0xa9, 0xaa, 0xaa, 0x02, 0x69, 0x8b, 0xa7, 0x72, 0xb7, 0x8e, 0x7e, 0xe0, 0x69, 0x8b, 0x45, 0x72, 0x28, 0xae, 0x82, 0x78, - 0x8a, 0x8b, 0x83, 0x59, 0xde, 0xb6, 0x2f, 0x8b, 0x69, 0x8b, 0xa7, 0x7a, 0x7a, 0x3e, 0x2e, 0xb7, 0x4c, 0xac, 0xe7, 0x82, 0xdd, 0x2e, 0xff, 0x57, 0xa9, 0x93, 0x28, 0x8b, 0xec, 0x97, 0xbe, 0xd7, - 0xca, 0x9b, 0x04, 0x6a, 0xaa, 0x80, 0xea, 0x7a, 0x09, 0xa4, 0x42, 0x51, 0x8a, 0x7a, 0xd7, 0xad, 0x69, 0x93, 0x62, 0x59, 0xa1, 0xfb, 0xaa, 0x00, 0x8a, 0x93, 0x83, 0x59, 0xb5, 0xab, 0x0a, 0x00, - 0xa9, 0x9b, 0x28, 0x93, 0xfe, 0xb5, 0xfe, 0x8a, 0xc9, 0xa3, 0x88, 0x6a, 0x7f, 0x0a, 0x0a, 0x2a, 0xe7, 0x82, 0x03, 0x41, 0xaf, 0xfc, 0x5c, 0x5c, 0x88, 0x93, 0xc1, 0x38, 0x2a, 0xaa, 0xfd, 0xd5, - 0x69, 0x93, 0xa4, 0x59, 0x00, 0xaa, 0x2d, 0xd5, 0x89, 0x93, 0x66, 0x72, 0xa2, 0x8a, 0xea, 0xfd, 0x89, 0x93, 0xa7, 0x7a, 0x2a, 0xaa, 0xd5, 0x2b, 0x89, 0x93, 0x08, 0x8b, 0xa0, 0xdf, 0xa9, 0xca, - 0x89, 0x93, 0x08, 0x8b, 0x2a, 0xed, 0x93, 0x2d, 0xaa, 0x9b, 0x48, 0x8b, 0x2a, 0xb5, 0x2e, 0x0a, 0xea, 0xa3, 0x69, 0x93, 0xab, 0xa7, 0x0a, 0xaf, 0x0b, 0xac, 0x8a, 0x9b, 0xdd, 0xa2, 0xaa, 0xbf, - 0x0b, 0xa4, 0xaa, 0x9b, 0xb1, 0xbf, 0xaf, 0x36, 0x0b, 0xac, 0xca, 0x9b, 0x29, 0xaa, 0xff, 0xfe, 0x2b, 0xac, 0x68, 0x9b, 0xa8, 0xea, 0xfa, 0x7f, 0x4b, 0xb4, 0x69, 0x93, 0xd7, 0xa9, 0x2b, 0xab, - 0x6c, 0xbc, 0x07, 0x8b, 0xaa, 0xae, 0x8a, 0x86, 0x2c, 0xac, 0x86, 0x72, 0x1a, 0x2a, 0xa2, 0x82, 0x6c, 0xbc, 0xab, 0x9b, 0xaf, 0x2f, 0x09, 0x29, 0x90, 0xdd, 0x83, 0x51, 0x2a, 0x8a, 0x4a, 0x48, - 0xe5, 0x59, 0x24, 0x29, 0xa2, 0xfa, 0xfa, 0x77, 0xc6, 0x49, 0x03, 0x19, 0xaa, 0x28, 0xfe, 0xf7, 0xe6, 0x49, 0xe4, 0x20, 0xa0, 0x7e, 0xd7, 0x5f, 0x85, 0x41, 0x04, 0x21, 0xe0, 0xad, 0x83, 0xa2, - 0x64, 0x39, 0x05, 0x21, 0xbf, 0xab, 0x0d, 0xab, 0x85, 0x41, 0x04, 0x31, 0xfd, 0x62, 0x7e, 0xd5, 0x45, 0x39, 0x03, 0x31, 0x5f, 0x5d, 0x52, 0x60, 0xe4, 0x38, 0x03, 0x29, 0xab, 0xbf, 0x97, 0x8a, - 0x44, 0x39, 0xc3, 0x28, 0xfc, 0x7a, 0xd2, 0x6a, 0x24, 0x31, 0xc3, 0x20, 0x8a, 0x7f, 0xf3, 0x2a, 0x04, 0x29, 0xc3, 0x20, 0xd0, 0xb3, 0x02, 0x50, 0x44, 0x31, 0xc3, 0x20, 0xaa, 0x37, 0xab, 0xa2, - 0x45, 0x39, 0xc3, 0x20, 0xd7, 0x80, 0xa8, 0xaa, 0x45, 0x31, 0xa3, 0x18, 0xff, 0xde, 0x78, 0xf0, 0x45, 0x31, 0xa3, 0x18, 0xa3, 0xea, 0x5d, 0xfa, 0x04, 0x29, 0xa3, 0x18, 0xb0, 0x55, 0xe7, 0x2b, - 0x24, 0x29, 0x82, 0x10, 0xbf, 0xdf, 0xff, 0x00, 0x24, 0x39, 0xa3, 0x18, 0xbf, 0x25, 0xb7, 0xfe, 0x44, 0x39, 0xa3, 0x20, 0x76, 0xde, 0xb7, 0x0f, 0x85, 0x39, 0xe4, 0x30, 0x0d, 0x20, 0xea, 0xff, - 0x8d, 0xbc, 0x2c, 0xb4, 0xed, 0xbe, 0xab, 0x8a, 0x6d, 0xbc, 0x4b, 0xb4, 0xfb, 0xab, 0xab, 0xe8, 0x4b, 0xbc, 0x8d, 0xb4, 0xe0, 0xaa, 0xa2, 0xbe, 0x6d, 0xbc, 0x2b, 0xb4, 0x7e, 0xaf, 0x8a, 0xea, - 0x6d, 0xbc, 0x4b, 0xb4, 0xd7, 0xff, 0xf7, 0xcd, 0x6c, 0xbc, 0x2b, 0xb4, 0xfd, 0xff, 0xdf, 0xba, 0x6d, 0xbc, 0x2b, 0xb4, 0xbb, 0xdc, 0xff, 0xfe, 0x4c, 0xb4, 0x2b, 0xac, 0x00, 0xaa, 0xb8, 0xa2, - 0x4c, 0xb4, 0x0b, 0xac, 0xa8, 0xe8, 0x3e, 0xfe, 0x4c, 0xb4, 0x0a, 0xac, 0x8a, 0xa2, 0xfe, 0xdd, 0x2c, 0xb4, 0x0a, 0xac, 0x00, 0x88, 0x88, 0x6c, 0x6c, 0xb4, 0x0a, 0xac, 0x3f, 0xfe, 0xfb, 0xdf, - 0x4c, 0xb4, 0x0b, 0xac, 0x20, 0x38, 0xfe, 0xbf, 0x4c, 0xb4, 0x0b, 0xac, 0x8a, 0xa8, 0xd5, 0xfe, 0x4c, 0xb4, 0x0b, 0xac, 0x78, 0xfe, 0xab, 0x5e, 0x8e, 0xbc, 0x2b, 0xac, 0x55, 0xc5, 0xff, 0x55, - 0x4c, 0xb4, 0x0b, 0xac, 0xbe, 0xda, 0xff, 0xe8, 0x2c, 0xac, 0xca, 0xa3, 0x00, 0xa8, 0xa8, 0xd8, 0x2c, 0xb4, 0xeb, 0xa3, 0xaa, 0xab, 0xfb, 0xeb, 0x2c, 0xac, 0xeb, 0xa3, 0xaa, 0x02, 0xe8, 0xcb, - 0x2c, 0xb4, 0xeb, 0xa3, 0xeb, 0xf0, 0xff, 0xf7, 0x4c, 0xac, 0xaa, 0xa3, 0xbb, 0xaa, 0x22, 0x7e, 0x2c, 0xac, 0xea, 0xa3, 0xd3, 0x7f, 0xf7, 0xbf, 0x2c, 0xac, 0xcb, 0xa3, 0xff, 0x29, 0x2a, 0x02, - 0x2c, 0xac, 0xca, 0x9b, 0x76, 0x2a, 0xa8, 0xa0, 0x2c, 0xac, 0xeb, 0xa3, 0xaa, 0x2a, 0xbe, 0xee, 0x2c, 0xac, 0xea, 0xa3, 0xf9, 0x42, 0xeb, 0xbb, 0x4c, 0xb4, 0xca, 0xa3, 0xbf, 0xfd, 0x2f, 0xbe, - 0x6c, 0xb4, 0xca, 0xa3, 0xff, 0xbf, 0xfd, 0xf8, 0x6c, 0xb4, 0xeb, 0xa3, 0xff, 0xbe, 0xff, 0x73, 0x4c, 0xac, 0xca, 0xa3, 0xe8, 0xba, 0xad, 0x62, 0x6c, 0xb4, 0x0b, 0xac, 0xce, 0x0f, 0x7f, 0x25, - 0x6d, 0xb4, 0xea, 0xa3, 0xf3, 0xfe, 0xff, 0xed, 0xce, 0xbc, 0x0b, 0xac, 0x5d, 0x7d, 0xd5, 0x83, 0x8d, 0xb4, 0x49, 0x8b, 0xa6, 0x2e, 0xa2, 0x80, 0xce, 0xbc, 0x0b, 0xac, 0xb7, 0x37, 0x8f, 0xb0, - 0xce, 0xbc, 0x0b, 0xac, 0xdd, 0x5d, 0x72, 0x2c, 0x2e, 0xcd, 0xcb, 0x9b, 0x5f, 0x8f, 0xff, 0xaf, 0xce, 0xbc, 0xeb, 0xa3, 0xd8, 0xcb, 0xbd, 0xff, 0xce, 0xbc, 0x0b, 0xa4, 0x2d, 0xdf, 0xae, 0xef, - 0xce, 0xbc, 0x2c, 0xac, 0x86, 0x7e, 0xd5, 0x77, 0xcd, 0xbc, 0xab, 0xa3, 0xa2, 0xfe, 0x7f, 0x2a, 0xce, 0xc4, 0x68, 0x93, 0xaa, 0x8f, 0xff, 0x5c, 0xad, 0xbc, 0x43, 0x7a, 0xaa, 0x82, 0xfa, 0x7b, - 0x0a, 0xac, 0x82, 0x61, 0x00, 0xa0, 0xfa, 0x57, 0x0a, 0xac, 0x83, 0x59, 0x00, 0xa8, 0x7f, 0x5d, 0xa9, 0xa3, 0x05, 0x5a, 0xbc, 0xaf, 0xf5, 0xfd, 0x6b, 0xac, 0xe5, 0x69, 0x0a, 0x7e, 0xdf, 0xff, - 0x8c, 0xbc, 0x66, 0x72, 0x00, 0xfd, 0xff, 0xff, 0x0a, 0xac, 0xe8, 0x82, 0xe0, 0x57, 0xd5, 0xaf, 0x2b, 0xac, 0x86, 0x7a, 0xaf, 0xbf, 0x2a, 0x42, 0x0a, 0xac, 0x62, 0x59, 0x02, 0xc0, 0x58, 0x5d, - 0x08, 0xac, 0x22, 0x51, 0x78, 0x57, 0x55, 0xdf, 0x68, 0x72, 0x43, 0x59, 0xd5, 0xf5, 0xff, 0x2b, 0xe9, 0x7a, 0x63, 0x59, 0x5f, 0xff, 0xaf, 0x0a, 0xc8, 0x7a, 0x84, 0x59, 0x55, 0xff, 0xaa, 0x28, - 0xab, 0x8b, 0x84, 0x59, 0xd5, 0xff, 0xaf, 0x0a, 0xeb, 0x9b, 0x26, 0x6a, 0x55, 0xff, 0xaa, 0x00, 0x0b, 0xa4, 0x88, 0x72, 0xb5, 0x2f, 0x8a, 0x80, 0x2c, 0xa4, 0x6a, 0x93, 0xd6, 0xa7, 0x2f, 0x0e, - 0x4c, 0xac, 0x4a, 0x93, 0xab, 0xe8, 0xde, 0x80, 0x2c, 0xa4, 0x25, 0x6a, 0xd7, 0x0b, 0x80, 0x80, 0x0b, 0xa4, 0xe9, 0x72, 0xad, 0x20, 0x20, 0x22, 0xeb, 0x9b, 0x6a, 0x8b, 0xf5, 0x42, 0x73, 0x22, - 0xeb, 0x9b, 0x49, 0x8b, 0xf6, 0x77, 0x01, 0xf8, 0x0b, 0xa4, 0x08, 0x83, 0xdf, 0x9d, 0xba, 0xa3, 0xcb, 0x9b, 0x08, 0x83, 0x7f, 0xea, 0x2a, 0xa0, 0xea, 0x9b, 0x08, 0x83, 0xfd, 0xea, 0x80, 0xea, - 0x6a, 0x93, 0x43, 0x6a, 0xa8, 0x00, 0x00, 0xd7, 0xc9, 0x9b, 0xa3, 0x59, 0x0a, 0xaa, 0x00, 0x57, 0x68, 0x8b, 0x05, 0x6a, 0x88, 0x00, 0x6f, 0x2d, 0xea, 0x9b, 0xa4, 0x51, 0xaa, 0xa8, 0x5f, 0xaf, - 0x69, 0x8b, 0x23, 0x51, 0x00, 0x5a, 0x2b, 0x02, 0x89, 0x93, 0xa5, 0x59, 0x00, 0xf5, 0x00, 0xea, 0x69, 0x8b, 0xc5, 0x59, 0x5a, 0xae, 0x80, 0xaf, 0x69, 0x8b, 0x06, 0x62, 0xe5, 0x8a, 0x7f, 0x02, - 0xa9, 0x93, 0x88, 0x72, 0xaa, 0xaa, 0xad, 0xa0, 0x69, 0x8b, 0x45, 0x6a, 0xa8, 0xff, 0xa0, 0xde, 0x69, 0x8b, 0xc4, 0x61, 0xaa, 0x02, 0xe8, 0x7a, 0x08, 0x83, 0xe4, 0x61, 0xe8, 0x60, 0x9e, 0x09, - 0x69, 0x93, 0x25, 0x6a, 0x81, 0x83, 0x80, 0x00, 0xa9, 0x9b, 0x08, 0x83, 0xbd, 0xad, 0x8f, 0x7c, 0x89, 0x93, 0xc3, 0x61, 0x80, 0x0c, 0xc2, 0x7a, 0x68, 0x93, 0x42, 0x51, 0x82, 0xaa, 0x7f, 0xb5, - 0x47, 0x8b, 0x23, 0x51, 0xe0, 0xbe, 0xad, 0xaa, 0x69, 0x93, 0x04, 0x62, 0x09, 0x22, 0xfb, 0xae, 0xaa, 0x9b, 0x04, 0x62, 0x02, 0x6a, 0xab, 0xaa, 0xa9, 0x93, 0xa5, 0x61, 0x00, 0x9d, 0x2a, 0x2a, - 0x89, 0x9b, 0xc7, 0x82, 0xd6, 0x2f, 0x00, 0x00, 0xa9, 0xa3, 0x28, 0x93, 0x6f, 0x2a, 0x5c, 0x3e, 0xaa, 0xa3, 0x23, 0x49, 0x5e, 0x7c, 0x5c, 0x56, 0x83, 0x59, 0xa2, 0x30, 0x3b, 0xbf, 0xd7, 0xde, - 0x85, 0x72, 0x43, 0x51, 0x2b, 0x03, 0xf5, 0xf5, 0x48, 0x8b, 0x42, 0x51, 0x8a, 0xd7, 0xdf, 0xff, 0x48, 0x8b, 0x25, 0x6a, 0xb2, 0xd5, 0xd5, 0xfd, 0x28, 0x8b, 0x66, 0x7a, 0x8a, 0x7e, 0x8a, 0x8a, - 0x69, 0x93, 0xe4, 0x69, 0x09, 0x2b, 0x02, 0x02, 0xaa, 0x9b, 0x28, 0x8b, 0xff, 0xbd, 0xe3, 0x60, 0xaa, 0x9b, 0x69, 0x93, 0x01, 0xa8, 0xf9, 0xfd, 0x0b, 0xac, 0x89, 0x9b, 0xbf, 0xeb, 0x8d, 0x8b, - 0xeb, 0xab, 0xa9, 0x9b, 0xaa, 0xfe, 0x3c, 0x0a, 0xea, 0xa3, 0x69, 0x93, 0xfa, 0xb2, 0xaa, 0x92, 0xca, 0xa3, 0x48, 0x93, 0xb6, 0xe8, 0x3c, 0x32, 0x4b, 0xb4, 0x68, 0x9b, 0xa3, 0xa3, 0xbb, 0x6b, - 0x4c, 0xb4, 0x86, 0x7a, 0x04, 0x0c, 0x8a, 0x02, 0x6c, 0xbc, 0x69, 0x9b, 0xea, 0x2a, 0x6a, 0x6c, 0x70, 0xd5, 0x23, 0x72, 0xab, 0x29, 0x29, 0xa3, 0x2f, 0xd5, 0x64, 0x49, 0x60, 0x60, 0x70, 0x50, - 0x85, 0x41, 0x24, 0x39, 0xe1, 0xe3, 0x28, 0x96, 0x64, 0x31, 0xe3, 0x20, 0xfe, 0xfe, 0x9a, 0xd8, 0x44, 0x39, 0xe3, 0x20, 0x79, 0x7e, 0x28, 0xff, 0x65, 0x39, 0xc3, 0x18, 0xfe, 0x7f, 0xdf, 0x2a, - 0x65, 0x39, 0x04, 0x21, 0xff, 0x35, 0x9d, 0xb8, 0x65, 0x39, 0x04, 0x29, 0x35, 0x7e, 0xa2, 0xf8, 0x85, 0x39, 0x03, 0x31, 0xb8, 0xa9, 0x7a, 0xff, 0x24, 0x39, 0xc3, 0x30, 0xf4, 0xbe, 0x4f, 0x8b, - 0x04, 0x39, 0xc3, 0x28, 0xb8, 0x5c, 0xac, 0xbe, 0x45, 0x39, 0xa3, 0x20, 0x82, 0x5b, 0xfa, 0xfc, 0x65, 0x31, 0xa3, 0x18, 0xff, 0x57, 0x56, 0x8b, 0x44, 0x31, 0xc3, 0x18, 0x9e, 0xb5, 0x8b, 0xea, - 0x44, 0x39, 0xc3, 0x28, 0xaf, 0x0d, 0xa0, 0xab, 0x85, 0x39, 0x24, 0x31, 0xf5, 0x83, 0xe1, 0x75, 0x85, 0x39, 0x24, 0x29, 0xee, 0xf2, 0x3d, 0x5f, 0x85, 0x39, 0x24, 0x29, 0xf5, 0x8a, 0x7d, 0x55, - 0x65, 0x31, 0x24, 0x29, 0xf6, 0xba, 0x64, 0xa6, 0x65, 0x39, 0x04, 0x21, 0xf7, 0x3b, 0xff, 0x9f, 0x24, 0x31, 0xc3, 0x28, 0xb7, 0x96, 0xe7, 0xbe, 0x65, 0x41, 0xc3, 0x20, 0x02, 0x8b, 0xd5, 0x7f, - 0x6d, 0xbc, 0x4c, 0xac, 0xfb, 0xeb, 0xaa, 0xab, 0x6d, 0xbc, 0x4b, 0xac, 0xca, 0xab, 0xab, 0xaa, 0x8c, 0xbc, 0x4c, 0xb4, 0xff, 0x7f, 0xe5, 0x7d, 0x6c, 0xbc, 0x4b, 0xb4, 0xff, 0xbf, 0xbe, 0xa7, - 0x6c, 0xb4, 0x4c, 0xb4, 0xca, 0xd5, 0xe2, 0xad, 0x6c, 0xbc, 0x2b, 0xac, 0xbe, 0xea, 0xab, 0xfe, 0x6c, 0xbc, 0x2b, 0xac, 0xfa, 0x7f, 0xff, 0xdf, 0x4c, 0xb4, 0x0a, 0xac, 0xa8, 0xea, 0x2a, 0x9a, - 0x4c, 0xb4, 0x0b, 0xac, 0xfb, 0x75, 0xf7, 0xa2, 0x2c, 0xb4, 0xea, 0xab, 0xea, 0x0b, 0xfa, 0xa2, 0x0c, 0xb4, 0x2a, 0xac, 0xde, 0xeb, 0x5e, 0xd7, 0x2b, 0xb4, 0xea, 0xab, 0xba, 0xa6, 0xde, 0x7f, - 0x2b, 0xb4, 0x0a, 0xa4, 0xea, 0xfa, 0xbf, 0xf7, 0x2b, 0xac, 0x0b, 0xac, 0x83, 0xd5, 0x58, 0x9f, 0x2b, 0xb4, 0xea, 0xa3, 0xab, 0x8e, 0xfa, 0xea, 0x4c, 0xb4, 0xea, 0xa3, 0xaa, 0xfe, 0x7d, 0xfd, - 0x2b, 0xac, 0xea, 0xa3, 0x2a, 0xa2, 0xff, 0x5f, 0x2b, 0xac, 0xea, 0xa3, 0xae, 0xea, 0xba, 0xf5, 0x4c, 0xac, 0xea, 0xa3, 0xaa, 0xde, 0xff, 0xcf, 0x0b, 0xac, 0xea, 0xa3, 0x80, 0xa2, 0xbe, 0xfd, - 0x2b, 0xac, 0xea, 0xa3, 0x8b, 0xbf, 0xbd, 0x5e, 0x2c, 0xac, 0xea, 0xa3, 0xab, 0x6e, 0xea, 0xbd, 0xad, 0xbc, 0x0b, 0xa4, 0x55, 0x55, 0xd7, 0xf8, 0xee, 0xc4, 0x0b, 0xac, 0x75, 0x55, 0x55, 0x78, - 0x2c, 0xb4, 0x0b, 0xa4, 0xfa, 0xea, 0xab, 0xff, 0x2c, 0xb4, 0xea, 0xa3, 0xf2, 0xea, 0x0a, 0xef, 0x6c, 0xb4, 0xeb, 0xab, 0x55, 0xeb, 0x77, 0x2f, 0x2c, 0xac, 0xea, 0xa3, 0x7a, 0x7b, 0xff, 0x7a, - 0x0b, 0xac, 0xca, 0xa3, 0xcb, 0xac, 0xf9, 0xab, 0x2b, 0xac, 0xaa, 0x9b, 0xea, 0x7e, 0xce, 0x5f, 0xeb, 0xa3, 0xa9, 0x9b, 0x0d, 0xab, 0xef, 0x5d, 0x0b, 0xac, 0x48, 0x93, 0xaa, 0x8a, 0xea, 0xdf, - 0x4c, 0xac, 0x69, 0x93, 0x08, 0x0a, 0xa9, 0xfd, 0x6d, 0xb4, 0xca, 0xa3, 0xb8, 0x2a, 0xeb, 0x55, 0x8d, 0xb4, 0x89, 0x9b, 0xa8, 0x22, 0xab, 0xf7, 0x30, 0xcd, 0x89, 0x9b, 0xff, 0x8b, 0xbf, 0x55, - 0xce, 0xbc, 0xca, 0xa3, 0x08, 0xa0, 0xff, 0x7d, 0x8d, 0xbc, 0xca, 0x9b, 0x82, 0xbf, 0x30, 0xbd, 0x4b, 0xac, 0xca, 0xa3, 0xa2, 0x82, 0xef, 0xf7, 0x6c, 0xb4, 0xeb, 0xab, 0x7b, 0x57, 0xbf, 0xcb, - 0x0e, 0xc5, 0x0b, 0xac, 0xfd, 0xfd, 0x3d, 0x7f, 0x8c, 0xbc, 0xc2, 0x69, 0x00, 0xa0, 0xc8, 0x58, 0xe9, 0xab, 0x63, 0x59, 0xc0, 0x58, 0x55, 0x55, 0x46, 0x6a, 0x63, 0x51, 0x7e, 0x57, 0xd5, 0x2f, - 0x08, 0x7b, 0x64, 0x51, 0x75, 0xf5, 0xab, 0x00, 0x49, 0x8b, 0xe5, 0x61, 0xfd, 0xaf, 0xaa, 0x0a, 0x69, 0x8b, 0x87, 0x72, 0xb5, 0xaf, 0xaa, 0x00, 0xca, 0x9b, 0x08, 0x8b, 0xd5, 0xff, 0xaf, 0x2a, - 0x0a, 0xa4, 0x29, 0x8b, 0xff, 0x0b, 0xa2, 0x5a, 0x2b, 0xac, 0xe4, 0x69, 0x02, 0x60, 0xe8, 0xfe, 0xca, 0x9b, 0xe4, 0x69, 0x5c, 0x55, 0xfe, 0xab, 0x6a, 0x8b, 0xc4, 0x61, 0xf5, 0xbf, 0xaa, 0x02, - 0xaa, 0x93, 0x06, 0x62, 0xfd, 0xab, 0xaa, 0x00, 0xaa, 0x9b, 0xa8, 0x7a, 0xf5, 0xbf, 0x2a, 0x00, 0xcb, 0x9b, 0x09, 0x83, 0x55, 0xfe, 0xaa, 0x02, 0xec, 0xa3, 0xe8, 0x7a, 0x5d, 0xbe, 0x2a, 0x02, - 0xeb, 0xa3, 0x6a, 0x8b, 0xad, 0x0a, 0x22, 0x80, 0x4c, 0xac, 0x89, 0x93, 0xaf, 0xa8, 0xee, 0x75, 0x6c, 0xb4, 0x8a, 0x93, 0xab, 0xa0, 0xff, 0xd5, 0x4c, 0xac, 0xaa, 0x9b, 0x2b, 0xfa, 0x25, 0x2f, - 0x6c, 0xac, 0xca, 0x9b, 0xb0, 0xea, 0x7a, 0x78, 0x4c, 0xac, 0xca, 0x9b, 0x76, 0x37, 0x5e, 0xfe, 0x2c, 0xac, 0x8a, 0x93, 0xa2, 0xee, 0xda, 0x1f, 0xae, 0xb4, 0x28, 0x8b, 0xff, 0xaf, 0x2a, 0x5f, - 0x4c, 0xac, 0xc7, 0x7a, 0x0a, 0x20, 0xe8, 0xfd, 0x0b, 0xa4, 0x06, 0x6a, 0x80, 0x00, 0xf8, 0xd7, 0x2b, 0xa4, 0x64, 0x51, 0x0a, 0xf8, 0xb5, 0xaa, 0xaa, 0x93, 0x05, 0x62, 0xdc, 0x2d, 0xe0, 0xaa, - 0xeb, 0x9b, 0xa7, 0x72, 0xff, 0xfe, 0xbd, 0xdc, 0x89, 0x93, 0x68, 0x6a, 0xd7, 0x0a, 0xa0, 0x28, 0x69, 0x93, 0xa7, 0x72, 0xfd, 0xae, 0x00, 0xe0, 0xaa, 0x9b, 0xe7, 0x7a, 0x15, 0xff, 0xdb, 0xff, - 0xaa, 0x93, 0xe7, 0x82, 0xe3, 0xd6, 0x98, 0xcd, 0xaa, 0x93, 0xc6, 0x7a, 0xad, 0xef, 0x2b, 0x5e, 0xca, 0x93, 0x26, 0x6a, 0x80, 0xaf, 0xa0, 0x5e, 0x88, 0x93, 0xe5, 0x61, 0x00, 0xfa, 0x7a, 0x7d, - 0x27, 0x8b, 0x63, 0x51, 0xf8, 0x5f, 0xbf, 0x2d, 0xca, 0x93, 0x83, 0x59, 0xf5, 0xaf, 0xaa, 0xa2, 0x89, 0x93, 0xe5, 0x61, 0xd7, 0xaf, 0xaa, 0x20, 0x68, 0x93, 0x46, 0x6a, 0xea, 0x7e, 0xef, 0xe8, - 0xe7, 0x82, 0x25, 0x6a, 0x2c, 0xb5, 0x0a, 0xbe, 0x29, 0x83, 0x04, 0x6a, 0x7a, 0xff, 0x28, 0x0a, 0x69, 0x8b, 0xc3, 0x61, 0xd5, 0x2f, 0xfa, 0xaa, 0xeb, 0x9b, 0xe4, 0x59, 0xa5, 0xab, 0xbb, 0x0b, - 0xaa, 0x9b, 0x08, 0x7b, 0x5f, 0xea, 0x8b, 0x82, 0xa9, 0x9b, 0xe8, 0x72, 0xe5, 0xaa, 0x80, 0xaa, 0x4c, 0xb4, 0xe7, 0x82, 0xd7, 0xff, 0x3f, 0xae, 0xea, 0xa3, 0x08, 0x83, 0xd7, 0xaa, 0xa0, 0xa8, - 0xca, 0xa3, 0x69, 0x93, 0xfe, 0xec, 0x6b, 0xae, 0xcb, 0x9b, 0x68, 0x93, 0xdf, 0xdf, 0xfb, 0xa8, 0x0b, 0xac, 0x43, 0x51, 0x56, 0x5e, 0x5c, 0x5e, 0x43, 0x51, 0xe2, 0x40, 0xd4, 0x1e, 0xa6, 0x0a, - 0xc5, 0x61, 0x02, 0x51, 0xad, 0x2f, 0xbf, 0xee, 0x66, 0x6a, 0xa4, 0x59, 0xbf, 0xc3, 0x7d, 0xa2, 0x48, 0x8b, 0x66, 0x6a, 0xbf, 0xaf, 0xad, 0x02, 0x69, 0x93, 0xc8, 0x7a, 0xd5, 0xa7, 0x2f, 0x02, - 0xca, 0x9b, 0x29, 0x8b, 0xbd, 0xaf, 0x8a, 0xaa, 0xeb, 0xa3, 0x28, 0x8b, 0xff, 0x2d, 0x82, 0x8a, 0xcb, 0xa3, 0xa9, 0x9b, 0x97, 0x95, 0xf7, 0x55, 0x0b, 0xac, 0xca, 0xa3, 0x83, 0xe3, 0xad, 0xc9, - 0x0b, 0xac, 0xc9, 0xa3, 0xef, 0xdf, 0x2a, 0xae, 0x0b, 0xac, 0xaa, 0xa3, 0x7f, 0xe8, 0xe8, 0xaa, 0x0b, 0xac, 0x69, 0x9b, 0xdb, 0x32, 0xae, 0x0a, 0x6c, 0xbc, 0x89, 0x9b, 0xce, 0x1e, 0x9b, 0xbb, - 0xad, 0xbc, 0xc9, 0xab, 0x22, 0xba, 0xba, 0x6a, 0x8c, 0xbc, 0x68, 0xa3, 0x00, 0xfe, 0x2a, 0x9f, 0xce, 0xc4, 0x2b, 0xb4, 0x1a, 0xbd, 0x90, 0xe9, 0x8d, 0xc4, 0x04, 0x39, 0x58, 0x5c, 0xdc, 0x57, - 0xa6, 0x41, 0x44, 0x39, 0xdf, 0xea, 0x78, 0x7e, 0xa6, 0x41, 0xc3, 0x20, 0xf2, 0x0b, 0xf7, 0x57, 0x65, 0x41, 0xc3, 0x20, 0x2f, 0x8a, 0x7f, 0xdd, 0xa5, 0x39, 0xa3, 0x20, 0xa0, 0xfa, 0xfd, 0xeb, - 0x65, 0x31, 0xe4, 0x28, 0x5f, 0xf9, 0xea, 0x03, 0x65, 0x39, 0x04, 0x29, 0xf2, 0x5d, 0x75, 0xfa, 0x24, 0x31, 0xc3, 0x20, 0x8a, 0x57, 0x3f, 0x3e, 0x44, 0x39, 0xe3, 0x28, 0x89, 0x2b, 0xf8, 0xfe, - 0x44, 0x39, 0xe3, 0x30, 0xd0, 0xaa, 0xab, 0xfd, 0x65, 0x39, 0xc3, 0x20, 0x97, 0xbb, 0xa2, 0xca, 0x65, 0x39, 0xa3, 0x20, 0xa0, 0xba, 0x36, 0xd7, 0x84, 0x31, 0xc3, 0x20, 0x75, 0xab, 0x8a, 0x0f, - 0x85, 0x39, 0xe3, 0x28, 0x2d, 0x5e, 0xa0, 0x8a, 0x65, 0x31, 0xe4, 0x28, 0xb4, 0x7d, 0xfe, 0x00, 0x65, 0x31, 0xc4, 0x20, 0xa0, 0xb7, 0x5f, 0xab, 0x84, 0x29, 0xc3, 0x18, 0x0a, 0x5a, 0x5f, 0xfb, - 0x44, 0x31, 0xc3, 0x20, 0x28, 0xab, 0xe9, 0xa5, 0x44, 0x39, 0xe3, 0x20, 0x9a, 0xf7, 0x3d, 0x37, 0x65, 0x41, 0xe3, 0x30, 0x5a, 0xfa, 0xfe, 0x9c, 0x45, 0x39, 0xe3, 0x30, 0xd7, 0xae, 0xe9, 0xe2, - 0x8d, 0xbc, 0x4c, 0xb4, 0xfb, 0x5f, 0x5f, 0x2e, 0x8d, 0xbc, 0x4b, 0xac, 0xfb, 0xab, 0xff, 0xfa, 0x6d, 0xbc, 0x4b, 0xb4, 0xef, 0xa2, 0xfb, 0xa9, 0x6c, 0xbc, 0x2b, 0xac, 0xa2, 0xaa, 0xea, 0xee, - 0x6b, 0xbc, 0x2c, 0xac, 0xba, 0xea, 0xbf, 0xeb, 0x6c, 0xb4, 0x2b, 0xac, 0xda, 0xbf, 0x5c, 0xff, 0x6b, 0xb4, 0x0c, 0xac, 0xfa, 0xf8, 0x7f, 0xff, 0x4b, 0xb4, 0x0b, 0xac, 0xb8, 0xeb, 0xff, 0xff, - 0x4b, 0xb4, 0x0a, 0xac, 0xfa, 0xdf, 0xff, 0x5d, 0x8c, 0xb4, 0x0b, 0xac, 0xc9, 0x75, 0x55, 0x57, 0x2c, 0xb4, 0xea, 0xa3, 0xaa, 0xbe, 0xef, 0x77, 0x4c, 0xb4, 0xeb, 0xab, 0xe7, 0xfa, 0xff, 0x2d, - 0x6c, 0xbc, 0x0b, 0xac, 0xf5, 0xf5, 0xca, 0xae, 0xad, 0xbc, 0x0b, 0xac, 0x57, 0x7d, 0x7f, 0x58, 0x2b, 0xac, 0xea, 0xa3, 0xe3, 0x3a, 0x20, 0xf2, 0x6c, 0xb4, 0xeb, 0xa3, 0xff, 0xd7, 0x8b, 0xd5, - 0x2c, 0xb4, 0xeb, 0xa3, 0xff, 0xff, 0xe0, 0xa6, 0x2b, 0xb4, 0xca, 0xa3, 0xff, 0xff, 0xde, 0x82, 0x4b, 0xac, 0xaa, 0xa3, 0xff, 0xbd, 0xbc, 0xf8, 0x2b, 0xac, 0x47, 0x93, 0xaa, 0xaa, 0x88, 0x5f, - 0x0b, 0xac, 0x28, 0x93, 0x80, 0x2a, 0xac, 0xf5, 0x8d, 0xb4, 0x89, 0x9b, 0xeb, 0xa0, 0xbd, 0xfd, 0x4b, 0xb4, 0xca, 0xa3, 0xbf, 0x2a, 0xae, 0xd7, 0x8c, 0xb4, 0x68, 0x9b, 0x00, 0xa0, 0xfa, 0x7f, - 0x6c, 0xb4, 0x28, 0x93, 0xa0, 0xaa, 0xff, 0x75, 0x0b, 0xac, 0xe7, 0x8a, 0x00, 0x00, 0xfa, 0x55, 0x0a, 0xac, 0x86, 0x82, 0x00, 0x00, 0xea, 0x57, 0x2a, 0xb4, 0x86, 0x7a, 0xa0, 0xaa, 0x5f, 0x55, - 0xe9, 0xab, 0x25, 0x6a, 0x00, 0xa8, 0x55, 0xff, 0xea, 0xa3, 0x04, 0x6a, 0x80, 0x57, 0xf5, 0xaf, 0xc9, 0x9b, 0x47, 0x72, 0xa8, 0xd5, 0xf5, 0x2a, 0x2c, 0xac, 0x66, 0x72, 0xf5, 0xbd, 0xaa, 0xa2, - 0xea, 0xa3, 0xe7, 0x82, 0xab, 0x82, 0xe2, 0xd8, 0xca, 0xa3, 0x69, 0x93, 0xb6, 0xab, 0x29, 0x2f, 0xca, 0xa3, 0x89, 0x9b, 0x8f, 0xcf, 0xf7, 0x3e, 0x50, 0xcd, 0x69, 0x9b, 0xd7, 0xfd, 0xff, 0x3f, - 0x8e, 0xbc, 0x86, 0x9b, 0xf8, 0xaf, 0xaa, 0x5a, 0x2c, 0xb4, 0xca, 0xa3, 0x6b, 0x1e, 0xbe, 0x9f, 0x8d, 0xb4, 0xea, 0xa3, 0xfd, 0x3e, 0xae, 0x4a, 0x6c, 0xb4, 0xc2, 0x61, 0x00, 0x00, 0xa0, 0x5e, - 0xca, 0xc4, 0xe4, 0x61, 0xa8, 0x7a, 0x57, 0xff, 0x87, 0x72, 0x63, 0x59, 0xf6, 0xfe, 0xaa, 0x80, 0x29, 0x83, 0x64, 0x59, 0xd5, 0xbf, 0x2b, 0x02, 0x8a, 0x93, 0xe6, 0x59, 0xad, 0xab, 0x02, 0x00, - 0xaa, 0x9b, 0x08, 0x83, 0xd5, 0x2f, 0xa2, 0xa8, 0xaa, 0x9b, 0x29, 0x8b, 0x5f, 0x68, 0xff, 0x2f, 0xca, 0x9b, 0x49, 0x8b, 0xff, 0x35, 0x0d, 0xa8, 0xeb, 0x9b, 0x8a, 0x93, 0x7f, 0x38, 0x77, 0xa2, - 0xeb, 0xa3, 0x29, 0x8b, 0x7a, 0xdc, 0xae, 0xaa, 0x0b, 0xa4, 0x09, 0x83, 0x5f, 0xff, 0xaa, 0x2a, 0x0b, 0xac, 0x09, 0x8b, 0xf5, 0xaa, 0xaa, 0x00, 0xeb, 0xa3, 0x47, 0x8b, 0xbb, 0xa8, 0x22, 0x78, - 0xeb, 0xa3, 0xa6, 0x82, 0xaa, 0x00, 0x80, 0x5f, 0x0b, 0xa4, 0xc7, 0x7a, 0xa0, 0x00, 0xaa, 0x55, 0xeb, 0xa3, 0x87, 0x72, 0x02, 0x02, 0xa8, 0x55, 0xeb, 0xa3, 0x87, 0x72, 0x00, 0x00, 0xea, 0x55, - 0x0a, 0xac, 0x67, 0x72, 0xaa, 0x02, 0xfe, 0x55, 0xca, 0x9b, 0x67, 0x72, 0x80, 0x00, 0xff, 0x5d, 0x2b, 0xac, 0x66, 0x6a, 0x22, 0x00, 0xff, 0x55, 0x8c, 0xbc, 0x45, 0x72, 0x0a, 0xaa, 0xff, 0x55, - 0x8c, 0xb4, 0x45, 0x6a, 0xa0, 0xba, 0xab, 0x55, 0x0b, 0xa4, 0x45, 0x72, 0x2a, 0xa0, 0x00, 0x55, 0x6c, 0xac, 0x25, 0x72, 0x8a, 0xfe, 0xa8, 0x55, 0x0c, 0xa4, 0xa6, 0x7a, 0xab, 0x02, 0xab, 0xad, - 0x0b, 0xa4, 0x2a, 0x8b, 0xd5, 0x8a, 0xfe, 0xfb, 0xeb, 0x9b, 0x08, 0x8b, 0xea, 0xea, 0x77, 0x22, 0xeb, 0x9b, 0x29, 0x8b, 0xaf, 0x8a, 0x7e, 0x8a, 0xab, 0x9b, 0x25, 0x6a, 0xbb, 0xbe, 0xaa, 0x04, - 0xcb, 0x9b, 0x86, 0x7a, 0xd6, 0x2b, 0xfb, 0x02, 0x0c, 0x9c, 0x08, 0x83, 0xff, 0x7f, 0xbf, 0x8a, 0x8a, 0x93, 0xc7, 0x7a, 0xba, 0x77, 0x2a, 0x08, 0xab, 0x93, 0xc7, 0x7a, 0x7e, 0x7d, 0x82, 0x88, - 0x69, 0x8b, 0x66, 0x6a, 0x89, 0x08, 0xa9, 0xa2, 0xeb, 0x9b, 0x05, 0x6a, 0x3e, 0xaa, 0x7a, 0x7f, 0x28, 0x83, 0xc5, 0x59, 0x28, 0xe8, 0xd6, 0x0b, 0x6a, 0x8b, 0xe5, 0x59, 0x7a, 0xbf, 0xab, 0x0a, - 0xea, 0x9b, 0x06, 0x62, 0xad, 0xbf, 0xaa, 0x8a, 0x69, 0x93, 0xc7, 0x7a, 0xba, 0x8b, 0xc9, 0xe0, 0x48, 0x8b, 0x46, 0x6a, 0xf2, 0xa0, 0x1c, 0xc0, 0x48, 0x8b, 0x46, 0x72, 0xab, 0xfa, 0x8f, 0x2d, - 0x89, 0x93, 0x87, 0x7a, 0xdf, 0xbf, 0xad, 0x02, 0xaa, 0x93, 0xa7, 0x7a, 0xd7, 0xff, 0xaf, 0x00, 0xea, 0x9b, 0x66, 0x72, 0xae, 0xbf, 0x4a, 0x62, 0x0b, 0xa4, 0xc7, 0x7a, 0xa1, 0xa9, 0x82, 0xa3, - 0xeb, 0x9b, 0x28, 0x8b, 0xd5, 0xa0, 0xba, 0xea, 0xea, 0xa3, 0x69, 0x93, 0xc7, 0xf9, 0x00, 0xd9, 0xea, 0xa3, 0x69, 0x93, 0x89, 0xa3, 0x2a, 0xda, 0xca, 0xa3, 0x69, 0x8b, 0xac, 0xba, 0x2c, 0xbd, - 0x0a, 0xa4, 0x48, 0x8b, 0x7a, 0xbe, 0x2a, 0x6a, 0xeb, 0x9b, 0x48, 0x93, 0x2e, 0x82, 0x82, 0x7a, 0xa9, 0x9b, 0x23, 0x49, 0x7c, 0x7c, 0x7e, 0x5f, 0x84, 0x59, 0x22, 0x49, 0xad, 0xad, 0x8d, 0x02, - 0x67, 0x72, 0x83, 0x51, 0xd5, 0xf5, 0xb5, 0x0f, 0x08, 0x83, 0x46, 0x6a, 0xbf, 0x0b, 0xb5, 0xab, 0x49, 0x8b, 0xa7, 0x7a, 0x0a, 0x02, 0x7d, 0xbf, 0x89, 0x93, 0x08, 0x83, 0xbf, 0xbf, 0x95, 0x8a, - 0xa9, 0x93, 0x08, 0x8b, 0x32, 0x2a, 0xb3, 0x5e, 0x4b, 0xac, 0x08, 0x8b, 0x8a, 0xf8, 0x57, 0xfd, 0xaa, 0x9b, 0x49, 0x93, 0x2a, 0x5f, 0x8f, 0x0a, 0xeb, 0xa3, 0x89, 0x9b, 0x02, 0x75, 0xed, 0x57, - 0xea, 0xab, 0x89, 0x9b, 0xa8, 0x5f, 0xf7, 0xd7, 0xca, 0xa3, 0x69, 0x9b, 0x8a, 0xef, 0xe8, 0xf7, 0xea, 0xa3, 0x89, 0x9b, 0x2e, 0xab, 0x89, 0x0b, 0x0b, 0xac, 0x89, 0xa3, 0x9f, 0x0a, 0x0c, 0x00, - 0x4b, 0xb4, 0xca, 0xab, 0x74, 0xae, 0xa3, 0xbb, 0xcd, 0xc4, 0xea, 0xab, 0xdd, 0x3f, 0x2d, 0xad, 0x4f, 0xd5, 0x22, 0x49, 0x02, 0x00, 0xc0, 0x48, 0xc5, 0x49, 0x24, 0x39, 0x7a, 0xff, 0xbe, 0x82, - 0xc6, 0x49, 0x04, 0x39, 0xd7, 0x7f, 0x02, 0x88, 0xc6, 0x49, 0xc4, 0x20, 0x57, 0xaf, 0x88, 0x00, 0xe6, 0x49, 0x04, 0x21, 0xbd, 0xaa, 0xe2, 0x00, 0xa6, 0x41, 0x45, 0x31, 0xab, 0xf8, 0xfe, 0x8a, - 0xa5, 0x39, 0x04, 0x31, 0xe8, 0xfe, 0x5f, 0x7f, 0x45, 0x31, 0xc3, 0x28, 0xa0, 0xaa, 0x82, 0x9a, 0x64, 0x41, 0xe3, 0x28, 0xd5, 0xf5, 0x37, 0x77, 0x86, 0x41, 0xe3, 0x28, 0x5f, 0x5f, 0xae, 0x01, - 0xa7, 0x41, 0x03, 0x29, 0x7d, 0xd7, 0xfe, 0xe0, 0x86, 0x39, 0xc3, 0x20, 0xff, 0xdf, 0xfe, 0x02, 0xa6, 0x39, 0xe4, 0x28, 0xfd, 0xf5, 0xef, 0x0b, 0x07, 0x4a, 0xe3, 0x28, 0x55, 0xf5, 0xaf, 0xa2, - 0x89, 0x5a, 0x03, 0x29, 0xf5, 0xff, 0xae, 0x8a, 0x68, 0x5a, 0x45, 0x31, 0x5d, 0xff, 0x8a, 0xaa, 0xc6, 0x49, 0x65, 0x29, 0x5f, 0xfe, 0xaa, 0xf2, 0x85, 0x39, 0x24, 0x29, 0xf7, 0x7a, 0x62, 0xfe, - 0x86, 0x39, 0xe3, 0x20, 0xff, 0x5f, 0xbf, 0x88, 0x65, 0x39, 0xe3, 0x30, 0xff, 0xfd, 0xdf, 0xca, 0x07, 0x4a, 0x04, 0x39, 0xad, 0xb5, 0x55, 0xe2, 0x06, 0x4a, 0x25, 0x39, 0x5e, 0xde, 0x7b, 0x29, - 0xad, 0xbc, 0x4b, 0xb4, 0x2b, 0xb3, 0x38, 0x7f, 0xce, 0xbc, 0x4c, 0xb4, 0xff, 0x3b, 0x0b, 0xe9, 0x0f, 0xc5, 0x4b, 0xb4, 0xff, 0xaa, 0x23, 0xfd, 0xee, 0xc4, 0x4c, 0xb4, 0xf5, 0xba, 0x82, 0x7f, - 0x4e, 0xc5, 0x6d, 0xb4, 0x55, 0x7f, 0xfd, 0x89, 0x2e, 0xcd, 0x4c, 0xac, 0x5f, 0x7f, 0xf6, 0x78, 0x8d, 0xbc, 0x2c, 0xac, 0xeb, 0x62, 0xf8, 0x2d, 0xae, 0xbc, 0x0b, 0xac, 0xff, 0x2e, 0x5d, 0x87, - 0x6c, 0xb4, 0xeb, 0x9b, 0xba, 0x58, 0x3b, 0xab, 0x6c, 0xb4, 0xea, 0xa3, 0x3a, 0x5f, 0x77, 0x57, 0x4c, 0xb4, 0xeb, 0xa3, 0xff, 0xff, 0x3b, 0xad, 0x6c, 0xbc, 0xea, 0xab, 0xbd, 0xcb, 0xfa, 0x57, - 0x4c, 0xb4, 0x68, 0x9b, 0x20, 0x2a, 0xfc, 0x7a, 0x2b, 0xb4, 0x89, 0x9b, 0xa8, 0x08, 0x57, 0x55, 0x2b, 0xb4, 0x28, 0x8b, 0x00, 0x80, 0x5f, 0xff, 0xac, 0xbc, 0x08, 0x8b, 0x00, 0xdf, 0xd5, 0xff, - 0x8b, 0xbc, 0x49, 0x93, 0xe0, 0x55, 0x57, 0xff, 0xca, 0x9b, 0x28, 0x8b, 0x7a, 0xf7, 0xaa, 0x20, 0xca, 0x9b, 0x28, 0x8b, 0xff, 0x7f, 0xaa, 0x00, 0x0b, 0xa4, 0x28, 0x8b, 0x57, 0xf5, 0xab, 0x00, - 0x4c, 0xac, 0x29, 0x8b, 0xfd, 0xaf, 0xaa, 0x08, 0x6c, 0xb4, 0xab, 0x9b, 0xd9, 0xbb, 0x0a, 0x22, 0xce, 0xbc, 0xcb, 0xa3, 0x55, 0xfe, 0xbe, 0xe2, 0x6c, 0xb4, 0xaa, 0x9b, 0x57, 0x37, 0xfe, 0xfa, - 0x0b, 0xa4, 0x69, 0x9b, 0x7f, 0xfe, 0xff, 0x22, 0x0b, 0xa4, 0x48, 0x93, 0x55, 0xef, 0xaa, 0x82, 0xeb, 0xa3, 0x29, 0x8b, 0x55, 0xfa, 0xaa, 0x00, 0xca, 0xa3, 0x08, 0x83, 0x55, 0xfa, 0xaa, 0x00, - 0x0b, 0xa4, 0xe9, 0x82, 0xd5, 0xab, 0x2a, 0x80, 0x0b, 0xa4, 0x4a, 0x93, 0xd7, 0xb8, 0xab, 0x2a, 0x2b, 0xac, 0x8a, 0x9b, 0x5d, 0xab, 0x8a, 0x6a, 0x2b, 0xac, 0x49, 0x93, 0xab, 0x72, 0xde, 0xd5, - 0x0b, 0xac, 0xc8, 0x7a, 0xb7, 0x2f, 0x8a, 0x82, 0x6b, 0xb4, 0x49, 0x93, 0xff, 0xf8, 0xb5, 0xab, 0x0b, 0xac, 0xaa, 0xa3, 0xa7, 0x2a, 0x68, 0x7c, 0x6d, 0xb4, 0xaa, 0xa3, 0x8b, 0xfe, 0x5f, 0xf5, - 0x4c, 0xb4, 0x25, 0x6a, 0x40, 0xa2, 0x02, 0x02, 0x0b, 0xa4, 0x44, 0x49, 0x2d, 0x0a, 0x00, 0x00, 0x0b, 0xa4, 0x69, 0x9b, 0x7e, 0xeb, 0xef, 0xf3, 0xca, 0x9b, 0x66, 0x72, 0x36, 0xaa, 0xa8, 0x00, - 0xaa, 0x9b, 0xa7, 0x7a, 0x56, 0xff, 0xa8, 0x80, 0xca, 0x9b, 0xe8, 0x82, 0xb5, 0xab, 0xa2, 0x02, 0xca, 0x9b, 0xe8, 0x82, 0xfd, 0x09, 0x02, 0x80, 0xca, 0x9b, 0x69, 0x93, 0xf5, 0xa2, 0x38, 0x7f, - 0xeb, 0xa3, 0x86, 0x7a, 0xaa, 0x00, 0x8a, 0x5e, 0x0a, 0xa4, 0x66, 0x72, 0x02, 0x00, 0xfa, 0x55, 0xaa, 0x9b, 0x46, 0x72, 0x00, 0x80, 0x5f, 0x55, 0x0a, 0xa4, 0x46, 0x6a, 0x80, 0xab, 0x55, 0x55, - 0x0a, 0xa4, 0x46, 0x6a, 0x00, 0xea, 0x55, 0x55, 0x2b, 0xac, 0x46, 0x6a, 0x80, 0x5f, 0x55, 0x55, 0x48, 0x9b, 0x47, 0x6a, 0xf8, 0x5d, 0x55, 0x55, 0xa7, 0x72, 0x46, 0x6a, 0xad, 0xfe, 0xff, 0xbe, - 0x88, 0x6a, 0x46, 0x62, 0x8b, 0x24, 0x82, 0xa0, 0x88, 0x6a, 0x46, 0x62, 0x02, 0xb0, 0x2e, 0x0a, 0xa8, 0x72, 0x67, 0x6a, 0xee, 0xaf, 0xae, 0x7d, 0x88, 0x72, 0x67, 0x6a, 0x88, 0x07, 0xfd, 0xd5, - 0x88, 0x72, 0x67, 0x6a, 0xbb, 0x50, 0x75, 0xfa, 0xa8, 0x72, 0x27, 0x62, 0xea, 0xab, 0xf5, 0x02, 0xa8, 0x6a, 0xe5, 0x59, 0x68, 0x56, 0xaa, 0xa0, 0x68, 0x6a, 0x84, 0x51, 0xf5, 0xab, 0x00, 0x00, - 0x47, 0x6a, 0xc6, 0x59, 0xab, 0x22, 0x5e, 0x28, 0x87, 0x6a, 0x06, 0x5a, 0xfb, 0x7f, 0xff, 0xf3, 0x68, 0x6a, 0x06, 0x62, 0xbe, 0xfd, 0x20, 0x0a, 0x66, 0x7a, 0x47, 0x62, 0x23, 0xff, 0x7f, 0xfd, - 0x27, 0x93, 0x46, 0x62, 0x0b, 0x55, 0x55, 0x57, 0x68, 0x9b, 0x26, 0x62, 0x00, 0xf5, 0x55, 0x55, 0x89, 0x9b, 0x26, 0x62, 0x00, 0xaa, 0x55, 0x55, 0x4b, 0xac, 0x26, 0x62, 0x2e, 0x0b, 0x55, 0x55, - 0x4b, 0xac, 0x26, 0x62, 0x00, 0x80, 0x55, 0x55, 0x0b, 0xa4, 0x05, 0x62, 0x00, 0x00, 0xff, 0x57, 0x0b, 0xa4, 0xe4, 0x61, 0x00, 0x00, 0x5f, 0x55, 0x0a, 0xa4, 0xc4, 0x59, 0xaa, 0xa0, 0x55, 0xaf, - 0xc9, 0x93, 0xe5, 0x61, 0xa0, 0x57, 0xaf, 0xaa, 0x69, 0x93, 0xe8, 0x82, 0xdd, 0x3d, 0x2b, 0x8d, 0xaa, 0x9b, 0xe8, 0x82, 0xfd, 0x0a, 0xaa, 0x0b, 0xa9, 0x9b, 0x28, 0x8b, 0xff, 0x7f, 0xb2, 0x5f, - 0xeb, 0x9b, 0xe8, 0x82, 0xef, 0x8c, 0xea, 0x7e, 0xaa, 0x93, 0xe8, 0x82, 0x7b, 0x20, 0x0b, 0xca, 0xaa, 0x93, 0x24, 0x62, 0xaa, 0x9f, 0xaf, 0xe0, 0xca, 0x9b, 0x08, 0x83, 0xa3, 0x3f, 0xff, 0xdf, - 0xaa, 0x93, 0xc7, 0x7a, 0x82, 0xf2, 0x55, 0xba, 0xa9, 0x9b, 0xa7, 0x7a, 0x22, 0x7a, 0xfe, 0x2a, 0xeb, 0x9b, 0x05, 0x62, 0xfe, 0xad, 0xa2, 0x02, 0xca, 0x9b, 0xc7, 0x7a, 0x22, 0xaa, 0xb0, 0x6a, - 0x2b, 0xac, 0x48, 0x8b, 0xff, 0xf3, 0xfd, 0xfd, 0xca, 0xa3, 0x29, 0x8b, 0xb6, 0xa0, 0xe3, 0xb2, 0xeb, 0xa3, 0x29, 0x8b, 0x82, 0x5e, 0xff, 0xea, 0xca, 0x9b, 0xc8, 0x7a, 0xac, 0xff, 0x0a, 0x10, - 0xaa, 0x9b, 0x49, 0x8b, 0x97, 0x55, 0xf3, 0x80, 0xa9, 0x9b, 0xc7, 0x82, 0xa0, 0xa0, 0xa8, 0x68, 0x04, 0x6a, 0x23, 0x49, 0x68, 0x78, 0xea, 0x68, 0xa4, 0x59, 0x23, 0x49, 0x02, 0xa9, 0xab, 0xeb, - 0x86, 0x72, 0x84, 0x51, 0x0a, 0x2f, 0x2d, 0x0d, 0xe8, 0x82, 0x66, 0x72, 0x8a, 0xbf, 0x2d, 0x9f, 0x89, 0x93, 0xe8, 0x82, 0xfd, 0xb5, 0x7d, 0x3d, 0xaa, 0x93, 0x08, 0x83, 0xbf, 0x3d, 0x89, 0x70, - 0xca, 0x9b, 0xe9, 0x82, 0xef, 0xdf, 0x2b, 0xaa, 0xea, 0xa3, 0x49, 0x8b, 0xd5, 0xdf, 0x2a, 0xfb, 0xeb, 0xa3, 0x89, 0x93, 0x5f, 0xbf, 0xb8, 0xb5, 0x0b, 0xa4, 0x69, 0x93, 0x57, 0x0a, 0xae, 0xfe, - 0x0b, 0xac, 0xa9, 0x9b, 0xbd, 0xa8, 0xbf, 0xdf, 0x0b, 0xa4, 0x89, 0x9b, 0xae, 0x0a, 0xea, 0xf5, 0xeb, 0xa3, 0x89, 0x9b, 0x02, 0xa0, 0x9f, 0x9f, 0x2b, 0xac, 0xaa, 0xa3, 0x82, 0xba, 0xfe, 0x77, - 0x2b, 0xb4, 0xca, 0xa3, 0xa0, 0xea, 0xd5, 0xad, 0xce, 0xcc, 0xea, 0xab, 0xad, 0x2d, 0x2d, 0xaf, 0x30, 0xd5, 0x63, 0x41, 0x60, 0x70, 0x58, 0x54, 0xe6, 0x49, 0x44, 0x39, 0x0b, 0xae, 0xb6, 0xff, - 0xe7, 0x49, 0x24, 0x39, 0x80, 0xaa, 0xf7, 0xa2, 0xc6, 0x49, 0x65, 0x39, 0x0a, 0xd6, 0x4d, 0xf6, 0xa6, 0x49, 0x65, 0x39, 0x00, 0x5b, 0x6f, 0xbf, 0xa6, 0x41, 0x45, 0x31, 0x78, 0xa2, 0xc3, 0x7f, - 0xe6, 0x41, 0x24, 0x29, 0x5e, 0xbf, 0xf7, 0x3f, 0xa5, 0x39, 0xe4, 0x28, 0xdf, 0x5a, 0xae, 0xa0, 0xc7, 0x49, 0x03, 0x29, 0xa5, 0xad, 0x0d, 0x0a, 0x48, 0x5a, 0x65, 0x39, 0xdd, 0xff, 0xeb, 0x02, - 0xa9, 0x6a, 0xc6, 0x41, 0x5d, 0xd7, 0xcb, 0xee, 0xa9, 0x62, 0x85, 0x41, 0xeb, 0x72, 0x55, 0x57, 0x07, 0x4a, 0x85, 0x39, 0xf7, 0x25, 0x07, 0xbb, 0x89, 0x5a, 0xa5, 0x41, 0x95, 0xbd, 0xab, 0x8f, - 0xe8, 0x6a, 0xc7, 0x49, 0xaa, 0xe7, 0xf2, 0x3e, 0xa8, 0x62, 0xa6, 0x49, 0xbe, 0x62, 0xfa, 0xe0, 0xc9, 0x62, 0x65, 0x39, 0x7f, 0xff, 0xeb, 0x8b, 0xe7, 0x49, 0x44, 0x31, 0xf8, 0x5a, 0xde, 0xf7, - 0xc9, 0x72, 0x86, 0x39, 0x55, 0x57, 0x0d, 0x7d, 0xaa, 0x83, 0x25, 0x31, 0x95, 0xfd, 0x20, 0xfd, 0x6b, 0x7b, 0x45, 0x39, 0x70, 0x5f, 0xb8, 0xff, 0xa9, 0x62, 0x44, 0x39, 0xff, 0xff, 0x58, 0xac, - 0x6c, 0xbc, 0x0b, 0xac, 0xaa, 0xe3, 0xfd, 0xff, 0x4c, 0xb4, 0x0b, 0xac, 0x02, 0xab, 0xef, 0x75, 0x6c, 0xbc, 0x0b, 0xac, 0xe8, 0xba, 0xff, 0xdf, 0xad, 0xbc, 0xea, 0xab, 0x1e, 0xfa, 0x5f, 0x7f, - 0xcd, 0xbc, 0x27, 0x93, 0x80, 0xab, 0xba, 0x5e, 0x4b, 0xb4, 0x08, 0x8b, 0x0a, 0xa0, 0xaa, 0xad, 0x4c, 0xb4, 0xeb, 0xa3, 0x42, 0xa7, 0x25, 0x3f, 0x2b, 0xac, 0xca, 0x9b, 0xa2, 0x82, 0x7d, 0x00, - 0x4b, 0xb4, 0x89, 0x9b, 0xfa, 0x6a, 0x2a, 0x4a, 0xeb, 0xa3, 0x46, 0x72, 0x08, 0x02, 0x2e, 0x25, 0x4c, 0xac, 0xea, 0xa3, 0xfd, 0x37, 0xfd, 0x5d, 0x4c, 0xbc, 0xaa, 0x9b, 0x0a, 0x6a, 0xff, 0xfd, - 0x2c, 0xb4, 0x89, 0x93, 0xf6, 0xf5, 0xeb, 0x82, 0x0b, 0xac, 0x6a, 0x93, 0xbe, 0xa5, 0xa2, 0x00, 0x0b, 0xa4, 0xaa, 0x9b, 0xfd, 0x0a, 0x82, 0x80, 0x2c, 0xac, 0xaa, 0x9b, 0x7f, 0xbe, 0x8b, 0x3e, - 0xcd, 0xbc, 0xca, 0x9b, 0x55, 0x4b, 0xff, 0xff, 0x4c, 0xb4, 0xcb, 0x9b, 0x5e, 0xaf, 0xbb, 0x8f, 0x6c, 0xb4, 0xea, 0xa3, 0x7d, 0xbc, 0xff, 0x77, 0x4c, 0xb4, 0xea, 0xa3, 0xbd, 0xda, 0xd7, 0x0b, - 0xae, 0xbc, 0x0b, 0xac, 0xcf, 0xad, 0x6f, 0x78, 0xcd, 0xc4, 0x49, 0x93, 0x6a, 0xfc, 0xff, 0xaa, 0x4c, 0xb4, 0xaa, 0x9b, 0xa9, 0xaf, 0xbb, 0x82, 0x4c, 0xb4, 0xeb, 0xa3, 0x78, 0xcb, 0xb5, 0xfb, - 0x2b, 0xac, 0xca, 0xa3, 0xaa, 0xc2, 0xea, 0x5f, 0x0b, 0xac, 0xca, 0xa3, 0xac, 0x77, 0xf5, 0x75, 0x2b, 0xac, 0xaa, 0x9b, 0x6b, 0x7b, 0xf7, 0xa2, 0x0b, 0xac, 0xaa, 0x9b, 0x2d, 0xab, 0xef, 0xbf, - 0x2c, 0xac, 0x69, 0x93, 0xde, 0x20, 0xe8, 0xaa, 0xeb, 0xa3, 0x89, 0x9b, 0xa8, 0x6e, 0x75, 0xd7, 0x2b, 0xa4, 0x49, 0x93, 0xd6, 0xbd, 0xab, 0x82, 0x2c, 0xac, 0xca, 0x9b, 0x75, 0xe1, 0x5f, 0x8f, - 0xeb, 0xa3, 0xca, 0x9b, 0xf7, 0x28, 0xa1, 0x82, 0x2b, 0xac, 0x89, 0x93, 0xaa, 0xe8, 0x62, 0xbc, 0x6c, 0xac, 0x8a, 0x9b, 0xff, 0xfd, 0xbd, 0xe8, 0x2c, 0xac, 0x47, 0x8b, 0xaa, 0x2a, 0x2a, 0x7a, - 0xad, 0xbc, 0xa6, 0x7a, 0x8a, 0xaa, 0xfa, 0x55, 0xea, 0xa3, 0x66, 0x72, 0x20, 0x00, 0xfa, 0x55, 0xca, 0xa3, 0x66, 0x72, 0x00, 0x00, 0xff, 0x55, 0xe9, 0xa3, 0x26, 0x6a, 0xa0, 0xfa, 0x57, 0x55, - 0xa9, 0x9b, 0x46, 0x6a, 0x08, 0xfa, 0xd5, 0xd5, 0xa9, 0x9b, 0x26, 0x6a, 0x08, 0x7f, 0xd7, 0x55, 0x48, 0x8b, 0x46, 0x6a, 0xa0, 0xf7, 0xd5, 0x5d, 0x87, 0x7a, 0x26, 0x62, 0x00, 0xae, 0xad, 0xab, - 0x87, 0x72, 0x26, 0x6a, 0xee, 0xea, 0x5f, 0x00, 0x87, 0x72, 0x46, 0x6a, 0xf7, 0xd6, 0xfd, 0x68, 0x88, 0x72, 0x47, 0x6a, 0x7a, 0xaf, 0xaa, 0xeb, 0x88, 0x72, 0x27, 0x62, 0xfa, 0xba, 0xff, 0xaa, - 0x88, 0x72, 0x46, 0x62, 0xab, 0x78, 0xaa, 0xfa, 0x88, 0x72, 0x47, 0x6a, 0xc2, 0xf5, 0xaa, 0x88, 0xa8, 0x72, 0x47, 0x6a, 0xa7, 0x8a, 0xf7, 0xfb, 0xa8, 0x72, 0x47, 0x6a, 0x27, 0xde, 0xb7, 0x29, - 0xa9, 0x72, 0x48, 0x6a, 0xaa, 0xdf, 0xaa, 0x08, 0xc9, 0x72, 0x88, 0x6a, 0x5f, 0xb5, 0x0a, 0x8a, 0xc9, 0x72, 0x68, 0x6a, 0xbd, 0x22, 0x2a, 0xd8, 0xe9, 0x72, 0x88, 0x6a, 0xb3, 0xbb, 0xfe, 0xbf, - 0xe9, 0x72, 0x07, 0x62, 0xaa, 0xaa, 0x5e, 0x00, 0x0b, 0x7b, 0x68, 0x62, 0xfe, 0xf7, 0xf5, 0x3e, 0xec, 0x93, 0x07, 0x5a, 0xff, 0x5f, 0xff, 0x80, 0xe9, 0x72, 0x44, 0x41, 0xaa, 0xab, 0x00, 0x5e, - 0xc8, 0x72, 0x24, 0x31, 0xaa, 0x00, 0xe0, 0x55, 0x88, 0x6a, 0x04, 0x29, 0x00, 0x80, 0xaf, 0xf5, 0xa8, 0x72, 0x86, 0x41, 0x02, 0xaa, 0xaa, 0xf5, 0x88, 0x6a, 0xe6, 0x59, 0xa8, 0xef, 0xa8, 0xad, - 0x88, 0x6a, 0xe6, 0x59, 0xaa, 0x7f, 0x57, 0x28, 0x47, 0x62, 0xc6, 0x59, 0x02, 0x37, 0xfe, 0xa8, 0x47, 0x6a, 0xe6, 0x61, 0xb5, 0xaa, 0xab, 0x2a, 0x47, 0x6a, 0xe5, 0x59, 0xe2, 0xde, 0xfa, 0xfb, - 0x26, 0x62, 0xc5, 0x59, 0xd8, 0x2a, 0x70, 0xc0, 0x26, 0x62, 0xc5, 0x59, 0xa2, 0xea, 0xdb, 0xef, 0x26, 0x62, 0xc5, 0x59, 0x2e, 0xaf, 0xbd, 0x83, 0x46, 0x6a, 0xe5, 0x59, 0x2e, 0xfb, 0xbf, 0x55, - 0xc7, 0x82, 0xe5, 0x61, 0x02, 0xbf, 0x75, 0x55, 0x28, 0x8b, 0x04, 0x62, 0x02, 0x0a, 0xf5, 0x55, 0x69, 0x93, 0x06, 0x62, 0x00, 0x02, 0x8a, 0xd5, 0x89, 0x93, 0x24, 0x72, 0x20, 0x00, 0x08, 0xfd, - 0xcb, 0x9b, 0xa6, 0x7a, 0xaa, 0xa0, 0xea, 0xf5, 0x89, 0x93, 0xa7, 0x7a, 0x00, 0x60, 0x2a, 0x0a, 0x8a, 0x93, 0xa7, 0x7a, 0xa5, 0x2a, 0x00, 0xfe, 0xca, 0x9b, 0xe7, 0x82, 0xad, 0x02, 0xaa, 0xff, - 0xca, 0x9b, 0xe8, 0x82, 0x0a, 0xfb, 0x88, 0xbd, 0xca, 0x9b, 0x28, 0x8b, 0xaf, 0xe9, 0x0a, 0xb7, 0x0b, 0xa4, 0x28, 0x8b, 0x97, 0xef, 0x2a, 0xf3, 0xeb, 0xa3, 0xc7, 0x7a, 0x9b, 0xb9, 0xa0, 0xbb, - 0x2c, 0xac, 0x08, 0x8b, 0xef, 0xaf, 0xeb, 0x63, 0x2c, 0xa4, 0x85, 0x7a, 0xba, 0x02, 0x2a, 0x55, 0xea, 0xa3, 0xe4, 0x69, 0x00, 0x80, 0xe8, 0x55, 0xea, 0xa3, 0xc4, 0x61, 0x80, 0x20, 0x5f, 0x55, - 0xc9, 0x9b, 0xc4, 0x61, 0x20, 0x80, 0xdd, 0x55, 0xc9, 0x9b, 0xa3, 0x61, 0xc8, 0xc2, 0x5f, 0x55, 0xe4, 0x61, 0x23, 0x49, 0x78, 0x78, 0x7e, 0x77, 0xe4, 0x59, 0x23, 0x51, 0xff, 0xbd, 0xbb, 0x2b, - 0xe7, 0x82, 0xa4, 0x59, 0xaf, 0xb7, 0xab, 0x2a, 0x49, 0x8b, 0x46, 0x72, 0x2a, 0x2d, 0xaa, 0xaa, 0xaa, 0x9b, 0xc6, 0x7a, 0xaa, 0xbe, 0xbf, 0x01, 0xa9, 0x9b, 0x08, 0x83, 0xa2, 0xfa, 0x6b, 0x5e, - 0x0b, 0xa4, 0xe7, 0x82, 0xea, 0xff, 0x3d, 0x08, 0xa9, 0x9b, 0x08, 0x8b, 0xaa, 0x9e, 0xaa, 0x00, 0x0b, 0xac, 0x69, 0x93, 0x57, 0xdd, 0xa5, 0xa2, 0x0b, 0xb4, 0x49, 0x93, 0xff, 0x75, 0x80, 0xa2, - 0xeb, 0xab, 0x89, 0x9b, 0x77, 0xfd, 0xe8, 0x3a, 0x0b, 0xac, 0x89, 0x9b, 0xf7, 0xbf, 0xab, 0x0a, 0x4c, 0xb4, 0xa9, 0x9b, 0xf5, 0xab, 0xaa, 0xf8, 0x0b, 0xb4, 0xca, 0xa3, 0xb5, 0xe1, 0xeb, 0xef, - 0x2c, 0xb4, 0x89, 0xa3, 0xbe, 0x2b, 0x2d, 0x02, 0x2f, 0xd5, 0xc3, 0x59, 0x0a, 0x02, 0x8a, 0x4a, 0x4d, 0xbc, 0xe3, 0x28, 0x54, 0x5f, 0x55, 0x55, 0x85, 0x41, 0xc4, 0x20, 0xe0, 0xfc, 0xd7, 0xaa, - 0x45, 0x39, 0x04, 0x21, 0x22, 0x75, 0x5a, 0xba, 0x85, 0x41, 0xc4, 0x18, 0x8a, 0x5f, 0xf7, 0xaa, 0xa6, 0x41, 0xe3, 0x20, 0x55, 0x7d, 0x83, 0x02, 0xc6, 0x41, 0xc3, 0x20, 0xfd, 0x2f, 0xaa, 0x02, - 0x27, 0x5a, 0x65, 0x31, 0xd5, 0xb9, 0xaf, 0x02, 0x47, 0x5a, 0x45, 0x31, 0x55, 0xfa, 0xe2, 0xa8, 0x8e, 0x9c, 0x65, 0x41, 0xd5, 0x5d, 0x2d, 0x75, 0x8f, 0xa4, 0x24, 0x39, 0xff, 0xff, 0x80, 0xb5, - 0x4e, 0x9c, 0xe3, 0x30, 0xff, 0x0a, 0x5e, 0x7a, 0x4d, 0x9c, 0x23, 0x31, 0xff, 0x00, 0xb5, 0xff, 0x6d, 0x9c, 0x66, 0x39, 0xaa, 0x00, 0x56, 0xea, 0x2b, 0x94, 0xa7, 0x49, 0xaa, 0x00, 0xb5, 0xff, - 0xaa, 0x83, 0xc6, 0x41, 0x7a, 0x80, 0xff, 0x9d, 0xeb, 0x93, 0x28, 0x52, 0xe9, 0x00, 0x72, 0x6b, 0x6c, 0x7b, 0x44, 0x31, 0x70, 0xde, 0xa2, 0x0b, 0x6b, 0x83, 0xc6, 0x49, 0xf5, 0xff, 0x8b, 0xb4, - 0xcd, 0x93, 0xe5, 0x49, 0xff, 0x2a, 0xea, 0x54, 0x4b, 0x73, 0xe5, 0x49, 0x5f, 0x2c, 0x0e, 0x5b, 0xcc, 0x8b, 0x03, 0x29, 0xff, 0xfa, 0x80, 0x75, 0x2c, 0x94, 0xe3, 0x28, 0xab, 0xff, 0x0a, 0x7d, - 0x2b, 0xac, 0x8a, 0x9b, 0x88, 0x80, 0x95, 0xaa, 0x6b, 0xb4, 0x8a, 0xa3, 0xaa, 0x5a, 0x0e, 0xaa, 0x2b, 0xb4, 0xe7, 0x8a, 0x8a, 0x20, 0x60, 0xb6, 0x6c, 0xb4, 0x87, 0x7a, 0xc8, 0x5c, 0xbd, 0xaa, - 0x0b, 0xa4, 0xa7, 0x7a, 0xbd, 0xab, 0x02, 0x00, 0xad, 0xbc, 0xaa, 0x9b, 0xfd, 0xf2, 0xaf, 0xff, 0x8d, 0xbc, 0xeb, 0xab, 0xfd, 0xaa, 0xad, 0x47, 0xcd, 0xc4, 0x48, 0x93, 0xaa, 0xe0, 0x78, 0x7a, - 0x8b, 0xb4, 0x06, 0x6a, 0x60, 0xde, 0xff, 0xaa, 0xcb, 0x9b, 0x26, 0x6a, 0x2d, 0x8a, 0x02, 0x00, 0x2b, 0xac, 0xaa, 0x93, 0xe0, 0x75, 0xef, 0xaf, 0x4c, 0xac, 0xca, 0x9b, 0xf5, 0xf5, 0xb1, 0xbb, - 0x2c, 0xac, 0xea, 0xa3, 0xdb, 0xe7, 0xb5, 0x8f, 0x0c, 0xac, 0xea, 0x9b, 0x8b, 0xaa, 0xf8, 0xff, 0xad, 0xb4, 0xca, 0x9b, 0xff, 0xfc, 0x2f, 0x5f, 0xae, 0xb4, 0x0b, 0xa4, 0x8d, 0xe4, 0x55, 0x57, - 0x4c, 0xac, 0xca, 0xa3, 0xb8, 0xa2, 0x7f, 0xaf, 0x4c, 0xb4, 0xea, 0x9b, 0xfe, 0x7e, 0x57, 0x83, 0xae, 0xb4, 0xeb, 0xa3, 0x3d, 0xfd, 0x7d, 0x77, 0x2f, 0xc5, 0xeb, 0xa3, 0xbe, 0xf3, 0x75, 0xfd, - 0xcd, 0xbc, 0x0b, 0xac, 0xff, 0xd5, 0xf8, 0xbf, 0xcc, 0xbc, 0x0b, 0xa4, 0xb7, 0xcb, 0xff, 0xe0, 0x6c, 0xb4, 0xa4, 0x82, 0x80, 0x2a, 0x00, 0x7e, 0x4b, 0xac, 0x04, 0x6a, 0x00, 0x00, 0x00, 0x55, - 0x8c, 0xb4, 0x05, 0x6a, 0x00, 0xaa, 0xfa, 0x55, 0x0a, 0xac, 0x04, 0x62, 0x00, 0x20, 0xff, 0x55, 0x2a, 0xac, 0xe4, 0x61, 0x00, 0xa8, 0x57, 0x55, 0x2a, 0xac, 0xe4, 0x61, 0x00, 0xea, 0x75, 0x55, - 0x0a, 0xa4, 0x05, 0x6a, 0x00, 0xff, 0x55, 0x55, 0xca, 0xa3, 0x45, 0x6a, 0x20, 0xbf, 0xd5, 0x55, 0x2b, 0xac, 0x25, 0x6a, 0x00, 0xaa, 0x57, 0x55, 0xea, 0xa3, 0xe5, 0x59, 0x00, 0xba, 0xff, 0xf5, - 0xe9, 0xa3, 0x46, 0x6a, 0x80, 0xff, 0x55, 0x55, 0x88, 0x93, 0x47, 0x6a, 0x00, 0xf5, 0x55, 0x5d, 0x48, 0x93, 0x46, 0x6a, 0x78, 0xff, 0x55, 0x55, 0xe7, 0x82, 0x46, 0x6a, 0xa2, 0x7f, 0x57, 0xfd, - 0xc7, 0x7a, 0x27, 0x6a, 0xa0, 0xff, 0xff, 0xd7, 0xc8, 0x72, 0x27, 0x6a, 0x7f, 0xef, 0xbd, 0xa8, 0xe8, 0x72, 0x47, 0x6a, 0x55, 0xea, 0xef, 0xf8, 0xa9, 0x72, 0xe5, 0x61, 0xab, 0x0a, 0x7a, 0xef, - 0x47, 0x6a, 0x26, 0x62, 0x24, 0x0c, 0xcb, 0x20, 0x67, 0x72, 0x26, 0x62, 0x22, 0x03, 0xaf, 0x28, 0x88, 0x72, 0x26, 0x6a, 0x20, 0xaf, 0x26, 0xea, 0x67, 0x6a, 0x46, 0x62, 0x00, 0xa0, 0xf2, 0xac, - 0x88, 0x72, 0x46, 0x62, 0xef, 0xf9, 0xaf, 0xaa, 0x88, 0x72, 0x46, 0x6a, 0xde, 0x0b, 0xea, 0x7e, 0x88, 0x72, 0x46, 0x6a, 0x3d, 0xea, 0xd5, 0xdd, 0x88, 0x72, 0x47, 0x62, 0xfa, 0xbf, 0x8b, 0x2a, - 0xa8, 0x72, 0x47, 0x6a, 0xfb, 0xfa, 0x0b, 0xac, 0xc9, 0x72, 0x67, 0x6a, 0xf5, 0xff, 0x8f, 0xbb, 0xe9, 0x72, 0x67, 0x6a, 0x5f, 0xfd, 0xbb, 0x0a, 0x0a, 0x7b, 0x88, 0x6a, 0xf5, 0xaf, 0xbf, 0x2a, - 0x0b, 0x7b, 0x88, 0x72, 0xf7, 0xfa, 0xf2, 0xa2, 0xaf, 0xac, 0xc9, 0x72, 0x55, 0x55, 0x55, 0x2d, 0x0f, 0xbd, 0x65, 0x49, 0xff, 0xff, 0x2b, 0x78, 0xce, 0xbc, 0x64, 0x41, 0xff, 0xaf, 0x78, 0x55, - 0xcd, 0xb4, 0x03, 0x31, 0x2b, 0xe0, 0x5d, 0x55, 0xce, 0xc4, 0x04, 0x31, 0xe0, 0x55, 0x55, 0x55, 0x64, 0x49, 0x03, 0x21, 0x7c, 0xff, 0xdf, 0xff, 0xe6, 0x41, 0x04, 0x29, 0x15, 0xff, 0x5f, 0xf5, - 0x07, 0x42, 0x25, 0x31, 0x40, 0x5a, 0xfd, 0xeb, 0xe7, 0x49, 0x24, 0x29, 0x35, 0xbd, 0xef, 0xab, 0xe7, 0x51, 0x44, 0x31, 0x02, 0xaa, 0xb5, 0xff, 0xe6, 0x51, 0x45, 0x39, 0x80, 0xe5, 0xea, 0x75, - 0x06, 0x52, 0xc3, 0x28, 0x3a, 0x96, 0xa7, 0xef, 0x68, 0x6a, 0x25, 0x39, 0x02, 0xb7, 0xfd, 0xff, 0x48, 0x62, 0x44, 0x29, 0x00, 0x00, 0xae, 0x7a, 0x88, 0x72, 0xe3, 0x30, 0x82, 0x00, 0xb5, 0xf5, - 0x47, 0x6a, 0xc6, 0x59, 0xea, 0x68, 0xfa, 0xa3, 0x25, 0x62, 0xe6, 0x59, 0xfb, 0xe8, 0x7f, 0x9a, 0x26, 0x62, 0xc5, 0x59, 0x2d, 0xdb, 0xff, 0x58, 0x26, 0x62, 0x85, 0x59, 0x00, 0xea, 0xfe, 0x7f, - 0x06, 0x62, 0xa4, 0x59, 0xf8, 0xfd, 0xdb, 0xb5, 0x25, 0x62, 0xa4, 0x59, 0x0a, 0xaf, 0xd7, 0x5f, 0x25, 0x62, 0xa4, 0x59, 0x20, 0xae, 0xbb, 0x7f, 0x46, 0x6a, 0xa5, 0x59, 0x2a, 0xdf, 0xfe, 0x3f, - 0x46, 0x6a, 0xe5, 0x59, 0xaa, 0xfb, 0x5d, 0x60, 0x46, 0x72, 0xe5, 0x59, 0x8f, 0x5f, 0xbb, 0xfd, 0xc6, 0x7a, 0x05, 0x62, 0x8b, 0xd5, 0xf9, 0x57, 0x89, 0x9b, 0x26, 0x62, 0x8a, 0xfd, 0xd5, 0x55, - 0x88, 0x93, 0x06, 0x62, 0x08, 0xfe, 0x55, 0x55, 0xea, 0x9b, 0x05, 0x62, 0x0a, 0x5d, 0x55, 0x55, 0x67, 0x93, 0xc5, 0x59, 0x20, 0xff, 0xfd, 0x77, 0x47, 0x93, 0xc5, 0x59, 0x80, 0xf7, 0x7d, 0x75, - 0xa6, 0x82, 0xe5, 0x59, 0xfc, 0xf7, 0x5d, 0x55, 0x25, 0x6a, 0x84, 0x51, 0x00, 0x28, 0xb9, 0xeb, 0x25, 0x6a, 0x63, 0x59, 0x8a, 0xaa, 0x7e, 0x7f, 0x04, 0x62, 0x63, 0x59, 0x00, 0xab, 0x7f, 0xff, - 0x05, 0x62, 0x63, 0x59, 0x08, 0xeb, 0xf5, 0xff, 0xe4, 0x61, 0x63, 0x59, 0xf2, 0xff, 0x77, 0x57, 0x83, 0x59, 0xe2, 0x48, 0xf0, 0xf8, 0x70, 0x60, 0xa6, 0x7a, 0x43, 0x51, 0xbd, 0xbd, 0x2d, 0xfd, - 0xa8, 0x9b, 0xe5, 0x61, 0xaf, 0xaa, 0xab, 0x2d, 0xea, 0xab, 0xe8, 0x82, 0xb5, 0xff, 0xff, 0xa2, 0xa9, 0xa3, 0x48, 0x93, 0x77, 0x5d, 0xab, 0x82, 0xc9, 0xa3, 0x48, 0x93, 0x95, 0x2f, 0x2b, 0x3f, - 0xca, 0xa3, 0x27, 0x93, 0xf0, 0xa0, 0xfe, 0x5e, 0xca, 0xa3, 0x64, 0x82, 0x00, 0xaa, 0xfb, 0xd7, 0xc9, 0xab, 0x64, 0x7a, 0x2a, 0xea, 0x80, 0x57, 0x4a, 0xb4, 0x66, 0x7a, 0x00, 0xb5, 0xff, 0x55, - 0x2a, 0xb4, 0xa6, 0x82, 0x02, 0xff, 0x7e, 0x55, 0xc9, 0xa3, 0x24, 0x7a, 0x00, 0xaa, 0xff, 0xfd, 0xc9, 0xab, 0x24, 0x72, 0xa8, 0xfa, 0xf5, 0xff, 0xea, 0xb3, 0xa5, 0x8a, 0x0b, 0xbf, 0xbd, 0xaf, - 0x2c, 0xbc, 0x88, 0xa3, 0x0a, 0x2d, 0x0d, 0xab, 0x6d, 0xc4, 0x24, 0x39, 0x70, 0x58, 0x7e, 0xf8, 0x27, 0x52, 0x24, 0x31, 0xfd, 0x7b, 0xe0, 0x00, 0xa8, 0x62, 0x04, 0x29, 0x7f, 0xbf, 0xaf, 0x27, - 0xc9, 0x6a, 0x66, 0x31, 0xb5, 0xa2, 0xea, 0xa8, 0xeb, 0x72, 0x44, 0x31, 0xfb, 0xff, 0xfd, 0x7c, 0x27, 0x52, 0x65, 0x39, 0x7d, 0xa0, 0x5c, 0xaa, 0xa7, 0x6a, 0xc6, 0x41, 0xf5, 0xdf, 0xfd, 0x09, - 0x27, 0x52, 0x84, 0x39, 0x28, 0xaa, 0xd6, 0xfc, 0x8b, 0x7b, 0x65, 0x41, 0x5f, 0xaf, 0x55, 0x2f, 0x2b, 0x73, 0xa5, 0x49, 0xfd, 0x27, 0xfa, 0x2a, 0x6c, 0x83, 0x26, 0x5a, 0x7d, 0x6e, 0x2f, 0x30, - 0x6e, 0xa4, 0x44, 0x31, 0x5f, 0x75, 0x5e, 0xe0, 0xab, 0x8b, 0xa5, 0x39, 0x3d, 0xf7, 0xa9, 0xab, 0xeb, 0x9b, 0xa6, 0x41, 0xea, 0xb7, 0x82, 0x5e, 0xef, 0xac, 0x43, 0x31, 0xeb, 0x82, 0x5f, 0xff, - 0xca, 0x83, 0x03, 0x21, 0x0a, 0xa0, 0xf5, 0x57, 0x2e, 0x9c, 0x43, 0x31, 0xf8, 0xdf, 0x57, 0xf5, 0x6a, 0x7b, 0xa5, 0x41, 0x7f, 0x5f, 0xb9, 0xa2, 0xaa, 0x83, 0x86, 0x39, 0xff, 0x5f, 0xe2, 0x02, - 0xe9, 0x6a, 0x85, 0x31, 0xff, 0x7f, 0x60, 0x68, 0x45, 0x4a, 0xe3, 0x20, 0x57, 0x3f, 0x2d, 0xaf, 0x2a, 0x73, 0xc3, 0x18, 0x7f, 0x5f, 0x70, 0x7e, 0x05, 0x42, 0xc3, 0x18, 0xbf, 0xb5, 0x3d, 0x2d, - 0x4c, 0xac, 0xea, 0xa3, 0xf5, 0xf7, 0xc7, 0xb2, 0x4c, 0xb4, 0x89, 0x93, 0xfa, 0x8a, 0x92, 0x00, 0xce, 0xbc, 0xaa, 0x9b, 0x57, 0xeb, 0x2b, 0xff, 0xce, 0xbc, 0xca, 0xa3, 0xd5, 0xcb, 0x5e, 0xf8, - 0x4c, 0xac, 0xcb, 0xa3, 0xdf, 0xd7, 0xbd, 0x82, 0x4c, 0xac, 0xcb, 0xa3, 0xc3, 0xe8, 0xda, 0xff, 0x6c, 0xb4, 0xea, 0xa3, 0x0f, 0xed, 0xd5, 0x7d, 0x6c, 0xb4, 0xaa, 0x9b, 0xce, 0xfb, 0xff, 0x7f, - 0x6c, 0xb4, 0xaa, 0x9b, 0x78, 0x5f, 0xff, 0xff, 0x0b, 0xac, 0xaa, 0x9b, 0xf5, 0x37, 0xbe, 0xf8, 0x2b, 0xac, 0xaa, 0xa3, 0x2a, 0xaf, 0xf7, 0xef, 0x2b, 0xac, 0xca, 0xa3, 0xb8, 0xb6, 0xed, 0xb2, - 0x0b, 0xac, 0xca, 0xa3, 0x8a, 0x5d, 0x89, 0x8b, 0x0b, 0xac, 0xca, 0x9b, 0xaf, 0xaa, 0xb8, 0xba, 0x2c, 0xac, 0xeb, 0xa3, 0x2b, 0xab, 0xfd, 0x17, 0x4b, 0xac, 0xea, 0xa3, 0xfd, 0xef, 0xca, 0x79, - 0x2c, 0xb4, 0xea, 0xa3, 0x37, 0x2b, 0xa5, 0x75, 0x2b, 0xb4, 0x27, 0x8b, 0x00, 0x20, 0xaa, 0x5e, 0x6c, 0xb4, 0xc6, 0x82, 0x0a, 0x0a, 0xaa, 0x57, 0xac, 0xbc, 0xa6, 0x7a, 0x0a, 0xa8, 0x8a, 0x57, - 0x2b, 0xb4, 0xa6, 0x7a, 0xa0, 0xaa, 0xaa, 0x55, 0xa8, 0x9b, 0x45, 0x72, 0xa8, 0xe0, 0x7a, 0x5d, 0xe7, 0x8a, 0x25, 0x6a, 0xe0, 0x7a, 0x57, 0x57, 0x87, 0x72, 0x05, 0x6a, 0xbf, 0xd7, 0x0e, 0xaf, - 0x46, 0x6a, 0x05, 0x62, 0xbe, 0xd5, 0x20, 0x28, 0xa7, 0x72, 0xe5, 0x61, 0xff, 0x6f, 0x2b, 0x8a, 0x46, 0x6a, 0xe5, 0x61, 0xae, 0xb7, 0xa8, 0xaa, 0x46, 0x6a, 0x05, 0x5a, 0xfd, 0x30, 0x02, 0xa2, - 0x67, 0x72, 0x06, 0x62, 0xfd, 0x7b, 0xfe, 0xfb, 0x87, 0x72, 0x25, 0x6a, 0xe9, 0x43, 0xde, 0xb5, 0xa7, 0x72, 0xc5, 0x59, 0x5e, 0xff, 0xe0, 0xaa, 0x88, 0x72, 0xe5, 0x59, 0xfd, 0xef, 0x2b, 0xaa, - 0x29, 0x7b, 0x47, 0x6a, 0x55, 0x8d, 0xff, 0xf5, 0xe8, 0x72, 0x46, 0x6a, 0x7d, 0x8f, 0xfe, 0x57, 0xe8, 0x72, 0x27, 0x62, 0xad, 0x82, 0xd7, 0xed, 0xc9, 0x72, 0x26, 0x62, 0x2a, 0xaf, 0x77, 0xff, - 0xe8, 0x7a, 0x06, 0x62, 0x78, 0xbd, 0x7f, 0xff, 0x67, 0x6a, 0x26, 0x62, 0x43, 0x7a, 0x35, 0x88, 0x47, 0x6a, 0xe6, 0x61, 0xf2, 0x8d, 0x00, 0xba, 0xc9, 0x72, 0x06, 0x62, 0xfd, 0xfd, 0xf0, 0xff, - 0x67, 0x72, 0x26, 0x62, 0xeb, 0x27, 0xab, 0xff, 0xa8, 0x72, 0x46, 0x6a, 0x7f, 0x27, 0x77, 0xb5, 0x88, 0x72, 0x26, 0x62, 0xe7, 0xa0, 0xe1, 0x02, 0xa8, 0x72, 0x47, 0x6a, 0xcf, 0xdf, 0xd7, 0xae, - 0x88, 0x72, 0x47, 0x6a, 0xaa, 0x9f, 0x2f, 0x88, 0x88, 0x72, 0x67, 0x6a, 0x55, 0xde, 0x0e, 0x20, 0xa8, 0x72, 0x67, 0x6a, 0xd5, 0xb9, 0x88, 0x2b, 0xe9, 0x7a, 0x88, 0x6a, 0x75, 0xd7, 0xd7, 0xaa, - 0x0a, 0x7b, 0x88, 0x6a, 0x55, 0xfd, 0xab, 0xe8, 0x10, 0x9c, 0x88, 0x6a, 0x55, 0x55, 0xf5, 0x3d, 0xef, 0xc4, 0xaa, 0x72, 0x55, 0x55, 0x2d, 0x00, 0x4f, 0xd5, 0x65, 0x49, 0xff, 0x2b, 0x00, 0x70, - 0x0e, 0xcd, 0x44, 0x39, 0x0b, 0xc0, 0x5c, 0x55, 0x2d, 0xcd, 0x24, 0x39, 0xe0, 0x57, 0x55, 0x55, 0xc6, 0x49, 0xe4, 0x28, 0x82, 0xeb, 0xd7, 0xff, 0xa6, 0x41, 0x24, 0x39, 0xdf, 0xb5, 0x8f, 0xa7, - 0xc7, 0x41, 0x04, 0x39, 0x5a, 0xfb, 0xeb, 0x22, 0x85, 0x39, 0xe3, 0x20, 0x6a, 0xe0, 0x3f, 0x2a, 0x07, 0x4a, 0xe4, 0x28, 0xf5, 0xaf, 0xaa, 0x02, 0xc6, 0x41, 0x25, 0x31, 0xbd, 0xf8, 0xde, 0xf0, - 0xe6, 0x51, 0x24, 0x31, 0xab, 0xab, 0xa3, 0xad, 0xe6, 0x51, 0x44, 0x41, 0xe2, 0x63, 0xa2, 0xfe, 0xa5, 0x49, 0x04, 0x39, 0xae, 0xfa, 0xde, 0xf0, 0x86, 0x51, 0x44, 0x31, 0xde, 0x5a, 0x2b, 0x0a, - 0xe6, 0x59, 0x25, 0x31, 0xf5, 0xff, 0xaa, 0xa2, 0x06, 0x4a, 0x25, 0x41, 0x8a, 0xaa, 0xdf, 0x2f, 0x47, 0x52, 0xe4, 0x30, 0x5a, 0xfa, 0xe0, 0xfe, 0xa6, 0x51, 0x25, 0x31, 0x0d, 0xbd, 0x0b, 0x00, - 0x26, 0x62, 0x85, 0x49, 0x87, 0xdf, 0xef, 0x7b, 0x05, 0x62, 0x44, 0x41, 0x20, 0xaa, 0xaa, 0xb7, 0xe5, 0x61, 0x63, 0x59, 0x00, 0xa8, 0xfa, 0x5d, 0xc5, 0x61, 0x43, 0x51, 0x22, 0x00, 0xaa, 0xff, - 0xe5, 0x59, 0x84, 0x51, 0xa8, 0xec, 0xfb, 0xd5, 0xe4, 0x59, 0xa5, 0x51, 0xf3, 0xa9, 0xb7, 0xa1, 0xe5, 0x59, 0x84, 0x51, 0xa2, 0x3f, 0xa6, 0x9f, 0x66, 0x6a, 0x84, 0x51, 0x2f, 0xae, 0xfb, 0x57, - 0x66, 0x6a, 0x84, 0x51, 0x22, 0xfa, 0xfb, 0xd5, 0x46, 0x62, 0x83, 0x51, 0xe8, 0xa2, 0xab, 0x7f, 0x87, 0x6a, 0x84, 0x59, 0xaf, 0x2a, 0xff, 0xf5, 0x46, 0x6a, 0xa4, 0x59, 0x82, 0xfe, 0xff, 0x55, - 0x26, 0x62, 0x83, 0x59, 0x2a, 0xbe, 0xfe, 0x5f, 0x25, 0x62, 0x83, 0x59, 0x08, 0xab, 0xd5, 0x55, 0x25, 0x62, 0x43, 0x51, 0x88, 0xa8, 0x5e, 0x7f, 0x05, 0x6a, 0x23, 0x41, 0x82, 0xe8, 0xef, 0xd7, - 0xe5, 0x61, 0x23, 0x49, 0x80, 0xfe, 0x57, 0x5f, 0xa4, 0x59, 0x23, 0x49, 0x82, 0xde, 0xdf, 0x5f, 0xa4, 0x59, 0x03, 0x49, 0xa2, 0xfe, 0x6b, 0x5f, 0x63, 0x59, 0x23, 0x49, 0x0a, 0xbe, 0xa9, 0xfd, - 0x83, 0x59, 0x43, 0x51, 0x2b, 0x7d, 0x7b, 0xd7, 0x64, 0x59, 0x23, 0x49, 0x02, 0xa2, 0xae, 0x2b, 0x84, 0x59, 0x23, 0x51, 0x37, 0xb7, 0xea, 0xae, 0xc4, 0x61, 0x23, 0x51, 0xa2, 0xfd, 0xfd, 0xdf, - 0xc4, 0x61, 0x43, 0x59, 0x0a, 0xf5, 0x77, 0x7d, 0x43, 0x7a, 0x42, 0x51, 0x2f, 0xff, 0xd7, 0x7d, 0x06, 0x9b, 0x43, 0x59, 0x0a, 0x55, 0x55, 0x55, 0x44, 0x82, 0x42, 0x59, 0x88, 0x5d, 0xd5, 0x77, - 0xe3, 0x69, 0x62, 0x61, 0x94, 0x55, 0xd5, 0x55, 0xa4, 0x61, 0x22, 0x59, 0x88, 0x9a, 0x0a, 0xef, 0x04, 0x6a, 0x43, 0x61, 0x2e, 0xdd, 0xfd, 0x7f, 0x65, 0x82, 0x83, 0x61, 0x2b, 0x2d, 0x0b, 0xaf, - 0xa6, 0x8a, 0xc3, 0x71, 0x2e, 0x0a, 0x02, 0xa7, 0x07, 0x93, 0x66, 0x82, 0xbf, 0xa7, 0x8f, 0xaf, 0x48, 0x9b, 0x86, 0x82, 0xbd, 0x0a, 0x2f, 0x22, 0xca, 0xab, 0x28, 0x9b, 0xa9, 0x3d, 0xb5, 0x0d, - 0x4b, 0xbc, 0xc7, 0x8a, 0x0a, 0x02, 0xe2, 0x42, 0x2c, 0xac, 0x65, 0x39, 0x50, 0x78, 0x80, 0xbe, 0x2b, 0x7b, 0x85, 0x39, 0xf5, 0xf5, 0x80, 0xd0, 0x2a, 0x7b, 0xc6, 0x41, 0xaf, 0xff, 0x02, 0x4f, - 0x4c, 0x9c, 0x85, 0x41, 0xfa, 0xff, 0xaa, 0x89, 0x8b, 0x83, 0x22, 0x39, 0xa2, 0xaa, 0xaa, 0x7a, 0x2c, 0x94, 0xe4, 0x28, 0xaa, 0xbf, 0x00, 0x55, 0x8b, 0x83, 0x64, 0x31, 0xbf, 0x02, 0xf8, 0xd5, - 0x6b, 0x83, 0x84, 0x31, 0xaa, 0x02, 0xb7, 0x57, 0xcb, 0x8b, 0xe4, 0x41, 0xaa, 0x80, 0xd5, 0x55, 0x4d, 0x9c, 0xe5, 0x51, 0x0a, 0xef, 0xfb, 0xd5, 0x0c, 0x94, 0x85, 0x41, 0xe0, 0x7f, 0x77, 0x7a, - 0x45, 0x52, 0x23, 0x29, 0x2f, 0xaf, 0x2a, 0xad, 0x0c, 0x94, 0x46, 0x5a, 0xaf, 0x59, 0x62, 0xeb, 0xcd, 0x93, 0x85, 0x39, 0xdc, 0x7a, 0x7f, 0x7f, 0x67, 0x52, 0xa5, 0x39, 0x02, 0x7f, 0xff, 0x73, - 0x68, 0x52, 0x85, 0x39, 0xf4, 0x43, 0x7a, 0x77, 0x06, 0x4a, 0x64, 0x31, 0x27, 0x2b, 0xa2, 0x3b, 0x2a, 0x73, 0xa6, 0x41, 0x0a, 0xbf, 0x7f, 0x5a, 0xee, 0x8b, 0x85, 0x39, 0xff, 0xfe, 0x09, 0xaf, - 0x4f, 0x9c, 0xc7, 0x39, 0x57, 0xff, 0x80, 0x82, 0xac, 0x83, 0xa6, 0x41, 0x7f, 0x55, 0x80, 0x20, 0x0d, 0x94, 0xa6, 0x39, 0x7f, 0xd5, 0xaa, 0x00, 0x6f, 0xa4, 0x24, 0x29, 0xd5, 0xf5, 0x7a, 0xc0, - 0x6d, 0xb4, 0xeb, 0xa3, 0x2b, 0xb7, 0x25, 0x7d, 0xae, 0xbc, 0xea, 0xa3, 0x0a, 0xff, 0x33, 0x55, 0x6c, 0xb4, 0xc9, 0xa3, 0xea, 0xaa, 0xf8, 0xdd, 0x4d, 0xb4, 0xa8, 0x9b, 0xae, 0x2a, 0xfa, 0x7d, - 0x2c, 0xac, 0x89, 0x93, 0x80, 0xb8, 0xab, 0xfd, 0x2b, 0xac, 0x89, 0x9b, 0xfc, 0xaa, 0xfe, 0x5f, 0x0b, 0xac, 0x8a, 0x93, 0xba, 0xec, 0xb5, 0x0f, 0x2b, 0xac, 0xa9, 0x9b, 0xf8, 0xbb, 0xec, 0x56, - 0xeb, 0xa3, 0x89, 0x9b, 0x00, 0xee, 0x8b, 0xbd, 0x0b, 0xac, 0x88, 0x93, 0xa8, 0xab, 0xba, 0x56, 0x0b, 0xac, 0x89, 0x9b, 0xba, 0xaa, 0xeb, 0x2d, 0x2b, 0xac, 0x8a, 0x9b, 0xa2, 0xaa, 0x7a, 0x2a, - 0x0b, 0xa4, 0x68, 0x9b, 0x00, 0xae, 0xae, 0xde, 0xeb, 0xa3, 0x65, 0x72, 0x00, 0x00, 0x88, 0x5f, 0x0a, 0xac, 0x66, 0x6a, 0x00, 0x0a, 0xf2, 0x55, 0xea, 0xab, 0x66, 0x6a, 0x00, 0xfa, 0x55, 0x55, - 0xe8, 0xa3, 0x46, 0x6a, 0xe0, 0x57, 0x57, 0x55, 0xe7, 0x82, 0x46, 0x62, 0xf8, 0xff, 0xed, 0x57, 0x87, 0x72, 0x46, 0x62, 0x20, 0xaf, 0xef, 0xfd, 0x87, 0x72, 0x26, 0x62, 0xb0, 0xae, 0xa8, 0x7f, - 0x87, 0x72, 0x26, 0x62, 0xa2, 0xae, 0xf5, 0xbf, 0x87, 0x72, 0x26, 0x6a, 0xf2, 0x7e, 0x73, 0xfd, 0x67, 0x6a, 0x25, 0x62, 0xfd, 0x94, 0xfd, 0xdc, 0x87, 0x72, 0x26, 0x62, 0xef, 0x7b, 0xbd, 0xaa, - 0x87, 0x72, 0x26, 0x62, 0xff, 0xf5, 0xfe, 0x8a, 0x67, 0x72, 0x26, 0x62, 0xfe, 0x6b, 0xeb, 0xf0, 0x67, 0x72, 0x26, 0x62, 0xf7, 0xfa, 0xff, 0xbf, 0x87, 0x6a, 0x26, 0x62, 0xfd, 0xab, 0xe2, 0xba, - 0x87, 0x6a, 0xe4, 0x59, 0xaa, 0x08, 0x02, 0x7a, 0x87, 0x72, 0xc5, 0x59, 0x22, 0x88, 0xa8, 0xf5, 0x87, 0x72, 0xe5, 0x61, 0x2a, 0x80, 0xa8, 0x55, 0x87, 0x72, 0x05, 0x5a, 0x82, 0x82, 0xea, 0x75, - 0xa8, 0x72, 0x84, 0x59, 0x02, 0xaa, 0xaa, 0xfd, 0x86, 0x72, 0xe5, 0x61, 0xe8, 0xa8, 0x7a, 0x55, 0x67, 0x6a, 0xc4, 0x59, 0x02, 0xaa, 0x97, 0xaa, 0x67, 0x72, 0xe4, 0x59, 0x02, 0xea, 0x7f, 0xef, - 0x66, 0x6a, 0xe5, 0x59, 0x88, 0x55, 0xfd, 0xba, 0x46, 0x6a, 0xc5, 0x59, 0xa8, 0xb7, 0xaa, 0x2e, 0x67, 0x6a, 0x06, 0x62, 0xb5, 0xb5, 0x2f, 0x03, 0x87, 0x6a, 0x26, 0x62, 0xff, 0xbf, 0x08, 0x0b, - 0x88, 0x72, 0x46, 0x6a, 0x8d, 0x2b, 0x26, 0x02, 0xa8, 0x72, 0x67, 0x6a, 0xfe, 0xfa, 0xfe, 0x00, 0xc8, 0x72, 0x27, 0x6a, 0x57, 0x8a, 0xaa, 0xa0, 0xa8, 0x72, 0x47, 0x6a, 0xbd, 0x28, 0xef, 0x0a, - 0xc9, 0x72, 0x47, 0x6a, 0xda, 0xae, 0xbd, 0x00, 0x2c, 0x83, 0x67, 0x6a, 0xf5, 0xf7, 0xbf, 0x2a, 0xd0, 0xbc, 0xa9, 0x72, 0x55, 0x55, 0x95, 0x0b, 0x2f, 0xcd, 0xcb, 0x72, 0x55, 0xbd, 0x00, 0x20, - 0x4f, 0xd5, 0x65, 0x49, 0xaf, 0x02, 0x80, 0x5e, 0x2e, 0xcd, 0x24, 0x39, 0x00, 0x80, 0x57, 0x55, 0x4d, 0xd5, 0x24, 0x31, 0x80, 0x57, 0x55, 0x55, 0xc4, 0x51, 0x05, 0x21, 0x68, 0x78, 0x57, 0xf5, - 0xe7, 0x41, 0x04, 0x29, 0x3b, 0x35, 0xfd, 0xbb, 0x89, 0x5a, 0x66, 0x39, 0x57, 0xff, 0x0b, 0xaf, 0x48, 0x5a, 0x25, 0x29, 0x57, 0x5e, 0xb8, 0xe8, 0xa6, 0x41, 0x45, 0x31, 0xde, 0x86, 0xf4, 0x0c, - 0x27, 0x4a, 0x45, 0x31, 0x8a, 0xf7, 0xab, 0x55, 0xe7, 0x41, 0x44, 0x31, 0x78, 0x0b, 0xb5, 0xbf, 0x07, 0x4a, 0x65, 0x39, 0xad, 0xe8, 0xf7, 0x8f, 0xe7, 0x49, 0x65, 0x41, 0x68, 0x5b, 0x03, 0xad, - 0xc6, 0x41, 0x45, 0x39, 0xe7, 0x17, 0xb8, 0xf2, 0xc6, 0x49, 0x04, 0x39, 0xeb, 0xbc, 0xbe, 0xde, 0xa5, 0x49, 0x44, 0x41, 0x27, 0xfb, 0xeb, 0xf5, 0xa5, 0x51, 0x44, 0x41, 0xaf, 0x3f, 0xab, 0xee, - 0x07, 0x5a, 0x03, 0x39, 0xeb, 0x25, 0xbe, 0x7f, 0x06, 0x52, 0x65, 0x41, 0x6d, 0xa2, 0xfb, 0xad, 0xe6, 0x51, 0x44, 0x41, 0xb5, 0xf8, 0xbe, 0xea, 0xc6, 0x51, 0x24, 0x41, 0x88, 0xf8, 0xe2, 0x7b, - 0xa5, 0x51, 0x44, 0x41, 0xbf, 0x8b, 0x7b, 0xdf, 0xc5, 0x51, 0x23, 0x49, 0xaa, 0x8a, 0xff, 0x7e, 0x83, 0x59, 0x02, 0x51, 0x22, 0x8a, 0xaf, 0xfd, 0x84, 0x59, 0x23, 0x49, 0xe8, 0xfa, 0xd5, 0xf7, - 0xa4, 0x59, 0x43, 0x51, 0x23, 0xbd, 0xdd, 0x57, 0xc4, 0x61, 0x23, 0x49, 0x0a, 0xeb, 0xff, 0x7d, 0xc4, 0x59, 0x43, 0x51, 0xa2, 0xea, 0xd7, 0x75, 0xc5, 0x59, 0x23, 0x51, 0x3a, 0xfa, 0xbf, 0x7f, - 0xa4, 0x59, 0x23, 0x51, 0xa8, 0x8a, 0xab, 0x7f, 0xa4, 0x59, 0x23, 0x49, 0xbc, 0xfa, 0x7f, 0x55, 0x84, 0x59, 0x23, 0x51, 0xaa, 0xf5, 0xe9, 0x2f, 0xa4, 0x59, 0x23, 0x51, 0xa8, 0xff, 0xf5, 0xfe, - 0x83, 0x59, 0x23, 0x51, 0xe0, 0x5f, 0xf5, 0xd5, 0xa4, 0x59, 0x23, 0x51, 0xe2, 0xdd, 0xfd, 0xdf, 0x63, 0x51, 0x22, 0x49, 0x8d, 0x0b, 0xfb, 0x6b, 0x64, 0x51, 0x02, 0x49, 0xa0, 0xa8, 0xfb, 0x7a, - 0x63, 0x51, 0x03, 0x49, 0xfc, 0xde, 0xef, 0xad, 0x44, 0x59, 0x23, 0x41, 0xb8, 0xff, 0xd7, 0xa8, 0x64, 0x51, 0x23, 0x49, 0xa7, 0xf7, 0x7a, 0x12, 0x64, 0x59, 0x22, 0x49, 0xef, 0xb9, 0x8f, 0x0a, - 0x64, 0x59, 0x22, 0x51, 0x8a, 0xae, 0x9b, 0xca, 0x64, 0x59, 0x23, 0x51, 0xf0, 0x33, 0xfe, 0xbb, 0x84, 0x59, 0x22, 0x51, 0x6a, 0xeb, 0xfa, 0xaf, 0x63, 0x61, 0x22, 0x59, 0x0a, 0xee, 0xb1, 0x32, - 0x63, 0x61, 0x22, 0x59, 0xee, 0x7e, 0xea, 0x03, 0x84, 0x61, 0x42, 0x59, 0xba, 0xfd, 0xab, 0x8a, 0x84, 0x61, 0x22, 0x59, 0xbf, 0xad, 0x82, 0x82, 0x84, 0x61, 0x42, 0x59, 0xf5, 0xe4, 0x7a, 0xe2, - 0x83, 0x61, 0x42, 0x59, 0xdf, 0xae, 0x22, 0xa2, 0xa4, 0x69, 0x63, 0x59, 0x5d, 0xba, 0x2f, 0xbf, 0x25, 0x72, 0x43, 0x61, 0x57, 0xf7, 0xbf, 0x20, 0x85, 0x7a, 0x84, 0x69, 0x5d, 0xfd, 0xef, 0x0a, - 0x68, 0x9b, 0xa4, 0x69, 0xfd, 0xbd, 0xab, 0x2a, 0x89, 0x9b, 0x46, 0x7a, 0xf5, 0xab, 0x0a, 0x22, 0xa9, 0xa3, 0x08, 0x93, 0xb5, 0x2b, 0x2a, 0x2e, 0x6c, 0xbc, 0x89, 0xa3, 0xf5, 0xb5, 0x35, 0x45, - 0x4c, 0xbc, 0x25, 0x5a, 0x80, 0x80, 0x62, 0x78, 0xcc, 0x93, 0x06, 0x52, 0xe2, 0xff, 0xf5, 0xff, 0x0a, 0x73, 0x84, 0x39, 0xf6, 0x5e, 0x7a, 0x82, 0x0a, 0x63, 0x84, 0x31, 0x7f, 0x55, 0xfd, 0x2f, - 0x4b, 0x73, 0xe6, 0x41, 0x5d, 0xff, 0x5a, 0x90, 0xeb, 0x6a, 0x03, 0x29, 0x57, 0x5e, 0xaa, 0x2a, 0x47, 0x4a, 0x43, 0x29, 0xf5, 0xf5, 0x97, 0x28, 0x6c, 0x6b, 0x84, 0x39, 0xf5, 0xfd, 0x55, 0x7c, - 0x67, 0x52, 0xe4, 0x20, 0xb8, 0xa8, 0xfa, 0xb5, 0x06, 0x4a, 0x45, 0x31, 0xa8, 0xf0, 0xfd, 0xa8, 0xe8, 0x49, 0x64, 0x31, 0xf8, 0xbf, 0xd7, 0x02, 0xe6, 0x51, 0x24, 0x21, 0x02, 0xfe, 0x7f, 0x5e, - 0x4c, 0x73, 0x64, 0x31, 0xdf, 0xf5, 0xfd, 0x2d, 0xec, 0x8b, 0x24, 0x31, 0xff, 0x77, 0xbf, 0x80, 0x2e, 0x8c, 0x24, 0x31, 0x7f, 0xb5, 0x2a, 0xab, 0xed, 0x8b, 0xc6, 0x39, 0x55, 0xfe, 0xa0, 0xff, - 0x0d, 0x94, 0xe7, 0x49, 0x55, 0x02, 0xff, 0x5d, 0x4e, 0x94, 0xe6, 0x41, 0xff, 0xdc, 0xdd, 0xfd, 0xae, 0xa4, 0xa8, 0x5a, 0xab, 0x00, 0x55, 0x55, 0xec, 0x8b, 0x48, 0x52, 0x00, 0x08, 0xd7, 0x5f, - 0xec, 0x93, 0x47, 0x52, 0x20, 0xaa, 0xd5, 0x55, 0x8e, 0xa4, 0x47, 0x52, 0xa8, 0x7f, 0x77, 0x57, 0x2c, 0x94, 0x88, 0x5a, 0x00, 0x57, 0x55, 0x55, 0x8a, 0x83, 0x88, 0x52, 0xfc, 0xff, 0x7d, 0x5d, - 0xc9, 0xa3, 0x25, 0x6a, 0xa0, 0x7f, 0x55, 0x55, 0x88, 0x9b, 0xe5, 0x59, 0x80, 0xff, 0xff, 0x55, 0xe7, 0x82, 0xc5, 0x59, 0x00, 0xbe, 0xff, 0x55, 0xc7, 0x82, 0xe6, 0x59, 0x00, 0xee, 0x7f, 0xf5, - 0xe7, 0x8a, 0xe6, 0x59, 0x28, 0xff, 0xd5, 0xff, 0xe7, 0x8a, 0x46, 0x6a, 0x00, 0x75, 0x55, 0x55, 0x08, 0x8b, 0x26, 0x62, 0x00, 0xf7, 0xb7, 0x35, 0x48, 0x8b, 0x26, 0x6a, 0x0a, 0x7f, 0x55, 0x54, - 0x27, 0x93, 0x26, 0x6a, 0x00, 0xdf, 0x55, 0x55, 0xe7, 0x82, 0x46, 0x6a, 0xa0, 0x7f, 0x3d, 0x5d, 0x28, 0x8b, 0x26, 0x62, 0x0a, 0xff, 0x5e, 0x5f, 0x48, 0x9b, 0x46, 0x62, 0x8a, 0xf5, 0xfd, 0x55, - 0xc6, 0x7a, 0x47, 0x6a, 0xf0, 0xff, 0x57, 0xdd, 0xa7, 0x72, 0x26, 0x6a, 0x02, 0xaa, 0xef, 0xd5, 0x87, 0x72, 0x26, 0x62, 0xe2, 0xba, 0x6a, 0xfa, 0x87, 0x6a, 0x46, 0x62, 0xbe, 0xfe, 0x37, 0xd5, - 0x87, 0x6a, 0x46, 0x62, 0xdf, 0xbb, 0xec, 0x55, 0x67, 0x72, 0x26, 0x62, 0xfe, 0xee, 0xe3, 0x2a, 0x67, 0x6a, 0x26, 0x62, 0x80, 0x88, 0x6e, 0x70, 0x67, 0x6a, 0x26, 0x62, 0x2e, 0x0a, 0xfe, 0x5a, - 0x87, 0x6a, 0x25, 0x62, 0xe3, 0xe2, 0x5f, 0x55, 0x66, 0x6a, 0xe7, 0x59, 0xaa, 0x7f, 0x8a, 0xae, 0x66, 0x6a, 0x07, 0x62, 0xae, 0xad, 0x8a, 0xfa, 0xa7, 0x72, 0x26, 0x62, 0x2f, 0xbf, 0x7b, 0x7f, - 0x87, 0x6a, 0xe5, 0x61, 0xe0, 0xa8, 0x55, 0xff, 0x66, 0x6a, 0xe5, 0x59, 0xaa, 0xe8, 0xd5, 0xca, 0x67, 0x6a, 0x85, 0x59, 0x8a, 0x5f, 0x82, 0xaa, 0x67, 0x6a, 0xc6, 0x61, 0xea, 0xb5, 0xaf, 0x2a, - 0x66, 0x6a, 0x85, 0x59, 0xd5, 0xba, 0x2b, 0x80, 0x67, 0x6a, 0xe5, 0x61, 0xbd, 0xae, 0xb8, 0xa8, 0x87, 0x72, 0x05, 0x62, 0xbd, 0xbf, 0xf9, 0xdc, 0x67, 0x6a, 0x25, 0x62, 0x66, 0x3e, 0xbb, 0x67, - 0x87, 0x6a, 0x26, 0x62, 0x55, 0x5e, 0xd7, 0xaf, 0xc8, 0x72, 0x06, 0x62, 0x7f, 0x55, 0xe3, 0xdf, 0x67, 0x6a, 0x06, 0x62, 0xf7, 0xed, 0xb9, 0x03, 0x87, 0x6a, 0x06, 0x62, 0xbd, 0x2a, 0xaf, 0xbe, - 0x67, 0x6a, 0x26, 0x62, 0xce, 0xcf, 0x7a, 0xab, 0x67, 0x6a, 0x07, 0x6a, 0x1b, 0x00, 0x2a, 0x00, 0xa8, 0x72, 0x27, 0x62, 0xbf, 0xf7, 0xba, 0x2a, 0xc8, 0x72, 0x67, 0x6a, 0x5d, 0xfd, 0xfb, 0x2f, - 0xa8, 0x72, 0x67, 0x6a, 0x5b, 0xaf, 0xa8, 0x3a, 0x0a, 0x7b, 0x87, 0x6a, 0x77, 0xff, 0xbf, 0x2b, 0xb0, 0xb4, 0xa8, 0x72, 0x55, 0x55, 0x55, 0x2b, 0xef, 0xc4, 0xa9, 0x6a, 0x55, 0x55, 0x2f, 0x80, - 0xce, 0xc4, 0xca, 0x72, 0x55, 0x2d, 0xa0, 0x0a, 0x6f, 0xdd, 0x2c, 0x83, 0xad, 0xaa, 0xaa, 0x2a, 0x2e, 0xd5, 0x63, 0x41, 0x02, 0x00, 0xe0, 0x5e, 0xec, 0xcc, 0x24, 0x39, 0xe0, 0x5e, 0x55, 0x55, - 0x27, 0x42, 0xe4, 0x38, 0xbd, 0xab, 0xe2, 0xeb, 0x28, 0x4a, 0x45, 0x31, 0xbb, 0x00, 0xa3, 0xa5, 0x07, 0x4a, 0xe4, 0x28, 0x02, 0xa0, 0xfa, 0x7a, 0xe7, 0x41, 0xe4, 0x20, 0xe0, 0x8a, 0xeb, 0xfd, - 0xa6, 0x39, 0x04, 0x29, 0x3f, 0xa2, 0x7d, 0x8d, 0xe6, 0x49, 0xe4, 0x28, 0xa8, 0xef, 0xf5, 0xaa, 0x85, 0x39, 0xc4, 0x20, 0x88, 0xbf, 0x97, 0xe8, 0x86, 0x39, 0xe4, 0x20, 0xff, 0x97, 0x6f, 0x0b, - 0xc6, 0x41, 0x04, 0x29, 0xfd, 0xbf, 0xf5, 0xa2, 0xa6, 0x41, 0x04, 0x31, 0xab, 0x9f, 0x2f, 0x2e, 0xc6, 0x49, 0x24, 0x39, 0x7f, 0xff, 0xac, 0x5c, 0xa5, 0x51, 0xe4, 0x28, 0x3e, 0xbf, 0xd7, 0xd5, - 0x06, 0x52, 0xc3, 0x30, 0xaa, 0xa8, 0xe2, 0xad, 0xc6, 0x49, 0x04, 0x31, 0x52, 0x7b, 0xef, 0xaf, 0x65, 0x41, 0x03, 0x29, 0x09, 0xad, 0x3f, 0xf2, 0x85, 0x41, 0x24, 0x39, 0xe0, 0xc9, 0xa3, 0x55, - 0xc6, 0x51, 0xc3, 0x28, 0x2f, 0xbf, 0x5f, 0xff, 0xa4, 0x51, 0x05, 0x31, 0x02, 0xb7, 0xbf, 0xaf, 0xa5, 0x49, 0x04, 0x41, 0x5e, 0x2a, 0xaa, 0xa2, 0xa5, 0x51, 0xe4, 0x28, 0xaa, 0xf8, 0xf8, 0x5a, - 0xa5, 0x41, 0x03, 0x31, 0xba, 0xee, 0x55, 0xcd, 0x63, 0x59, 0x02, 0x51, 0xfe, 0xbe, 0x9f, 0x2e, 0x84, 0x59, 0xe2, 0x50, 0xfe, 0xf7, 0xff, 0xe8, 0x43, 0x51, 0xe2, 0x48, 0xab, 0xbd, 0xec, 0x2a, - 0x63, 0x51, 0xe2, 0x48, 0xec, 0xff, 0xf7, 0xb6, 0x64, 0x59, 0x03, 0x49, 0xab, 0xaf, 0xad, 0xbf, 0x64, 0x59, 0x23, 0x51, 0xb8, 0x7f, 0xef, 0xed, 0x43, 0x51, 0xe2, 0x40, 0x8a, 0x68, 0x70, 0x98, - 0x24, 0x59, 0xe3, 0x38, 0x22, 0xaf, 0x5d, 0xf7, 0x64, 0x51, 0xe2, 0x40, 0x8b, 0xfb, 0x5d, 0xdd, 0x84, 0x59, 0xe2, 0x40, 0x28, 0xa2, 0xb5, 0xdd, 0x64, 0x59, 0x02, 0x41, 0x00, 0x8a, 0xaa, 0xd7, - 0x44, 0x51, 0x03, 0x49, 0x2c, 0xe0, 0x3e, 0xa7, 0x64, 0x59, 0x23, 0x49, 0x7d, 0xff, 0x7f, 0x8a, 0x64, 0x51, 0x03, 0x49, 0xfb, 0xdf, 0x8a, 0x00, 0x63, 0x59, 0x24, 0x49, 0x7f, 0xeb, 0xe9, 0x02, - 0x84, 0x59, 0x23, 0x49, 0xfd, 0xfd, 0xaf, 0x32, 0x84, 0x61, 0x43, 0x51, 0xb5, 0xdf, 0xb7, 0x0a, 0x84, 0x61, 0x43, 0x51, 0x5f, 0xef, 0xf0, 0xfa, 0xc3, 0x61, 0x23, 0x59, 0xfd, 0xba, 0xab, 0x8a, - 0xa4, 0x61, 0x62, 0x59, 0x75, 0xfe, 0xb7, 0xf7, 0xa3, 0x61, 0x44, 0x59, 0xde, 0xfa, 0xfc, 0xdf, 0x83, 0x61, 0x23, 0x59, 0xe1, 0x0a, 0xba, 0xa0, 0xa4, 0x61, 0x63, 0x59, 0xef, 0xdf, 0xff, 0xb9, - 0xa4, 0x61, 0x43, 0x59, 0x8a, 0xfb, 0xf0, 0xae, 0xa4, 0x61, 0x43, 0x61, 0x03, 0x80, 0xdd, 0x8a, 0xa4, 0x61, 0x63, 0x61, 0xdf, 0xde, 0x1e, 0x8a, 0xa4, 0x61, 0x43, 0x59, 0xbb, 0xeb, 0x88, 0xb8, - 0x84, 0x61, 0x63, 0x59, 0x45, 0xb6, 0x5b, 0x97, 0x83, 0x61, 0x44, 0x59, 0xae, 0xa8, 0x7f, 0x7a, 0x25, 0x7a, 0x63, 0x59, 0x0b, 0xb5, 0xd5, 0xd5, 0x07, 0x93, 0xa3, 0x61, 0xbf, 0xab, 0x2b, 0x95, - 0xea, 0xab, 0xe7, 0x8a, 0xbd, 0xb7, 0xbf, 0x0f, 0x6c, 0xbc, 0x89, 0xa3, 0xd5, 0xfd, 0xff, 0xf8, 0x4b, 0xb4, 0xa9, 0xa3, 0x75, 0xef, 0xbf, 0x2a, 0x6d, 0xbc, 0xe6, 0x51, 0x22, 0x88, 0xa0, 0x54, - 0x0c, 0x94, 0x27, 0x5a, 0x5f, 0x8a, 0xaa, 0xd5, 0x8f, 0xa4, 0x28, 0x5a, 0xbe, 0x5e, 0xeb, 0x09, 0x8f, 0xa4, 0xa9, 0x62, 0x57, 0xfd, 0xbf, 0x58, 0xaf, 0xa4, 0x88, 0x62, 0x57, 0xfb, 0x02, 0xff, - 0x8e, 0xa4, 0xe9, 0x62, 0xd5, 0xab, 0x00, 0xd5, 0x0f, 0xb5, 0x0a, 0x6b, 0x7f, 0x2a, 0x7a, 0x5f, 0x0f, 0xad, 0x89, 0x5a, 0xaf, 0xe0, 0x55, 0x57, 0xd1, 0x9c, 0x26, 0x52, 0x02, 0xd5, 0xfd, 0xff, - 0x6f, 0x9c, 0x69, 0x52, 0x08, 0x5f, 0xff, 0x7f, 0x6e, 0x9c, 0x08, 0x42, 0x30, 0x55, 0xff, 0xbf, 0x4d, 0x9c, 0x48, 0x4a, 0x20, 0x55, 0x5f, 0xff, 0xad, 0x83, 0x45, 0x29, 0x58, 0x7f, 0xff, 0xaa, - 0xea, 0x6a, 0xc5, 0x39, 0x0d, 0xb5, 0xf5, 0xfa, 0xe9, 0x6a, 0x07, 0x42, 0xa8, 0xaa, 0xae, 0xbd, 0xc9, 0x62, 0x48, 0x52, 0x0b, 0xbf, 0xde, 0x5a, 0xc9, 0x62, 0x48, 0x4a, 0x6a, 0xf8, 0x7a, 0x72, - 0xa9, 0x5a, 0x28, 0x4a, 0xd5, 0xc3, 0xbe, 0x77, 0xc9, 0x5a, 0x07, 0x4a, 0xb1, 0xb7, 0xbf, 0x55, 0xa9, 0x5a, 0x48, 0x4a, 0x42, 0x2d, 0xbf, 0xfd, 0xa9, 0x5a, 0x07, 0x42, 0x52, 0xdc, 0x7a, 0xae, - 0xa9, 0x5a, 0x27, 0x4a, 0xe5, 0x7d, 0x8f, 0xff, 0x89, 0x5a, 0x27, 0x4a, 0x82, 0x50, 0x2a, 0x2b, 0xc9, 0x62, 0x48, 0x4a, 0xaf, 0x7a, 0x2a, 0xff, 0xa9, 0x5a, 0x07, 0x4a, 0xaa, 0x5e, 0x0a, 0x88, - 0xc8, 0x72, 0xa5, 0x51, 0xff, 0xed, 0x20, 0xaa, 0xc8, 0x72, 0xc5, 0x59, 0xb7, 0xeb, 0xac, 0xfa, 0x09, 0x83, 0x06, 0x62, 0x55, 0x0f, 0x5f, 0xd5, 0xe8, 0x7a, 0xe5, 0x61, 0xad, 0xc8, 0xfd, 0xff, - 0xc8, 0x72, 0x06, 0x62, 0x2a, 0xbf, 0xf7, 0xd7, 0x67, 0x6a, 0x25, 0x62, 0x62, 0x66, 0x2f, 0xd7, 0x47, 0x6a, 0xe5, 0x61, 0x0b, 0x0b, 0xa0, 0x6a, 0x47, 0x6a, 0x06, 0x62, 0xea, 0x02, 0xe9, 0x7f, - 0x47, 0x6a, 0x05, 0x62, 0x2e, 0x2a, 0x7e, 0xdb, 0x66, 0x6a, 0x07, 0x62, 0x0e, 0xaa, 0xaf, 0xf6, 0x67, 0x6a, 0x26, 0x62, 0xba, 0x7e, 0xc3, 0xab, 0x67, 0x6a, 0x06, 0x62, 0x2a, 0xdb, 0xff, 0xde, - 0x66, 0x6a, 0x07, 0x62, 0xa2, 0xf5, 0xab, 0x02, 0x87, 0x6a, 0x26, 0x62, 0x8b, 0xff, 0xdf, 0xe0, 0x47, 0x6a, 0x26, 0x62, 0x56, 0x82, 0xc2, 0xae, 0x86, 0x6a, 0x05, 0x5a, 0x2a, 0xa0, 0x7f, 0xff, - 0x87, 0x6a, 0x84, 0x51, 0x82, 0x7e, 0xaa, 0xaa, 0x26, 0x62, 0xa5, 0x59, 0x80, 0xf7, 0xb2, 0x80, 0x47, 0x6a, 0x83, 0x51, 0xf7, 0xbf, 0xaa, 0xa2, 0x46, 0x62, 0x85, 0x59, 0x97, 0x8a, 0x88, 0x82, - 0x06, 0x62, 0x25, 0x5a, 0xa8, 0xf6, 0x2b, 0xf9, 0x47, 0x6a, 0x05, 0x62, 0x9f, 0x37, 0xa1, 0x79, 0x67, 0x6a, 0x06, 0x62, 0xa2, 0x9f, 0xb5, 0xdf, 0x67, 0x6a, 0x06, 0x62, 0xbe, 0x0a, 0x26, 0xe2, - 0x67, 0x6a, 0x26, 0x62, 0xef, 0xae, 0x08, 0x3e, 0x87, 0x6a, 0x26, 0x62, 0x6a, 0xab, 0xf5, 0x88, 0x67, 0x6a, 0x26, 0x62, 0xeb, 0xce, 0xbd, 0xb5, 0xa8, 0x6a, 0x06, 0x62, 0xa3, 0x75, 0xff, 0x7f, - 0xa8, 0x72, 0x06, 0x62, 0xa8, 0xfe, 0xdf, 0xdf, 0x47, 0x6a, 0x05, 0x62, 0xde, 0xff, 0x62, 0x9f, 0x67, 0x6a, 0x05, 0x62, 0x8d, 0xbf, 0xed, 0xdf, 0x66, 0x72, 0x07, 0x62, 0xbf, 0xaa, 0xad, 0xce, - 0x67, 0x6a, 0x26, 0x62, 0x5d, 0x8f, 0x2a, 0xf2, 0x67, 0x6a, 0x26, 0x62, 0x34, 0xf8, 0xea, 0xb2, 0x67, 0x6a, 0x26, 0x62, 0x2e, 0xba, 0x0b, 0x22, 0xa8, 0x72, 0x26, 0x62, 0xdf, 0x7f, 0xeb, 0x2b, - 0xa8, 0x72, 0x47, 0x6a, 0xd5, 0xd5, 0xd6, 0x0b, 0xa8, 0x72, 0x47, 0x6a, 0xa5, 0xee, 0xaf, 0x00, 0xac, 0x93, 0x88, 0x72, 0x55, 0x55, 0xd5, 0x2d, 0x8d, 0xb4, 0x68, 0x72, 0x55, 0xd5, 0x0d, 0x02, - 0xad, 0xbc, 0xca, 0x72, 0x55, 0x2f, 0x00, 0x00, 0xad, 0xbc, 0x2c, 0x7b, 0x2d, 0x00, 0x00, 0x00, 0xce, 0xc4, 0x6d, 0xbc, 0xa0, 0xab, 0x02, 0x57, 0xee, 0xcc, 0x0b, 0xac, 0xd8, 0xaa, 0xa8, 0x2a, - 0x4f, 0xdd, 0x42, 0x51, 0xa2, 0x08, 0x80, 0x58, 0x4d, 0xdd, 0x64, 0x41, 0xc0, 0x5c, 0x55, 0x55, 0xa6, 0x41, 0x24, 0x31, 0x74, 0xaf, 0x2b, 0xc2, 0x65, 0x31, 0xe3, 0x20, 0x20, 0x78, 0x57, 0xd7, - 0xa6, 0x39, 0x04, 0x29, 0xa3, 0xb9, 0xb5, 0x25, 0xc6, 0x49, 0x24, 0x29, 0x2f, 0xa5, 0x2f, 0x2a, 0xc6, 0x49, 0x04, 0x21, 0x7e, 0x5e, 0xf8, 0x9e, 0xc6, 0x41, 0x25, 0x29, 0xf5, 0xff, 0x8a, 0x0a, - 0xe7, 0x41, 0x24, 0x21, 0xaf, 0x37, 0xaa, 0x28, 0xe7, 0x41, 0x45, 0x39, 0xfe, 0xfe, 0x57, 0x40, 0x28, 0x52, 0x25, 0x31, 0x97, 0xbd, 0x0f, 0xfd, 0x07, 0x4a, 0x85, 0x39, 0xea, 0x0f, 0x76, 0x7d, - 0xe6, 0x41, 0x24, 0x31, 0xce, 0xa0, 0x99, 0xbb, 0xc6, 0x41, 0x24, 0x31, 0x7b, 0x5f, 0xa8, 0xff, 0xa6, 0x49, 0xe4, 0x30, 0xf0, 0xb6, 0x97, 0xff, 0x65, 0x41, 0x04, 0x39, 0x90, 0xe2, 0xbf, 0xed, - 0x44, 0x41, 0xe3, 0x28, 0xb7, 0xa3, 0x0a, 0xaa, 0x85, 0x49, 0xe3, 0x30, 0x6a, 0xaf, 0x8f, 0x09, 0xa5, 0x49, 0x04, 0x39, 0xad, 0x8a, 0xda, 0xa2, 0xc6, 0x49, 0x23, 0x39, 0xae, 0x2f, 0xaa, 0x95, - 0xa6, 0x41, 0xc3, 0x28, 0xff, 0xff, 0x78, 0x78, 0x64, 0x41, 0x83, 0x20, 0x0a, 0xbe, 0xff, 0x7f, 0x65, 0x49, 0xe3, 0x28, 0x20, 0xbb, 0xfd, 0xfd, 0x65, 0x39, 0xe3, 0x28, 0x78, 0x7d, 0x29, 0x09, - 0x65, 0x51, 0xe3, 0x30, 0x33, 0x97, 0xbf, 0xbe, 0x63, 0x59, 0x03, 0x51, 0x88, 0xae, 0xff, 0xf6, 0x64, 0x59, 0x22, 0x51, 0x2f, 0xbf, 0xab, 0x02, 0x84, 0x61, 0x22, 0x51, 0xd7, 0x5d, 0xeb, 0xa2, - 0x63, 0x61, 0x03, 0x49, 0xd5, 0xff, 0xaa, 0x80, 0xa4, 0x61, 0x23, 0x49, 0xd5, 0x75, 0x88, 0xea, 0x84, 0x61, 0x23, 0x51, 0xf5, 0xfd, 0xa8, 0x8e, 0x64, 0x59, 0xe3, 0x48, 0x77, 0xab, 0x80, 0x80, - 0x64, 0x59, 0x02, 0x41, 0x55, 0xaa, 0x2a, 0xa8, 0x64, 0x59, 0x03, 0x41, 0x77, 0xaa, 0x08, 0x00, 0x84, 0x59, 0x23, 0x41, 0xd5, 0xaa, 0x88, 0x20, 0x64, 0x59, 0x43, 0x41, 0xfd, 0x02, 0xa2, 0x00, - 0xa3, 0x59, 0x24, 0x49, 0x57, 0xee, 0xef, 0x2e, 0xa4, 0x61, 0x23, 0x49, 0xfd, 0xba, 0x2a, 0x20, 0xa4, 0x61, 0x43, 0x59, 0xd7, 0x7b, 0xab, 0x2e, 0xa4, 0x61, 0x43, 0x51, 0xff, 0x97, 0x83, 0xf8, - 0x84, 0x61, 0x43, 0x51, 0xab, 0x29, 0xaa, 0xff, 0xa4, 0x61, 0x43, 0x59, 0x38, 0xcb, 0x1f, 0x03, 0xa3, 0x61, 0x64, 0x59, 0xde, 0xa3, 0xeb, 0xff, 0x84, 0x61, 0x42, 0x51, 0x8a, 0x8a, 0xbf, 0xda, - 0x83, 0x61, 0x64, 0x51, 0x2b, 0x02, 0xaa, 0xad, 0x64, 0x61, 0xa3, 0x59, 0x20, 0xaa, 0xfe, 0xb7, 0x84, 0x61, 0x43, 0x59, 0xff, 0x6b, 0xde, 0xbc, 0xe3, 0x69, 0x64, 0x59, 0xf5, 0xbf, 0xdf, 0xcf, - 0xa3, 0x61, 0x44, 0x59, 0xb7, 0xac, 0x70, 0xa2, 0xa4, 0x61, 0x63, 0x59, 0xe3, 0xfc, 0x75, 0x5d, 0x84, 0x61, 0x42, 0x49, 0x00, 0xa0, 0xaa, 0xdf, 0x84, 0x61, 0x02, 0x49, 0xa0, 0x02, 0xa8, 0x5f, - 0x83, 0x59, 0xc2, 0x38, 0xa2, 0x88, 0x80, 0xdf, 0x84, 0x59, 0xc2, 0x40, 0xa0, 0x28, 0xa8, 0x5f, 0xa3, 0x59, 0xc2, 0x40, 0x2a, 0x02, 0xbe, 0xd5, 0xa3, 0x59, 0xc1, 0x40, 0x20, 0x20, 0x7f, 0xff, - 0xa3, 0x61, 0xa1, 0x38, 0x00, 0xea, 0x55, 0xfb, 0x63, 0x8a, 0xa1, 0x38, 0x0a, 0xff, 0x55, 0xff, 0x47, 0xa3, 0xc1, 0x48, 0x02, 0x95, 0x55, 0xfd, 0xaf, 0x9c, 0x00, 0x59, 0xaa, 0x00, 0xb5, 0x55, - 0xaf, 0xa4, 0xe4, 0x51, 0x0a, 0x80, 0xfe, 0xfd, 0xef, 0xac, 0xe7, 0x41, 0x80, 0x57, 0x5f, 0xff, 0x0c, 0x9c, 0xe7, 0x39, 0xf8, 0x55, 0x55, 0x55, 0x89, 0x5a, 0x07, 0x42, 0x0a, 0xbd, 0xb5, 0x2d, - 0x6b, 0x73, 0x89, 0x52, 0xb5, 0xfd, 0xad, 0x83, 0x8c, 0x7b, 0x0a, 0x63, 0xff, 0x5b, 0x83, 0xab, 0xcd, 0x83, 0x69, 0x52, 0xd7, 0xaf, 0x02, 0xae, 0xac, 0x7b, 0x2b, 0x63, 0xb9, 0x02, 0xa8, 0x02, - 0x2d, 0x8c, 0x4b, 0x73, 0xa2, 0xfd, 0xfb, 0xbf, 0xcd, 0x83, 0x4b, 0x73, 0x54, 0xef, 0xa0, 0xa8, 0xcd, 0x83, 0x2a, 0x63, 0x77, 0xea, 0xa8, 0x80, 0xcd, 0x83, 0xea, 0x5a, 0x57, 0xff, 0xa0, 0x2a, - 0xcd, 0x83, 0xa9, 0x5a, 0x55, 0xaa, 0x02, 0x00, 0xed, 0x83, 0xaa, 0x5a, 0x55, 0xab, 0x0a, 0xaa, 0xed, 0x83, 0xaa, 0x5a, 0x55, 0xab, 0x80, 0xaa, 0xcd, 0x83, 0x89, 0x52, 0x57, 0xfe, 0x00, 0xaa, - 0xcd, 0x83, 0x08, 0x42, 0x7d, 0xfe, 0x00, 0x00, 0xcd, 0x83, 0x28, 0x42, 0x55, 0x5d, 0x80, 0x00, 0x6c, 0x73, 0x07, 0x42, 0x75, 0xff, 0x20, 0x00, 0x4b, 0x73, 0x28, 0x4a, 0xd5, 0xff, 0xa0, 0x00, - 0x2b, 0x73, 0x48, 0x4a, 0x55, 0xd5, 0xaa, 0x80, 0x2a, 0x73, 0x68, 0x52, 0x55, 0xf5, 0xef, 0x8a, 0xc9, 0x5a, 0x68, 0x52, 0xee, 0xd6, 0x00, 0x08, 0x0b, 0x6b, 0x68, 0x52, 0x55, 0x77, 0xff, 0x0a, - 0x05, 0x6a, 0x47, 0x62, 0xaa, 0x0f, 0xfa, 0x5f, 0x67, 0x6a, 0x05, 0x62, 0xff, 0xde, 0xff, 0xfc, 0x46, 0x6a, 0x07, 0x62, 0xba, 0xee, 0xa3, 0x28, 0x67, 0x6a, 0x26, 0x62, 0xd6, 0xf3, 0xff, 0xfe, - 0x47, 0x6a, 0x06, 0x62, 0xff, 0x82, 0xdc, 0xaf, 0x67, 0x6a, 0x06, 0x62, 0xed, 0xbe, 0xaf, 0xb8, 0x67, 0x6a, 0xe6, 0x59, 0xff, 0xa0, 0xaa, 0xde, 0x67, 0x6a, 0x06, 0x62, 0xd9, 0xab, 0xe2, 0xaf, - 0x67, 0x6a, 0x26, 0x62, 0xdd, 0xdb, 0x2e, 0xa2, 0x86, 0x6a, 0x27, 0x62, 0xf5, 0xd5, 0xbe, 0xaf, 0x68, 0x6a, 0x27, 0x62, 0x0a, 0xc3, 0xc8, 0x3e, 0x26, 0x6a, 0x68, 0x62, 0x2a, 0x0a, 0xbf, 0xfd, - 0x67, 0x6a, 0x06, 0x62, 0x83, 0xff, 0x37, 0xae, 0x67, 0x6a, 0x26, 0x62, 0xe7, 0xbb, 0xcc, 0xbb, 0x67, 0x6a, 0x26, 0x62, 0xed, 0xac, 0x5f, 0x6d, 0x47, 0x6a, 0x06, 0x5a, 0x20, 0xae, 0xfa, 0xa3, - 0x67, 0x6a, 0xe5, 0x59, 0xaa, 0xa0, 0x60, 0xaa, 0x47, 0x62, 0xc6, 0x59, 0xa8, 0x38, 0xa9, 0xa8, 0x88, 0x6a, 0x26, 0x62, 0x7d, 0x3e, 0xd5, 0xfd, 0x47, 0x6a, 0x05, 0x5a, 0x8b, 0xba, 0xda, 0x7a, - 0x47, 0x6a, 0x06, 0x5a, 0xfd, 0xaa, 0xfa, 0xab, 0x67, 0x6a, 0x06, 0x62, 0xaf, 0xf5, 0x8d, 0x0f, 0x67, 0x6a, 0xe6, 0x59, 0xfe, 0xaf, 0x02, 0x9a, 0x87, 0x6a, 0x06, 0x62, 0xff, 0xf3, 0x2a, 0x5f, - 0x87, 0x6a, 0x06, 0x62, 0x7f, 0x82, 0xfa, 0xdf, 0x67, 0x6a, 0x06, 0x62, 0xea, 0x82, 0xd5, 0xae, 0x67, 0x6a, 0x26, 0x62, 0xdc, 0x2a, 0xe9, 0x5f, 0x67, 0x6a, 0x26, 0x62, 0xb7, 0x3b, 0xb8, 0x8e, - 0x67, 0x6a, 0x26, 0x62, 0x65, 0xb0, 0xc8, 0xba, 0x67, 0x6a, 0x26, 0x62, 0xfd, 0xe2, 0x0e, 0xab, 0x67, 0x72, 0x26, 0x62, 0xfa, 0xba, 0xab, 0xaa, 0x87, 0x72, 0x26, 0x62, 0xfd, 0x8a, 0xba, 0xbf, - 0x67, 0x6a, 0x46, 0x62, 0x47, 0xf7, 0x38, 0x3e, 0x68, 0x72, 0x27, 0x62, 0xee, 0xbf, 0x28, 0x22, 0xcd, 0x9b, 0x47, 0x6a, 0x55, 0x55, 0x55, 0x2b, 0x0c, 0xa4, 0x27, 0x62, 0xd5, 0xff, 0xff, 0x00, - 0x6c, 0xb4, 0x67, 0x6a, 0x55, 0xd5, 0x2b, 0x00, 0x4c, 0xb4, 0x68, 0x72, 0x55, 0x0b, 0x00, 0x00, 0x8c, 0xbc, 0x6b, 0x8b, 0xad, 0x0a, 0x28, 0xaa, 0x8d, 0xbc, 0xea, 0xab, 0x0a, 0xaa, 0xf8, 0xde, - 0x8d, 0xbc, 0xc9, 0xab, 0x00, 0x82, 0xf7, 0x57, 0x6c, 0xbc, 0xa9, 0xa3, 0x00, 0x00, 0xfd, 0x72, 0xad, 0xc4, 0xa8, 0xab, 0xaa, 0x0a, 0xfe, 0x7d, 0xed, 0xcc, 0x68, 0xa3, 0xa2, 0x2a, 0x97, 0xd5, - 0x2c, 0xb4, 0x03, 0x31, 0x55, 0x57, 0x56, 0x54, 0x86, 0x39, 0x25, 0x29, 0xdf, 0xde, 0xd6, 0x3e, 0xc6, 0x41, 0xe4, 0x20, 0x8b, 0xea, 0xdf, 0xaf, 0x86, 0x39, 0x04, 0x21, 0x77, 0x75, 0x8b, 0xe2, - 0xc6, 0x41, 0x25, 0x29, 0xfd, 0xad, 0xaf, 0x0d, 0xe7, 0x49, 0x45, 0x31, 0xf5, 0xe8, 0x02, 0xea, 0xc7, 0x41, 0x24, 0x31, 0xdb, 0x2e, 0xc8, 0x2a, 0xe7, 0x41, 0x45, 0x39, 0x0d, 0xea, 0xb9, 0xea, - 0xe7, 0x41, 0x45, 0x39, 0x88, 0xbd, 0xbe, 0x7f, 0xc6, 0x41, 0x45, 0x39, 0x7e, 0xf8, 0xfc, 0x55, 0x65, 0x39, 0x04, 0x29, 0xa0, 0xb8, 0x7c, 0x6c, 0xc6, 0x41, 0x04, 0x31, 0x82, 0xfe, 0x7b, 0x8b, - 0x85, 0x41, 0x44, 0x31, 0x5d, 0x28, 0x7b, 0xda, 0x65, 0x39, 0xe3, 0x28, 0xea, 0x7c, 0x56, 0x2a, 0x06, 0x52, 0x25, 0x39, 0xfd, 0x7b, 0x7b, 0x82, 0xa5, 0x49, 0x03, 0x31, 0x6a, 0x6a, 0xa3, 0x22, - 0x65, 0x41, 0xe4, 0x30, 0xdf, 0xdf, 0xdf, 0xdc, 0xc6, 0x49, 0xe3, 0x28, 0x0b, 0xa1, 0xa9, 0xbd, 0xa5, 0x51, 0x44, 0x41, 0xca, 0xe0, 0xa6, 0x5f, 0x44, 0x41, 0xc3, 0x28, 0xae, 0xa4, 0xec, 0xfe, - 0xa5, 0x49, 0xc3, 0x20, 0x7b, 0xff, 0xed, 0x0b, 0xa6, 0x49, 0xe4, 0x28, 0xe5, 0x29, 0x2a, 0x00, 0x65, 0x49, 0x04, 0x31, 0x5e, 0x70, 0xfa, 0x57, 0x65, 0x39, 0xe4, 0x28, 0x09, 0x8f, 0x3a, 0x2f, - 0xe7, 0x51, 0x04, 0x39, 0xd6, 0xb5, 0xff, 0x2a, 0xa5, 0x59, 0x43, 0x59, 0x3d, 0xfb, 0x5f, 0xfc, 0xa4, 0x61, 0x43, 0x59, 0xbf, 0x8a, 0xf5, 0x83, 0x43, 0x61, 0xa4, 0x59, 0xaa, 0xaa, 0x99, 0xa7, - 0x64, 0x61, 0x83, 0x59, 0xc8, 0x5b, 0x88, 0xf0, 0x84, 0x61, 0x63, 0x59, 0xed, 0xd5, 0x3a, 0x82, 0x84, 0x61, 0x42, 0x59, 0xf5, 0xe2, 0x2a, 0xa0, 0xa4, 0x61, 0x63, 0x59, 0x77, 0xa3, 0xf7, 0x2b, - 0xa4, 0x61, 0x23, 0x59, 0xb7, 0x9e, 0xbf, 0xe8, 0x84, 0x61, 0x43, 0x59, 0x8b, 0xa8, 0x2b, 0x16, 0x83, 0x61, 0x64, 0x59, 0xa2, 0x6e, 0x9e, 0xd6, 0xa4, 0x61, 0x63, 0x59, 0x87, 0xb6, 0xea, 0x55, - 0xa4, 0x61, 0x23, 0x51, 0xae, 0xe8, 0xaf, 0xd7, 0xa4, 0x59, 0x23, 0x51, 0x8a, 0xaa, 0xbf, 0xdf, 0x84, 0x59, 0x22, 0x49, 0x28, 0x28, 0xee, 0x75, 0x63, 0x59, 0xc2, 0x40, 0x00, 0xa8, 0xfb, 0x57, - 0x64, 0x59, 0xc1, 0x38, 0x00, 0x8a, 0xbf, 0x7d, 0x83, 0x59, 0xa2, 0x30, 0x00, 0xaa, 0xaa, 0x57, 0xc4, 0x61, 0x82, 0x38, 0xa0, 0xaa, 0xbf, 0x57, 0x84, 0x59, 0xc2, 0x40, 0x00, 0x20, 0xea, 0xd5, - 0x83, 0x59, 0xa1, 0x30, 0x00, 0x80, 0x7e, 0xaa, 0x83, 0x61, 0x82, 0x30, 0x00, 0xaa, 0xd5, 0xaa, 0x83, 0x61, 0xc1, 0x48, 0x2a, 0x37, 0xbf, 0xaa, 0xc4, 0x61, 0x01, 0x59, 0x0a, 0xdf, 0xff, 0xbf, - 0x83, 0x61, 0xc2, 0x50, 0x0a, 0xa7, 0xea, 0xa0, 0x63, 0x69, 0x02, 0x49, 0x5f, 0xaa, 0x2a, 0x00, 0x82, 0x69, 0x61, 0x28, 0x7a, 0xaa, 0x00, 0x00, 0x83, 0x71, 0xa2, 0x30, 0xd5, 0xaa, 0x02, 0x08, - 0xa3, 0x71, 0xe1, 0x50, 0xf5, 0xfb, 0xaa, 0x28, 0x83, 0x69, 0x21, 0x59, 0x5d, 0xfa, 0x02, 0x80, 0x82, 0x69, 0x01, 0x59, 0xf5, 0x79, 0xa8, 0xa2, 0x82, 0x69, 0x21, 0x59, 0x55, 0xff, 0xee, 0x2a, - 0x63, 0x69, 0x21, 0x61, 0x55, 0xff, 0xec, 0xe8, 0x42, 0x69, 0x21, 0x61, 0x9b, 0x8a, 0xfa, 0x49, 0x63, 0x69, 0x01, 0x61, 0x2f, 0x3b, 0x2d, 0x2a, 0xe3, 0x71, 0x22, 0x61, 0x37, 0xff, 0xff, 0xae, - 0x8a, 0x83, 0x62, 0x61, 0xfd, 0xb5, 0x35, 0x3d, 0xcd, 0x83, 0xa9, 0x5a, 0xf5, 0xbf, 0xaa, 0x00, 0xcd, 0x83, 0x49, 0x4a, 0x5e, 0xaa, 0x00, 0x00, 0xcd, 0x83, 0x28, 0x4a, 0xb5, 0x0a, 0x00, 0x00, - 0xed, 0x83, 0x4b, 0x73, 0xb5, 0xff, 0xaa, 0x0a, 0xcd, 0x83, 0x6b, 0x73, 0x4a, 0x57, 0xfe, 0xda, 0x8c, 0x7b, 0xca, 0x62, 0x01, 0xa0, 0xb8, 0xaa, 0xac, 0x83, 0x2a, 0x6b, 0x2a, 0xff, 0x5d, 0x55, - 0xcc, 0x83, 0x2b, 0x6b, 0xa8, 0xff, 0xff, 0x7d, 0x0d, 0x84, 0x4b, 0x73, 0x2b, 0xff, 0x55, 0x5d, 0xcd, 0x83, 0x2b, 0x63, 0xe0, 0xea, 0x7f, 0x7f, 0x8c, 0x7b, 0x0a, 0x63, 0x02, 0x2b, 0xd5, 0xff, - 0xad, 0x7b, 0x4b, 0x73, 0x2e, 0xaa, 0xf5, 0xfd, 0x8c, 0x7b, 0x2b, 0x6b, 0x8a, 0xea, 0x6a, 0x22, 0xad, 0x7b, 0x4b, 0x6b, 0xfa, 0xf5, 0xa7, 0x28, 0xad, 0x7b, 0x4b, 0x73, 0xb5, 0xaa, 0x2a, 0xa8, - 0xac, 0x7b, 0x4b, 0x73, 0x2e, 0xd7, 0xff, 0xff, 0xac, 0x7b, 0x4b, 0x73, 0xe8, 0x7b, 0xf5, 0xdf, 0x6b, 0x7b, 0x0a, 0x73, 0x70, 0x7a, 0xff, 0xde, 0x6b, 0x7b, 0xea, 0x6a, 0x5e, 0x77, 0x77, 0x2f, - 0x6b, 0x7b, 0xaa, 0x62, 0x57, 0xff, 0x2a, 0x00, 0x6b, 0x7b, 0xa9, 0x62, 0xd7, 0xaa, 0x00, 0x00, 0x6b, 0x7b, 0x89, 0x5a, 0xfd, 0x00, 0xa8, 0xaa, 0x6b, 0x7b, 0xe9, 0x6a, 0x09, 0xe8, 0xa8, 0xaa, - 0x47, 0x6a, 0xe6, 0x61, 0x8f, 0x00, 0x20, 0xde, 0x67, 0x6a, 0x06, 0x62, 0xa7, 0x7a, 0xe8, 0xf7, 0x47, 0x6a, 0x06, 0x62, 0xee, 0xa2, 0x8a, 0xfd, 0x47, 0x6a, 0xa6, 0x59, 0x22, 0x80, 0xde, 0x08, - 0x47, 0x6a, 0xe6, 0x61, 0x0a, 0xd7, 0xdd, 0x2a, 0x67, 0x6a, 0xe5, 0x61, 0xea, 0x57, 0xff, 0xa8, 0x88, 0x6a, 0x06, 0x62, 0x55, 0xd5, 0xf7, 0x3b, 0x67, 0x6a, 0x06, 0x62, 0xff, 0xff, 0xe5, 0x22, - 0x47, 0x6a, 0xe6, 0x61, 0xda, 0xa8, 0x2a, 0x00, 0x87, 0x6a, 0x06, 0x62, 0xaf, 0xbd, 0x7f, 0x2a, 0x87, 0x6a, 0x06, 0x5a, 0xaa, 0xfa, 0xad, 0xa2, 0x67, 0x6a, 0x06, 0x5a, 0xb8, 0x6b, 0xa2, 0xe3, - 0xc8, 0x6a, 0x27, 0x62, 0xcd, 0xfd, 0xf5, 0x55, 0x88, 0x6a, 0x26, 0x62, 0xdb, 0xfa, 0x8a, 0xba, 0x67, 0x6a, 0x26, 0x62, 0x76, 0x6c, 0x9a, 0xab, 0x66, 0x6a, 0x27, 0x62, 0xad, 0xf9, 0x56, 0x7c, - 0x87, 0x6a, 0x06, 0x62, 0xff, 0xb8, 0xd5, 0x62, 0x66, 0x6a, 0x07, 0x5a, 0xaa, 0xfa, 0x7f, 0xa9, 0x47, 0x6a, 0xe6, 0x59, 0x80, 0x9c, 0x82, 0xbe, 0x47, 0x6a, 0x06, 0x5a, 0xbb, 0xaa, 0xee, 0xfa, - 0x47, 0x6a, 0x26, 0x5a, 0xfa, 0xbf, 0x8b, 0xeb, 0x46, 0x6a, 0x07, 0x62, 0x75, 0x2a, 0xfa, 0x9d, 0x87, 0x6a, 0xe5, 0x59, 0xcd, 0xee, 0xaa, 0xff, 0x67, 0x6a, 0x25, 0x62, 0x57, 0xcd, 0x7d, 0x5d, - 0x47, 0x6a, 0x06, 0x62, 0x20, 0xa0, 0xff, 0x57, 0x66, 0x6a, 0xe5, 0x61, 0xaa, 0xae, 0x89, 0x7f, 0x47, 0x6a, 0xe5, 0x61, 0xa2, 0xea, 0xba, 0x76, 0x67, 0x72, 0x06, 0x62, 0x7e, 0xff, 0xae, 0x0e, - 0xe8, 0x82, 0x26, 0x62, 0x7f, 0x55, 0xaf, 0x2a, 0xaa, 0x9b, 0x27, 0x62, 0x55, 0x75, 0x0a, 0xaa, 0xea, 0xab, 0x27, 0x62, 0x55, 0xfd, 0xaa, 0x82, 0xcb, 0xa3, 0x68, 0x6a, 0x55, 0x2a, 0x80, 0x02, - 0xca, 0xa3, 0x69, 0x6a, 0x95, 0x28, 0x02, 0x02, 0xcb, 0xa3, 0x07, 0x8b, 0x8b, 0xa2, 0xa0, 0x7e, 0x0b, 0xac, 0xa7, 0x82, 0x02, 0xaa, 0xaa, 0xdd, 0x2b, 0xb4, 0xa6, 0x8a, 0x82, 0xbf, 0xfa, 0xed, - 0x0b, 0xac, 0xe7, 0x8a, 0xa8, 0xaa, 0xdf, 0xaf, 0xeb, 0xab, 0xa6, 0x8a, 0x0f, 0x0a, 0x8b, 0xa6, 0x4b, 0xb4, 0x48, 0xa3, 0x82, 0xfa, 0xff, 0x5d, 0x0b, 0xb4, 0x47, 0x9b, 0x00, 0xaa, 0xeb, 0x7f, - 0x0a, 0xb4, 0x64, 0x8a, 0xa0, 0xaa, 0xaa, 0x7a, 0xc9, 0xab, 0x43, 0x82, 0x00, 0xaa, 0x7a, 0x55, 0xea, 0xb3, 0x46, 0x82, 0x00, 0x2a, 0xad, 0xad, 0x6c, 0xc4, 0x69, 0xa3, 0xbf, 0xbf, 0x2d, 0x2f, - 0x8c, 0xc4, 0xe3, 0x28, 0x58, 0x58, 0x56, 0x57, 0xe7, 0x41, 0x04, 0x29, 0x0f, 0xaf, 0xed, 0xb5, 0xa7, 0x41, 0x65, 0x39, 0x0a, 0xe0, 0xf7, 0xf2, 0xa6, 0x41, 0x45, 0x31, 0x7c, 0x2a, 0x2e, 0xae, - 0xe6, 0x41, 0x25, 0x31, 0xf5, 0x0a, 0xef, 0xab, 0xc6, 0x41, 0x45, 0x39, 0xaf, 0xe8, 0x75, 0x56, 0x06, 0x4a, 0x45, 0x31, 0xff, 0xfd, 0xbf, 0xa1, 0xe6, 0x49, 0x04, 0x29, 0xff, 0x82, 0x62, 0x5e, - 0x65, 0x41, 0xe3, 0x28, 0x08, 0xf7, 0xd5, 0xaf, 0xa5, 0x49, 0x04, 0x31, 0xde, 0xd5, 0x25, 0x6a, 0xa6, 0x49, 0x04, 0x29, 0xb7, 0xba, 0xf2, 0xff, 0xa6, 0x49, 0xe4, 0x30, 0x02, 0x80, 0x89, 0x89, - 0x85, 0x49, 0x04, 0x39, 0xb7, 0x36, 0xde, 0xdc, 0x85, 0x41, 0x04, 0x31, 0x2e, 0x78, 0xde, 0xba, 0x26, 0x52, 0x03, 0x29, 0xc3, 0xa9, 0xfd, 0xd5, 0x27, 0x52, 0x44, 0x39, 0xeb, 0xab, 0xf3, 0x79, - 0xe6, 0x51, 0x04, 0x31, 0x57, 0x58, 0x7e, 0x7f, 0xc6, 0x49, 0xe3, 0x30, 0xf5, 0xa5, 0x17, 0x55, 0xc6, 0x49, 0x04, 0x39, 0x0b, 0xed, 0xfe, 0x7f, 0x85, 0x49, 0x04, 0x39, 0xd6, 0x70, 0xff, 0xbe, - 0xe6, 0x59, 0x24, 0x39, 0xa5, 0x29, 0xad, 0x75, 0x06, 0x52, 0xe4, 0x28, 0x2a, 0x80, 0x5f, 0xbf, 0x0a, 0x6b, 0xe3, 0x30, 0xfe, 0x7f, 0x55, 0x3f, 0x6a, 0x83, 0x25, 0x31, 0x57, 0x55, 0x2d, 0x80, - 0xcc, 0x8b, 0x64, 0x41, 0x35, 0xa9, 0xf8, 0x75, 0x46, 0x6a, 0x63, 0x51, 0x54, 0xd6, 0x57, 0x55, 0xc4, 0x61, 0x63, 0x59, 0xff, 0x09, 0xab, 0x7b, 0xc4, 0x61, 0x83, 0x59, 0xb9, 0xa8, 0xf2, 0xaf, - 0xc4, 0x61, 0x43, 0x51, 0xe2, 0xaa, 0x7a, 0x7a, 0xa4, 0x61, 0xe2, 0x48, 0x0a, 0x88, 0xaa, 0xdf, 0xa3, 0x61, 0xa1, 0x40, 0x00, 0x88, 0xaa, 0x5f, 0x83, 0x61, 0x81, 0x30, 0x80, 0x20, 0xaa, 0xf5, - 0x63, 0x59, 0xc1, 0x40, 0x00, 0x00, 0xab, 0xd5, 0x63, 0x59, 0x81, 0x38, 0x00, 0x08, 0x7f, 0xff, 0x63, 0x61, 0x61, 0x28, 0xa0, 0xaa, 0xd5, 0xea, 0x63, 0x59, 0xa2, 0x38, 0x00, 0x7e, 0xd5, 0xff, - 0x23, 0x51, 0xa1, 0x30, 0x20, 0x75, 0xaa, 0xa2, 0x03, 0x51, 0x81, 0x38, 0xa0, 0xd5, 0xaf, 0x2b, 0x03, 0x59, 0xa1, 0x30, 0x7b, 0xef, 0xea, 0x22, 0x03, 0x59, 0xa1, 0x30, 0x55, 0xaa, 0x2a, 0x00, - 0x23, 0x59, 0x81, 0x28, 0xfd, 0x82, 0x00, 0x80, 0x43, 0x61, 0xc1, 0x48, 0xfd, 0xbf, 0x2a, 0x82, 0xa3, 0x69, 0xe2, 0x58, 0xfd, 0xaf, 0xaf, 0x0f, 0x83, 0x69, 0x02, 0x59, 0xfd, 0x2a, 0xaa, 0x2a, - 0xa3, 0x69, 0x42, 0x59, 0xcf, 0xaa, 0xea, 0x7f, 0xa3, 0x69, 0x42, 0x61, 0xf5, 0x28, 0x25, 0xbf, 0xa3, 0x69, 0x42, 0x61, 0xfd, 0xa8, 0xb8, 0x7e, 0xc4, 0x69, 0x22, 0x59, 0xbe, 0xaa, 0x5c, 0xfb, - 0xa3, 0x69, 0x62, 0x61, 0xa6, 0x0a, 0x8d, 0x3e, 0xa3, 0x69, 0x62, 0x61, 0xa8, 0xd8, 0x3e, 0x20, 0xa3, 0x69, 0x42, 0x59, 0xea, 0x6a, 0x7a, 0xb8, 0x83, 0x69, 0x22, 0x61, 0x0a, 0xdf, 0xbb, 0x8a, - 0xa3, 0x69, 0x22, 0x59, 0x00, 0x2d, 0xed, 0xaf, 0xc3, 0x71, 0x62, 0x61, 0xaf, 0xaf, 0x2f, 0xaf, 0xa2, 0x71, 0x42, 0x61, 0x7e, 0xff, 0xa8, 0xea, 0xa2, 0x69, 0x43, 0x61, 0x5f, 0x6f, 0x8a, 0x6a, - 0x83, 0x69, 0x42, 0x61, 0xe6, 0x74, 0xac, 0x1c, 0xc4, 0x69, 0x42, 0x61, 0xd7, 0xf7, 0xbd, 0x0f, 0x25, 0x72, 0x42, 0x69, 0x55, 0xbf, 0xaf, 0x0a, 0x49, 0x9b, 0x82, 0x69, 0xfd, 0xab, 0xbf, 0x2b, - 0x2c, 0xac, 0x24, 0x7a, 0x3d, 0xbd, 0xad, 0xab, 0xac, 0x83, 0x0b, 0x63, 0xa0, 0xe8, 0x7f, 0xfc, 0xad, 0x7b, 0x0b, 0x6b, 0xa8, 0xef, 0xfd, 0xbf, 0xad, 0x7b, 0x2b, 0x6b, 0x2b, 0xbd, 0x8f, 0xe8, - 0xcd, 0x7b, 0x4c, 0x73, 0xa8, 0xff, 0x3d, 0xf5, 0x0e, 0x8c, 0x6b, 0x73, 0xff, 0x7d, 0x0f, 0xff, 0x0d, 0x8c, 0x4b, 0x73, 0x77, 0xff, 0xf8, 0x7d, 0x8c, 0x7b, 0x4b, 0x6b, 0x7d, 0x7b, 0xf0, 0xa2, - 0x8c, 0x7b, 0x4b, 0x6b, 0xf9, 0xad, 0xbf, 0x2a, 0xed, 0x83, 0x4c, 0x73, 0x5d, 0xf5, 0xaf, 0x2f, 0xcd, 0x83, 0x6b, 0x73, 0x55, 0xaf, 0xea, 0xa0, 0xcc, 0x83, 0x4b, 0x73, 0xf7, 0xaa, 0xaa, 0xa8, - 0xcd, 0x83, 0x8c, 0x73, 0xf5, 0xf7, 0x7e, 0xa3, 0xac, 0x7b, 0x4b, 0x73, 0x00, 0x8a, 0xeb, 0x5c, 0xac, 0x7b, 0x2b, 0x73, 0xa2, 0xfc, 0xff, 0x5f, 0x8c, 0x73, 0x0b, 0x6b, 0xa8, 0xdf, 0xaa, 0xbf, - 0xed, 0x83, 0x4b, 0x73, 0xd5, 0x55, 0xab, 0xa2, 0xec, 0x83, 0x4b, 0x6b, 0x75, 0x57, 0xa2, 0xff, 0x8c, 0x7b, 0xca, 0x62, 0xaa, 0x27, 0x82, 0x00, 0xcc, 0x83, 0x2b, 0x73, 0xf5, 0xe2, 0x57, 0xf7, - 0x8c, 0x7b, 0xea, 0x72, 0x00, 0xfe, 0x5d, 0xec, 0x4b, 0x7b, 0x89, 0x62, 0x20, 0x00, 0x27, 0xaa, 0x6b, 0x7b, 0x2a, 0x73, 0x8d, 0x97, 0xf5, 0x5d, 0x6b, 0x7b, 0xe9, 0x62, 0x3b, 0x0a, 0xa2, 0x5f, - 0x68, 0x6a, 0x06, 0x62, 0xdf, 0x80, 0x0a, 0x2a, 0x67, 0x6a, 0x26, 0x62, 0x4f, 0x37, 0x02, 0x8b, 0x68, 0x6a, 0x27, 0x62, 0xb5, 0x2e, 0x80, 0xab, 0x87, 0x6a, 0x47, 0x62, 0xfd, 0xb2, 0xef, 0xf6, - 0x68, 0x6a, 0x26, 0x62, 0xf7, 0x3e, 0x78, 0xb2, 0x68, 0x6a, 0x26, 0x62, 0x2e, 0xf0, 0x7b, 0x5e, 0x68, 0x6a, 0x06, 0x62, 0xa0, 0xe0, 0xbe, 0x7a, 0x88, 0x6a, 0x06, 0x62, 0x5f, 0xf2, 0x5f, 0xb5, - 0x68, 0x6a, 0x27, 0x62, 0xa5, 0xeb, 0x7b, 0xe5, 0x67, 0x6a, 0xe6, 0x59, 0x7e, 0xa2, 0xaf, 0xba, 0x67, 0x6a, 0x06, 0x62, 0xd5, 0x82, 0xff, 0xaa, 0x68, 0x6a, 0x27, 0x62, 0xa5, 0x49, 0x57, 0xda, - 0x68, 0x6a, 0xe6, 0x59, 0xaa, 0xa8, 0xaa, 0xfe, 0x47, 0x6a, 0xe6, 0x59, 0xa8, 0xa0, 0xaa, 0x75, 0x47, 0x62, 0xc6, 0x51, 0x80, 0xba, 0xaa, 0xf7, 0x27, 0x62, 0xa6, 0x49, 0x00, 0x20, 0xab, 0x7f, - 0x47, 0x6a, 0xa5, 0x51, 0xa2, 0xba, 0xfe, 0x55, 0x27, 0x62, 0x03, 0x41, 0x00, 0x00, 0xea, 0x5f, 0x06, 0x62, 0x03, 0x41, 0x00, 0xa2, 0xba, 0xd7, 0x26, 0x62, 0x03, 0x41, 0x00, 0x2a, 0xfa, 0x55, - 0x46, 0x6a, 0x03, 0x39, 0xaa, 0x8a, 0x55, 0x55, 0x05, 0x62, 0xe2, 0x38, 0x00, 0xa0, 0x75, 0x5d, 0xc4, 0x59, 0xa2, 0x30, 0xa0, 0x5f, 0x55, 0xd5, 0x07, 0x5a, 0x03, 0x39, 0x7b, 0x57, 0x5d, 0xac, - 0xa7, 0x82, 0xc3, 0x38, 0xfb, 0xfd, 0xaf, 0x0b, 0xe8, 0x8a, 0x43, 0x51, 0x75, 0xf7, 0xaa, 0x00, 0x08, 0x8b, 0x64, 0x51, 0xf5, 0x0a, 0x9a, 0x08, 0x28, 0x8b, 0x05, 0x72, 0xab, 0xaa, 0x0a, 0x9f, - 0xaa, 0xa3, 0xc7, 0x82, 0xbf, 0x95, 0x2f, 0xff, 0x89, 0x9b, 0xa6, 0x82, 0x2f, 0x2a, 0xa5, 0x8b, 0x89, 0xa3, 0x28, 0x93, 0xf8, 0x1a, 0xf5, 0xe5, 0xa9, 0xa3, 0x48, 0x93, 0xbd, 0xf8, 0xd5, 0x77, - 0x89, 0xa3, 0xe7, 0x8a, 0xa0, 0x6a, 0xa8, 0x0b, 0xa9, 0x9b, 0xc8, 0x8a, 0xff, 0xad, 0x0a, 0x2e, 0x89, 0x9b, 0x28, 0x8b, 0xf6, 0xba, 0x7a, 0xa1, 0x69, 0x9b, 0x07, 0x93, 0xb2, 0xfc, 0xa9, 0x74, - 0xaa, 0xa3, 0xe6, 0x92, 0xaa, 0xab, 0xe8, 0x55, 0xa9, 0xa3, 0xc4, 0x71, 0x02, 0xba, 0x2a, 0xd7, 0x68, 0xa3, 0xa4, 0x69, 0x20, 0x28, 0xa8, 0x57, 0x88, 0xa3, 0xc4, 0x69, 0x80, 0xa0, 0xaa, 0x75, - 0xe7, 0x92, 0xc3, 0x69, 0x77, 0xa8, 0x0a, 0x0a, 0x07, 0x93, 0xc5, 0x71, 0xd5, 0xab, 0xaa, 0x08, 0x0b, 0xb4, 0x86, 0x82, 0xad, 0xab, 0x2d, 0x2b, 0xad, 0xc4, 0x89, 0xa3, 0x3d, 0x2f, 0x2b, 0x4a, - 0x63, 0x49, 0x04, 0x29, 0x5c, 0xe8, 0x5e, 0xda, 0x86, 0x39, 0xe4, 0x28, 0x0b, 0x7f, 0x75, 0xfa, 0x44, 0x31, 0xc3, 0x20, 0x00, 0xff, 0xf7, 0xa0, 0x24, 0x39, 0xe3, 0x28, 0xf2, 0x5f, 0x76, 0x5a, - 0x45, 0x39, 0xc4, 0x20, 0x0a, 0x5f, 0xfd, 0x7d, 0x04, 0x29, 0xc3, 0x20, 0x3c, 0xbd, 0xd5, 0x9f, 0x85, 0x49, 0xc3, 0x20, 0x8b, 0x2d, 0xf5, 0xf5, 0x25, 0x39, 0xe3, 0x28, 0xd7, 0xfc, 0xf9, 0xe0, - 0xa6, 0x51, 0x04, 0x31, 0xed, 0xb9, 0xbf, 0xb8, 0x85, 0x49, 0x03, 0x39, 0x2e, 0x88, 0x68, 0x5e, 0x85, 0x41, 0xc3, 0x28, 0xfc, 0xfe, 0xf7, 0xf7, 0xe6, 0x49, 0xc3, 0x28, 0x0d, 0x3f, 0xfd, 0xd5, - 0xa6, 0x49, 0x04, 0x29, 0xf8, 0xe8, 0xeb, 0xb5, 0x86, 0x59, 0x65, 0x31, 0xa2, 0xbd, 0xbd, 0xfd, 0xa5, 0x49, 0x04, 0x31, 0x5a, 0x7c, 0x78, 0x60, 0xa6, 0x49, 0x04, 0x31, 0x35, 0xa7, 0xed, 0xad, - 0x85, 0x49, 0x24, 0x39, 0x70, 0x5e, 0x7f, 0x7f, 0x25, 0x39, 0xc3, 0x20, 0x7f, 0xec, 0xde, 0xbe, 0x07, 0x52, 0xe3, 0x28, 0xfd, 0xfd, 0xfd, 0x3d, 0xa9, 0x62, 0x24, 0x39, 0x5f, 0x55, 0x7f, 0x2c, - 0x0b, 0x73, 0xe4, 0x28, 0xf5, 0xe5, 0xff, 0x2a, 0x2c, 0x9c, 0x86, 0x41, 0x55, 0xab, 0x8f, 0xae, 0x4d, 0x9c, 0x84, 0x41, 0x2a, 0xcb, 0x7e, 0x57, 0xea, 0x9b, 0x24, 0x31, 0x78, 0xdd, 0x5f, 0x55, - 0x6b, 0x83, 0x65, 0x39, 0x5f, 0xd7, 0xff, 0x0b, 0xa9, 0x62, 0x63, 0x49, 0xbf, 0xcb, 0xd6, 0x78, 0x43, 0x61, 0x02, 0x41, 0x2f, 0xf7, 0xa2, 0x08, 0x83, 0x61, 0x02, 0x51, 0xa0, 0xfd, 0xad, 0xaa, - 0x63, 0x61, 0xe1, 0x48, 0x66, 0x8a, 0x00, 0x00, 0x83, 0x69, 0xc2, 0x48, 0x55, 0xbf, 0x2a, 0xaa, 0x63, 0x61, 0xe2, 0x50, 0x55, 0xaa, 0x80, 0x80, 0x63, 0x61, 0xe2, 0x50, 0xfd, 0xaa, 0xb2, 0x82, - 0x43, 0x59, 0xe1, 0x50, 0x7b, 0xa2, 0x00, 0x28, 0x43, 0x61, 0x01, 0x51, 0x55, 0xea, 0xea, 0xf8, 0x23, 0x59, 0xc2, 0x50, 0x9e, 0xa8, 0x0b, 0x20, 0x43, 0x59, 0xe1, 0x50, 0xff, 0xbe, 0x20, 0x8a, - 0x23, 0x61, 0xe1, 0x50, 0xeb, 0xaa, 0xa0, 0xf8, 0x23, 0x59, 0xc1, 0x50, 0xba, 0xab, 0xea, 0x72, 0xe2, 0x58, 0x23, 0x51, 0xfa, 0xba, 0x28, 0xfe, 0x23, 0x59, 0x02, 0x51, 0x8a, 0x01, 0x40, 0x55, - 0x43, 0x59, 0xe1, 0x50, 0xba, 0xfb, 0x7f, 0x7b, 0x23, 0x59, 0xe1, 0x50, 0xf7, 0x8f, 0xbf, 0xbb, 0x43, 0x59, 0xe1, 0x48, 0xa3, 0xff, 0xbd, 0xbb, 0x43, 0x61, 0x02, 0x51, 0xaf, 0x7d, 0x75, 0x55, - 0x43, 0x61, 0x01, 0x51, 0x2e, 0xaf, 0xf5, 0x7f, 0x63, 0x69, 0x02, 0x51, 0x2a, 0xad, 0xd7, 0x55, 0x63, 0x69, 0xe1, 0x50, 0xa8, 0xfe, 0x5f, 0xfd, 0x83, 0x69, 0xe2, 0x50, 0x80, 0xff, 0x77, 0x55, - 0xe3, 0x71, 0x42, 0x59, 0xf3, 0xa9, 0xa9, 0xad, 0xa3, 0x71, 0x62, 0x61, 0xbb, 0xe8, 0xd8, 0xe6, 0xa3, 0x69, 0x42, 0x59, 0xe2, 0xfa, 0x7a, 0xee, 0x83, 0x61, 0x22, 0x59, 0xae, 0x7f, 0x0b, 0xa8, - 0xa3, 0x69, 0x02, 0x59, 0xaf, 0x8d, 0xbf, 0x0b, 0xc3, 0x71, 0x62, 0x61, 0x3f, 0xe7, 0xff, 0x7f, 0xc3, 0x69, 0x42, 0x61, 0xbe, 0xf8, 0xea, 0xdd, 0xa3, 0x69, 0x42, 0x61, 0xaf, 0xea, 0x3d, 0xee, - 0xc4, 0x69, 0x62, 0x61, 0xb9, 0x5d, 0xf5, 0x3d, 0x85, 0x82, 0x83, 0x61, 0xfd, 0xaf, 0x0b, 0x0a, 0x89, 0x9b, 0x25, 0x7a, 0xbd, 0xbf, 0x29, 0x2a, 0xea, 0xab, 0xc7, 0x8a, 0xbd, 0xaf, 0xab, 0x2a, - 0x8d, 0xb4, 0x69, 0xa3, 0xb5, 0x2f, 0x2b, 0x2f, 0xed, 0x8b, 0x4b, 0x73, 0xb7, 0xe8, 0x7f, 0xfa, 0xcd, 0x83, 0x4b, 0x73, 0xa8, 0xab, 0xb5, 0x02, 0xee, 0x8b, 0x6c, 0x73, 0x7f, 0xbf, 0xaa, 0x0a, - 0xcd, 0x83, 0x6c, 0x7b, 0xbf, 0xb5, 0x27, 0xac, 0xcd, 0x83, 0x8c, 0x7b, 0x76, 0x0a, 0x00, 0x0a, 0xed, 0x83, 0x6c, 0x7b, 0xd5, 0xf7, 0x82, 0xbf, 0xcd, 0x83, 0x4b, 0x73, 0xdf, 0xfe, 0xaa, 0xca, - 0xad, 0x83, 0x2a, 0x73, 0xd7, 0x7f, 0xa0, 0x5f, 0x8c, 0x7b, 0x0b, 0x6b, 0x2a, 0xf5, 0xbe, 0x2f, 0xac, 0x83, 0x0a, 0x6b, 0x80, 0x25, 0x0a, 0xea, 0xed, 0x83, 0x4b, 0x73, 0xaa, 0x02, 0xa2, 0xf5, - 0x4e, 0x9c, 0x0a, 0x6b, 0xff, 0xca, 0x57, 0xff, 0xac, 0x7b, 0x0a, 0x73, 0x2a, 0x7e, 0x55, 0x5f, 0xec, 0x83, 0xca, 0x62, 0xe8, 0xff, 0xd7, 0x57, 0x6b, 0x73, 0x0a, 0x6b, 0x7a, 0x7f, 0x80, 0xcd, - 0xac, 0x7b, 0xea, 0x62, 0x5f, 0x5f, 0x0b, 0xbf, 0xcd, 0x83, 0xca, 0x62, 0xf5, 0xad, 0x00, 0xaa, 0xcd, 0x83, 0x2b, 0x6b, 0x75, 0xaa, 0x80, 0xfa, 0xac, 0x7b, 0x2b, 0x73, 0xd5, 0x78, 0xc0, 0x23, - 0xac, 0x7b, 0x4b, 0x73, 0x57, 0x97, 0xa8, 0x7a, 0x8c, 0x7b, 0x0a, 0x73, 0x70, 0xf8, 0x68, 0xeb, 0x6b, 0x73, 0xea, 0x6a, 0x27, 0xfd, 0xab, 0xfa, 0x6c, 0x7b, 0xea, 0x62, 0x7e, 0x8a, 0x22, 0x20, - 0x68, 0x6a, 0x26, 0x62, 0x7a, 0x3b, 0xf5, 0xdb, 0x68, 0x6a, 0x06, 0x5a, 0xa2, 0x0a, 0xea, 0xdf, 0x67, 0x6a, 0x06, 0x62, 0x0a, 0xed, 0xbf, 0xdf, 0x88, 0x6a, 0x06, 0x62, 0xa2, 0xfb, 0xeb, 0x57, - 0x47, 0x6a, 0xe6, 0x59, 0x68, 0x88, 0xff, 0xab, 0x88, 0x62, 0xe6, 0x59, 0x7d, 0xaa, 0x2d, 0xdf, 0x88, 0x6a, 0xc5, 0x59, 0xab, 0xaa, 0x02, 0xfd, 0xe8, 0x7a, 0xe6, 0x59, 0xd7, 0xf5, 0x00, 0xdf, - 0xc9, 0x7a, 0xe5, 0x51, 0xff, 0x2b, 0x7a, 0xf7, 0x4a, 0x8b, 0xc5, 0x51, 0xff, 0x02, 0x5d, 0x5f, 0xaa, 0x93, 0xa6, 0x51, 0xbf, 0x02, 0x57, 0x55, 0x08, 0x7b, 0xc6, 0x59, 0xf8, 0x7c, 0x55, 0xfd, - 0x27, 0x5a, 0x85, 0x49, 0xa0, 0xba, 0xae, 0x7a, 0x27, 0x5a, 0xa6, 0x49, 0xee, 0x9e, 0x0a, 0xdd, 0x06, 0x5a, 0x65, 0x39, 0x82, 0xa8, 0x88, 0x5f, 0xe5, 0x51, 0xe3, 0x30, 0xaa, 0x78, 0x7a, 0xff, - 0x64, 0x51, 0xc2, 0x28, 0xf8, 0x55, 0xf5, 0xea, 0x24, 0x49, 0xc2, 0x30, 0x8f, 0x2d, 0x02, 0x00, 0x44, 0x51, 0x03, 0x49, 0xef, 0x98, 0xca, 0x8f, 0x64, 0x51, 0x03, 0x49, 0x7f, 0x6f, 0x5f, 0xaf, - 0x44, 0x51, 0xe3, 0x40, 0x6f, 0xe2, 0xfe, 0x23, 0xc5, 0x59, 0xe2, 0x40, 0x55, 0xff, 0x2f, 0xf7, 0x05, 0x6a, 0xc3, 0x40, 0x55, 0xbf, 0x00, 0xd5, 0xc8, 0x82, 0x23, 0x49, 0xb6, 0xbe, 0xa2, 0xd7, - 0x07, 0x93, 0x02, 0x49, 0x8a, 0x02, 0xe0, 0x55, 0x27, 0x93, 0xe2, 0x48, 0xaa, 0x00, 0xff, 0xd5, 0x48, 0x93, 0x42, 0x59, 0xaa, 0x02, 0x55, 0x57, 0x69, 0x9b, 0x42, 0x59, 0xaa, 0x00, 0x69, 0xd9, - 0x48, 0x93, 0xc5, 0x61, 0x00, 0x00, 0x2d, 0x29, 0xa9, 0xa3, 0xa7, 0x82, 0xaa, 0xa0, 0xda, 0xde, 0xa9, 0x9b, 0xe7, 0x8a, 0xa0, 0xf7, 0xd5, 0xad, 0x89, 0x9b, 0x28, 0x93, 0x2e, 0xb2, 0x7d, 0xff, - 0x89, 0xa3, 0xa5, 0x8a, 0x80, 0xaa, 0xfe, 0x7a, 0x88, 0xa3, 0x62, 0x59, 0xa0, 0xa8, 0x7a, 0x57, 0xe5, 0x8a, 0x43, 0x51, 0xa8, 0x5e, 0x57, 0x55, 0xc4, 0x69, 0x23, 0x49, 0x80, 0xfe, 0x7f, 0xf5, - 0x04, 0x7a, 0x23, 0x49, 0x82, 0x7d, 0x55, 0xf5, 0x85, 0x7a, 0x03, 0x49, 0x2f, 0x57, 0x55, 0x57, 0x45, 0x72, 0x02, 0x49, 0x28, 0x2d, 0x55, 0x55, 0x86, 0x7a, 0x22, 0x51, 0x82, 0xe0, 0xfd, 0x55, - 0xa6, 0x82, 0x43, 0x59, 0xa9, 0x2b, 0x3a, 0xd5, 0x89, 0xa3, 0x25, 0x72, 0xad, 0x2b, 0x2b, 0xab, 0x2b, 0xb4, 0x89, 0xa3, 0x2d, 0x8b, 0xee, 0xe5, 0xee, 0xd4, 0x63, 0x49, 0xc2, 0x4a, 0x72, 0x72, - 0xc6, 0x49, 0x24, 0x29, 0xaf, 0xe8, 0x8a, 0x78, 0x85, 0x41, 0xc3, 0x20, 0xba, 0xa0, 0x78, 0xd7, 0x85, 0x39, 0xc3, 0x20, 0x7c, 0xbf, 0xff, 0xff, 0x86, 0x31, 0xc3, 0x28, 0x5f, 0x5f, 0xfd, 0x0a, - 0xc6, 0x39, 0xc4, 0x20, 0x55, 0x75, 0xab, 0xa8, 0x45, 0x29, 0xc3, 0x20, 0xf5, 0xd5, 0xef, 0x2a, 0x45, 0x31, 0xc3, 0x20, 0xf5, 0xa2, 0xab, 0xaa, 0x25, 0x39, 0xe3, 0x28, 0xaf, 0xee, 0xad, 0xab, - 0x44, 0x39, 0xe3, 0x28, 0x2f, 0xef, 0x6a, 0x6b, 0x44, 0x39, 0xc3, 0x28, 0xe8, 0xab, 0xcf, 0xe9, 0x04, 0x31, 0xc3, 0x20, 0x8e, 0x04, 0xb6, 0xa7, 0x24, 0x31, 0xc3, 0x20, 0xb4, 0xae, 0xb7, 0xcf, - 0x24, 0x31, 0xc3, 0x20, 0x3f, 0x76, 0x5d, 0x75, 0xa6, 0x41, 0xc3, 0x18, 0x2a, 0x2b, 0x2f, 0x35, 0xc6, 0x49, 0x04, 0x31, 0x57, 0xfc, 0xf0, 0x2e, 0xc6, 0x49, 0xe3, 0x28, 0x8d, 0xbf, 0xff, 0xa8, - 0x48, 0x5a, 0x04, 0x31, 0x57, 0x7f, 0xeb, 0x25, 0xe6, 0x51, 0x05, 0x31, 0xf5, 0xbf, 0x80, 0xf0, 0x49, 0x52, 0x24, 0x31, 0xff, 0xfb, 0xf7, 0x3f, 0x2d, 0x94, 0x24, 0x31, 0x55, 0x55, 0xdf, 0x82, - 0xec, 0x8b, 0x44, 0x31, 0xff, 0xd5, 0x8b, 0xbe, 0x4a, 0x73, 0x24, 0x39, 0x7d, 0xf2, 0xbf, 0xa8, 0xed, 0x8b, 0x45, 0x31, 0x55, 0xd7, 0x8a, 0xdf, 0x8a, 0x83, 0x66, 0x39, 0xbd, 0x0a, 0xf7, 0x2e, - 0x2d, 0x9c, 0x07, 0x52, 0x6b, 0xdf, 0x2b, 0x02, 0xe8, 0x7a, 0x22, 0x59, 0xfe, 0xfe, 0x7c, 0x7c, 0xa3, 0x61, 0x22, 0x59, 0x9f, 0x27, 0xae, 0xa3, 0xa3, 0x69, 0x42, 0x61, 0xff, 0xbe, 0xe7, 0xfd, - 0x83, 0x61, 0x42, 0x59, 0xba, 0xf2, 0xfe, 0xaa, 0x83, 0x61, 0x02, 0x59, 0x6a, 0x22, 0x0a, 0xb8, 0x44, 0x61, 0x42, 0x59, 0x80, 0xd8, 0xd6, 0xbd, 0x84, 0x61, 0x02, 0x59, 0xdf, 0xea, 0xe0, 0xa2, - 0x83, 0x61, 0x02, 0x59, 0xed, 0xff, 0xff, 0x28, 0x63, 0x59, 0x22, 0x59, 0x59, 0xb5, 0xc8, 0xde, 0x43, 0x61, 0x02, 0x51, 0x57, 0xee, 0xfb, 0x53, 0x23, 0x59, 0xe2, 0x50, 0x3e, 0xfe, 0xa0, 0xec, - 0x43, 0x59, 0x02, 0x51, 0x5e, 0x5b, 0x28, 0xff, 0x63, 0x59, 0xe2, 0x50, 0x5f, 0xcf, 0x56, 0xde, 0x23, 0x59, 0xe2, 0x50, 0xaf, 0x88, 0xfa, 0xb2, 0x23, 0x59, 0xe1, 0x50, 0xfa, 0xe9, 0xeb, 0xe6, - 0x23, 0x59, 0xe1, 0x48, 0xbe, 0x8a, 0xc3, 0xe9, 0xe1, 0x58, 0x23, 0x51, 0xf7, 0xff, 0xdd, 0x27, 0x43, 0x61, 0xe2, 0x50, 0xdf, 0xed, 0xff, 0x02, 0x23, 0x59, 0xe1, 0x50, 0x0e, 0xab, 0xae, 0x08, - 0x23, 0x59, 0x01, 0x51, 0x7e, 0x9c, 0xbe, 0xa8, 0x63, 0x69, 0xe2, 0x48, 0x5f, 0xaf, 0xff, 0x2f, 0x83, 0x61, 0x02, 0x51, 0xd7, 0xf7, 0x55, 0x8b, 0xc3, 0x69, 0xe2, 0x50, 0xd7, 0x2d, 0x8b, 0x82, - 0xc3, 0x69, 0x83, 0x69, 0x7e, 0xf2, 0xbb, 0xed, 0xe4, 0x71, 0xa3, 0x69, 0x7d, 0x7c, 0xaa, 0xb5, 0xc4, 0x69, 0x62, 0x61, 0xd7, 0x00, 0xa0, 0xef, 0xa4, 0x69, 0x62, 0x61, 0x2a, 0x20, 0x6a, 0xdf, - 0xa4, 0x69, 0x62, 0x61, 0x8b, 0xa2, 0x7a, 0x7a, 0xa4, 0x69, 0x42, 0x61, 0xe0, 0xbf, 0x6b, 0xea, 0xa3, 0x69, 0x43, 0x59, 0xfe, 0xab, 0xb5, 0xff, 0x82, 0x69, 0x43, 0x61, 0xa2, 0x2c, 0xfb, 0xf7, - 0x45, 0x72, 0x62, 0x61, 0xbf, 0xaf, 0x75, 0x2b, 0x08, 0x93, 0xe4, 0x69, 0x2b, 0x09, 0x09, 0xab, 0xea, 0xab, 0x07, 0x93, 0x35, 0x2d, 0x0d, 0x2b, 0x0b, 0xb4, 0xaa, 0xa3, 0xb5, 0xaa, 0xca, 0xca, - 0x6c, 0xbc, 0x29, 0x8b, 0xea, 0xca, 0x6e, 0xca, 0xac, 0x83, 0x2b, 0x73, 0xaa, 0xe0, 0x8a, 0x7f, 0xac, 0x83, 0x0a, 0x6b, 0x0b, 0xaa, 0xbe, 0x77, 0xcc, 0x8b, 0x2b, 0x73, 0x80, 0xff, 0x75, 0x75, - 0x8b, 0x7b, 0x0a, 0x73, 0xa0, 0xff, 0x5f, 0x0b, 0xac, 0x7b, 0xea, 0x6a, 0xaa, 0xd5, 0x75, 0xa0, 0xac, 0x7b, 0x2a, 0x73, 0xaa, 0x5d, 0x0a, 0xaa, 0xac, 0x7b, 0x2b, 0x73, 0x7c, 0xad, 0xa8, 0xf0, - 0xac, 0x7b, 0x4b, 0x73, 0x55, 0x2a, 0x02, 0x57, 0xac, 0x7b, 0x0a, 0x6b, 0x2a, 0x00, 0xfa, 0x7f, 0xac, 0x7b, 0x2b, 0x6b, 0xd8, 0x02, 0xbb, 0xff, 0x8c, 0x7b, 0x4a, 0x73, 0x5e, 0xbe, 0x02, 0xd5, - 0x8c, 0x7b, 0x0a, 0x6b, 0x77, 0x78, 0xea, 0x20, 0x8b, 0x7b, 0xaa, 0x5a, 0xaa, 0x5f, 0x7e, 0xa8, 0x2b, 0x73, 0x49, 0x52, 0xaa, 0x7b, 0xff, 0xe0, 0x8b, 0x7b, 0x69, 0x5a, 0xbf, 0xfd, 0xb5, 0x0f, - 0x6c, 0x83, 0xea, 0x6a, 0xbd, 0xad, 0xfe, 0x80, 0xed, 0x8b, 0xe9, 0x72, 0xe3, 0xfe, 0xbd, 0xaf, 0xed, 0x83, 0x2b, 0x73, 0xfd, 0xe2, 0xfe, 0xbf, 0xac, 0x83, 0xeb, 0x6a, 0xbe, 0xab, 0xa2, 0x78, - 0xab, 0x83, 0xe9, 0x62, 0xbe, 0x70, 0xd5, 0xad, 0x8b, 0x7b, 0xc9, 0x62, 0xe8, 0x85, 0xab, 0x82, 0x8b, 0x83, 0x0a, 0x6b, 0xf7, 0xfb, 0xaa, 0xe0, 0x6b, 0x7b, 0x0a, 0x6b, 0xab, 0xff, 0xea, 0x58, - 0xeb, 0x7a, 0x06, 0x5a, 0x5d, 0x7f, 0x75, 0x82, 0xa9, 0x72, 0x07, 0x5a, 0xff, 0x5d, 0xef, 0x00, 0xa8, 0x6a, 0xc6, 0x59, 0xaf, 0xfe, 0x7b, 0x2e, 0x88, 0x6a, 0xe6, 0x59, 0x5f, 0xff, 0xab, 0x00, - 0x0a, 0x73, 0xe6, 0x59, 0x55, 0xf5, 0xab, 0x0a, 0x69, 0x8b, 0xe7, 0x59, 0x55, 0xfd, 0xaa, 0xe2, 0x88, 0x6a, 0x65, 0x49, 0xbe, 0xea, 0x78, 0x7a, 0x67, 0x5a, 0x66, 0x41, 0x8a, 0xfb, 0xfd, 0x8b, - 0x27, 0x62, 0xc6, 0x51, 0x7c, 0x55, 0x55, 0x55, 0xe7, 0x59, 0xa5, 0x49, 0x28, 0x0d, 0x8f, 0x77, 0x07, 0x5a, 0x85, 0x49, 0xee, 0xf8, 0x5e, 0x7f, 0xc6, 0x51, 0x85, 0x49, 0xaa, 0x96, 0xf7, 0xf6, - 0xc6, 0x51, 0x85, 0x41, 0xaa, 0xfa, 0x7e, 0xbb, 0xc6, 0x49, 0x65, 0x39, 0x8a, 0xfb, 0xf2, 0x7a, 0xa6, 0x39, 0x04, 0x29, 0xe8, 0xfe, 0xf7, 0xf7, 0xc6, 0x49, 0x04, 0x31, 0xff, 0x2b, 0x6b, 0x2f, - 0xc6, 0x51, 0x24, 0x41, 0x7f, 0x28, 0x0b, 0x94, 0xa5, 0x51, 0x43, 0x49, 0x79, 0xa0, 0xd6, 0xbf, 0x85, 0x59, 0x43, 0x49, 0xff, 0xea, 0xca, 0xfe, 0x84, 0x51, 0x23, 0x49, 0x8b, 0xff, 0x7e, 0xee, - 0x23, 0x49, 0xc2, 0x40, 0xfa, 0x6f, 0x5f, 0x70, 0x03, 0x41, 0xa2, 0x30, 0xaa, 0xb6, 0xf7, 0xa7, 0x8b, 0x6a, 0xc2, 0x38, 0xd5, 0xd5, 0xd5, 0x35, 0xae, 0x83, 0x24, 0x51, 0xd7, 0x97, 0xbf, 0x22, - 0x06, 0x6a, 0xe2, 0x48, 0xd6, 0xac, 0xb6, 0xb4, 0x45, 0x72, 0x43, 0x59, 0xfd, 0x02, 0xaa, 0xee, 0x86, 0x82, 0x84, 0x59, 0xf5, 0x0a, 0xaa, 0xad, 0xc7, 0x8a, 0x05, 0x6a, 0x09, 0x2f, 0x26, 0xae, - 0xeb, 0xab, 0x85, 0x7a, 0xfd, 0xbd, 0xfd, 0xf3, 0x69, 0x9b, 0xa6, 0x82, 0xbf, 0xb7, 0x8e, 0x2a, 0xca, 0xa3, 0xc3, 0x69, 0xaa, 0xaa, 0x0a, 0x72, 0x89, 0xa3, 0x64, 0x59, 0xa0, 0x80, 0x78, 0x55, - 0x46, 0x93, 0x43, 0x49, 0xe0, 0x7e, 0x55, 0x55, 0x84, 0x59, 0x43, 0x49, 0xea, 0xfc, 0xd7, 0xff, 0x64, 0x51, 0x23, 0x49, 0xeb, 0x5e, 0x6b, 0x5a, 0x64, 0x59, 0x03, 0x51, 0xf7, 0xae, 0x2f, 0x22, - 0x84, 0x59, 0x23, 0x51, 0xaf, 0x8d, 0xac, 0x8e, 0x84, 0x59, 0x03, 0x51, 0x7e, 0x60, 0xea, 0x00, 0x64, 0x59, 0x22, 0x51, 0xdd, 0xbd, 0xd5, 0x3a, 0x43, 0x51, 0x02, 0x51, 0x8a, 0x0b, 0xab, 0x78, - 0x85, 0x7a, 0xc2, 0x40, 0x3f, 0xff, 0xdf, 0x5d, 0x88, 0x9b, 0xc1, 0x40, 0x00, 0xff, 0x55, 0x55, 0xcd, 0xcc, 0xa1, 0x40, 0xaa, 0x22, 0x35, 0xd5, 0xcd, 0xd4, 0x85, 0x41, 0x58, 0x56, 0x57, 0x55, - 0xe7, 0x49, 0x05, 0x31, 0x7a, 0xaa, 0x0b, 0xa8, 0xa6, 0x41, 0xc4, 0x28, 0xf7, 0xa8, 0x00, 0x00, 0xc6, 0x49, 0x65, 0x31, 0xdf, 0x36, 0xb6, 0x0f, 0xc6, 0x49, 0x44, 0x31, 0xdb, 0x61, 0x63, 0x5f, - 0xc6, 0x41, 0x45, 0x31, 0x77, 0xdd, 0x5f, 0x02, 0xa6, 0x41, 0xe4, 0x20, 0xbf, 0xb7, 0x8b, 0xaa, 0xc6, 0x41, 0x04, 0x31, 0xa5, 0xc3, 0x5f, 0x75, 0x44, 0x31, 0xc3, 0x28, 0xa8, 0xfe, 0x7b, 0xfe, - 0x24, 0x31, 0xc3, 0x28, 0xb0, 0xb2, 0x93, 0xef, 0x45, 0x31, 0xc3, 0x28, 0x63, 0xb2, 0xff, 0xfa, 0xc7, 0x41, 0xc3, 0x20, 0x55, 0xd7, 0xb5, 0x2d, 0x07, 0x4a, 0xc4, 0x28, 0x55, 0xff, 0x7a, 0x00, - 0xe8, 0x49, 0xe4, 0x28, 0x55, 0x57, 0x57, 0xf8, 0x86, 0x41, 0xe4, 0x20, 0xf5, 0xf5, 0x8b, 0x2b, 0xe8, 0x51, 0x24, 0x29, 0x3f, 0xfd, 0xff, 0xa2, 0x0a, 0x73, 0x45, 0x31, 0x8b, 0xd5, 0xb5, 0x7f, - 0x6c, 0x7b, 0x65, 0x39, 0x7f, 0x2f, 0x5f, 0x2d, 0x8b, 0x83, 0x66, 0x39, 0xaf, 0x08, 0xad, 0x0f, 0x0d, 0x94, 0xa6, 0x49, 0x82, 0xb7, 0x8a, 0xd7, 0x2c, 0x94, 0x86, 0x41, 0xb5, 0xe2, 0xf7, 0x0a, - 0xed, 0x8b, 0x64, 0x39, 0xa8, 0xfd, 0xa3, 0x2a, 0x8e, 0xa4, 0x47, 0x5a, 0x7d, 0x09, 0xff, 0xb7, 0x8e, 0x9c, 0x27, 0x4a, 0x0a, 0xf8, 0xff, 0x7a, 0x6d, 0x9c, 0xc7, 0x41, 0xe0, 0x57, 0xeb, 0xff, - 0x6b, 0x7b, 0x88, 0x52, 0xa1, 0x2d, 0x89, 0xab, 0x6b, 0x7b, 0x22, 0x51, 0x56, 0x54, 0x5e, 0x7a, 0x83, 0x61, 0x02, 0x59, 0x82, 0xaa, 0xe2, 0xda, 0x63, 0x61, 0x02, 0x59, 0xac, 0x3d, 0xad, 0xbb, - 0xa3, 0x61, 0x42, 0x59, 0x2a, 0x5b, 0x73, 0xff, 0x84, 0x69, 0x42, 0x59, 0xf8, 0x3f, 0xae, 0xaa, 0xc4, 0x69, 0x43, 0x61, 0x7d, 0x57, 0xae, 0x2a, 0xc3, 0x69, 0x42, 0x61, 0xf5, 0xff, 0xfa, 0xe0, - 0x83, 0x69, 0x42, 0x59, 0x7a, 0xef, 0xbe, 0xc2, 0x84, 0x61, 0x42, 0x59, 0xef, 0x5e, 0x6e, 0xe8, 0x83, 0x61, 0x22, 0x51, 0x78, 0x7e, 0x32, 0x90, 0x23, 0x59, 0x02, 0x51, 0x16, 0x1c, 0xa5, 0x0f, - 0x43, 0x61, 0x02, 0x51, 0xbf, 0x2e, 0xe6, 0xd7, 0x63, 0x59, 0xe2, 0x50, 0xe8, 0x7f, 0xff, 0xa5, 0x23, 0x59, 0xe2, 0x50, 0xf2, 0x69, 0xff, 0x7f, 0x43, 0x59, 0xe2, 0x48, 0xee, 0xbf, 0xad, 0xbb, - 0xa3, 0x59, 0x02, 0x51, 0x5d, 0xd5, 0xd5, 0x8b, 0xa3, 0x61, 0x02, 0x51, 0xf5, 0x55, 0xfb, 0x08, 0xa3, 0x61, 0x02, 0x51, 0x55, 0xef, 0xab, 0x08, 0xc4, 0x69, 0x02, 0x59, 0x75, 0x3f, 0xaa, 0x0a, - 0xc3, 0x69, 0x42, 0x51, 0xad, 0xaa, 0xa2, 0x28, 0xc4, 0x69, 0x83, 0x61, 0x9d, 0xa2, 0x7e, 0xbb, 0xc4, 0x69, 0x62, 0x61, 0xe0, 0xa0, 0xbd, 0xfa, 0xa4, 0x69, 0x82, 0x61, 0xcc, 0xde, 0xa2, 0x22, - 0xa4, 0x69, 0x83, 0x61, 0x37, 0xab, 0xb8, 0xc3, 0xa4, 0x69, 0x62, 0x61, 0x9a, 0x0b, 0x2b, 0x86, 0xc3, 0x69, 0x63, 0x61, 0xff, 0xcb, 0x7f, 0xae, 0xa3, 0x69, 0x63, 0x61, 0xaf, 0xe2, 0xfd, 0x8e, - 0xa4, 0x69, 0x42, 0x61, 0xbf, 0xda, 0xf6, 0xa8, 0x83, 0x69, 0x43, 0x59, 0xaa, 0x6a, 0xaa, 0x2a, 0x83, 0x61, 0x42, 0x59, 0x7b, 0xed, 0xb2, 0x6f, 0xe4, 0x69, 0x42, 0x59, 0xf7, 0x3f, 0xff, 0x5f, - 0x65, 0x7a, 0x43, 0x61, 0x2f, 0x0b, 0x2b, 0xf5, 0x69, 0x9b, 0x65, 0x7a, 0x29, 0x0b, 0x2a, 0x0a, 0x0b, 0xb4, 0x89, 0xa3, 0xf5, 0x35, 0x2d, 0x09, 0x2c, 0xb4, 0x89, 0xa3, 0xa2, 0xaa, 0xaa, 0x92, - 0x6c, 0xbc, 0x0a, 0x73, 0x40, 0x6a, 0xea, 0xfa, 0xcc, 0x83, 0x0a, 0x6b, 0xfd, 0x8b, 0xaf, 0x28, 0xec, 0x83, 0xca, 0x62, 0xfa, 0xaa, 0x8a, 0x72, 0xcd, 0x83, 0x2b, 0x6b, 0xaa, 0xfa, 0xfd, 0x37, - 0x0d, 0x8c, 0x4b, 0x73, 0xbf, 0x57, 0x8a, 0xae, 0xcc, 0x83, 0x0b, 0x63, 0xa8, 0xea, 0xaa, 0x68, 0x8c, 0x7b, 0x0a, 0x63, 0xa0, 0x7e, 0xaa, 0x29, 0xac, 0x7b, 0x2b, 0x73, 0xfb, 0xfd, 0xef, 0x3e, - 0xad, 0x7b, 0x4b, 0x6b, 0xff, 0xff, 0x5f, 0xe8, 0x6c, 0x7b, 0x0a, 0x63, 0x5f, 0xe0, 0xaa, 0xfe, 0x0e, 0x84, 0x0a, 0x6b, 0xf5, 0x0b, 0xff, 0x55, 0xcd, 0x83, 0xea, 0x6a, 0xaa, 0xf8, 0xde, 0xdf, - 0xac, 0x7b, 0xa9, 0x62, 0xb0, 0xba, 0x7e, 0x7f, 0x6b, 0x7b, 0x8a, 0x62, 0x00, 0xaa, 0xab, 0x89, 0x6b, 0x7b, 0xa9, 0x5a, 0x80, 0xab, 0xfd, 0x2e, 0x8c, 0x83, 0x0a, 0x73, 0x0f, 0xa5, 0x2b, 0xab, - 0x8b, 0x8b, 0x4a, 0x7b, 0xba, 0x2a, 0xeb, 0xe5, 0xac, 0x8b, 0xea, 0x72, 0x8a, 0xdf, 0xaa, 0x0a, 0xcc, 0x8b, 0xea, 0x6a, 0xfe, 0xaa, 0xea, 0x7c, 0x6b, 0x7b, 0xaa, 0x62, 0xde, 0xa8, 0x72, 0xea, - 0x8c, 0x83, 0x48, 0x52, 0xab, 0x7a, 0x2f, 0x0a, 0xac, 0x83, 0x0a, 0x73, 0xa9, 0xfd, 0xfa, 0x82, 0x8c, 0x83, 0x2a, 0x7b, 0x97, 0xab, 0x8e, 0xa8, 0x8b, 0x83, 0x4a, 0x7b, 0x5f, 0x2f, 0x76, 0xdb, - 0xaa, 0xa3, 0xc7, 0x49, 0xa0, 0xfd, 0xff, 0x55, 0xc8, 0x72, 0xe6, 0x51, 0x7c, 0xaa, 0x2a, 0xed, 0xe9, 0x72, 0x27, 0x62, 0xab, 0xaf, 0xaa, 0x8d, 0x6a, 0x8b, 0x88, 0x6a, 0x5f, 0x77, 0xb7, 0x2f, - 0xaa, 0x93, 0xa4, 0x51, 0xaa, 0x82, 0xc0, 0x57, 0x8a, 0x93, 0x64, 0x39, 0xf8, 0xff, 0x7a, 0x55, 0xc6, 0x49, 0x24, 0x31, 0xa8, 0x0f, 0x89, 0x0b, 0xe7, 0x51, 0x85, 0x41, 0x0a, 0xad, 0x1d, 0xf7, - 0x06, 0x52, 0xa5, 0x49, 0xfa, 0xaa, 0x8a, 0x7b, 0xe7, 0x51, 0x85, 0x49, 0xa2, 0x22, 0x82, 0x3d, 0xe6, 0x51, 0x85, 0x49, 0x2a, 0x6e, 0xfa, 0x02, 0x47, 0x52, 0x65, 0x41, 0xff, 0xbd, 0xbd, 0x8b, - 0xe6, 0x51, 0x85, 0x41, 0xeb, 0xe2, 0xfa, 0x9e, 0xc6, 0x41, 0x04, 0x31, 0x78, 0xfa, 0x2e, 0x80, 0xc6, 0x49, 0x05, 0x31, 0xfd, 0xab, 0xa8, 0x02, 0xc6, 0x51, 0x45, 0x41, 0xf7, 0x2a, 0xab, 0x2b, - 0x06, 0x52, 0x45, 0x39, 0xfb, 0x5e, 0x2a, 0x5a, 0x06, 0x62, 0x04, 0x31, 0xaa, 0x8a, 0xae, 0x57, 0xe7, 0x59, 0x44, 0x49, 0x5f, 0xfa, 0x7c, 0xe2, 0x85, 0x51, 0x23, 0x49, 0xfe, 0xab, 0x4a, 0xa8, - 0x64, 0x51, 0x03, 0x41, 0xee, 0xa4, 0x37, 0xdf, 0x64, 0x51, 0xc2, 0x40, 0x5f, 0xfa, 0xa0, 0xa0, 0x03, 0x49, 0xc8, 0x20, 0x6a, 0x7e, 0xda, 0x78, 0xce, 0x8b, 0xa5, 0x18, 0x20, 0x5e, 0x55, 0x55, - 0x43, 0x51, 0xe4, 0x30, 0x2c, 0x2b, 0xbd, 0xa9, 0x05, 0x6a, 0x23, 0x51, 0x8b, 0xdf, 0xb5, 0xbd, 0x66, 0x7a, 0xc5, 0x69, 0xad, 0xed, 0xe9, 0x3f, 0xcb, 0xa3, 0x46, 0x72, 0xf5, 0xad, 0xa9, 0x22, - 0xca, 0xab, 0x61, 0x59, 0xa0, 0x20, 0x00, 0x60, 0xe9, 0xab, 0xe2, 0x40, 0x22, 0xc0, 0x78, 0x55, 0x06, 0x9b, 0x03, 0x41, 0xfc, 0x7f, 0x57, 0x55, 0x84, 0x51, 0xe2, 0x30, 0x88, 0xaa, 0xaa, 0x57, - 0x64, 0x51, 0xc2, 0x30, 0x00, 0xaa, 0xfe, 0x55, 0x44, 0x49, 0xa2, 0x30, 0x00, 0xa0, 0xae, 0x7f, 0x44, 0x49, 0xa2, 0x30, 0x00, 0x0a, 0x8a, 0x55, 0x63, 0x51, 0x82, 0x38, 0x00, 0xa0, 0xfe, 0xf5, - 0x83, 0x59, 0x61, 0x30, 0x02, 0xaa, 0x7f, 0xab, 0x83, 0x59, 0x81, 0x38, 0xa0, 0x7f, 0xd5, 0xaa, 0x63, 0x59, 0x82, 0x30, 0x00, 0x75, 0xff, 0xaa, 0x22, 0x59, 0xa2, 0x28, 0xe8, 0xd5, 0xae, 0x00, - 0x42, 0x61, 0x82, 0x38, 0x5f, 0xff, 0xaa, 0x00, 0x43, 0x61, 0xa1, 0x30, 0x75, 0x0a, 0x00, 0x00, 0x05, 0x7a, 0xe1, 0x48, 0xf5, 0x2f, 0x2f, 0x2b, 0xc7, 0x92, 0x84, 0x59, 0x55, 0xaf, 0x0a, 0x02, - 0x69, 0xa3, 0x85, 0x39, 0x55, 0x7f, 0x7e, 0x62, 0xe6, 0x49, 0x24, 0x29, 0xff, 0x7a, 0x72, 0x83, 0xa5, 0x41, 0x04, 0x31, 0xe2, 0x5f, 0xde, 0xfa, 0xc6, 0x49, 0xe3, 0x28, 0xea, 0x7f, 0x7f, 0x37, - 0xe6, 0x41, 0x04, 0x29, 0x7d, 0x55, 0xf5, 0xdc, 0x85, 0x39, 0x04, 0x31, 0xed, 0x7b, 0x7b, 0x78, 0x66, 0x41, 0x04, 0x29, 0xdb, 0xfa, 0x63, 0xfb, 0x45, 0x39, 0xe3, 0x28, 0xf7, 0xfd, 0xdd, 0x3b, - 0x87, 0x41, 0xc3, 0x20, 0x5f, 0xd5, 0xff, 0xa8, 0x6c, 0x7b, 0xc4, 0x20, 0x55, 0xd5, 0xb5, 0x02, 0x4e, 0x9c, 0x25, 0x29, 0xbd, 0xff, 0xaa, 0x02, 0x0e, 0x94, 0x27, 0x52, 0x56, 0xfc, 0xdc, 0xfe, - 0x8f, 0xa4, 0xc7, 0x49, 0xf7, 0xaa, 0x5f, 0x02, 0x0c, 0x94, 0xaa, 0x62, 0xef, 0x17, 0x23, 0xa8, 0xae, 0xac, 0x86, 0x41, 0xd5, 0x02, 0xd6, 0x82, 0x6d, 0xa4, 0x28, 0x52, 0x6b, 0xa0, 0xa2, 0xa8, - 0xae, 0xa4, 0xe7, 0x49, 0xfd, 0x0b, 0x78, 0x5f, 0xeb, 0x93, 0x07, 0x4a, 0x2b, 0xf8, 0x55, 0x55, 0xec, 0x93, 0x07, 0x4a, 0xa8, 0xfd, 0xf5, 0xf5, 0xcb, 0x8b, 0x09, 0x6b, 0xd5, 0xb5, 0x8d, 0xa2, - 0xcc, 0x83, 0x4a, 0x73, 0xfb, 0xa6, 0x02, 0xea, 0x0c, 0x8c, 0x2a, 0x6b, 0xab, 0xea, 0x4e, 0x7f, 0xed, 0x83, 0xea, 0x62, 0x7e, 0xbb, 0xab, 0x2b, 0xed, 0x83, 0x29, 0x52, 0xfd, 0xa0, 0xa8, 0x00, - 0xec, 0x83, 0xea, 0x6a, 0xfd, 0xef, 0xa6, 0x28, 0xcc, 0x83, 0x43, 0x59, 0x7a, 0x7a, 0x70, 0x70, 0x62, 0x61, 0x23, 0x59, 0xef, 0xf8, 0x7f, 0xbb, 0x83, 0x69, 0x22, 0x59, 0xe5, 0x37, 0x37, 0xff, - 0xa4, 0x69, 0x43, 0x59, 0xbe, 0x2a, 0x2b, 0xdf, 0xc3, 0x69, 0x62, 0x59, 0xea, 0x28, 0xab, 0x75, 0xc4, 0x69, 0x63, 0x61, 0xbb, 0xa2, 0x3e, 0xf7, 0xe4, 0x69, 0x63, 0x61, 0xf6, 0xfe, 0xf8, 0x55, - 0xc3, 0x69, 0x22, 0x61, 0xe2, 0x8b, 0xfa, 0xf7, 0x83, 0x61, 0x22, 0x51, 0x70, 0xb8, 0xa2, 0xe8, 0x83, 0x61, 0x22, 0x59, 0xfb, 0x70, 0x5a, 0x7f, 0x43, 0x59, 0x02, 0x51, 0x7a, 0xbf, 0xfd, 0x96, - 0x42, 0x59, 0x03, 0x51, 0xfb, 0x5e, 0x7a, 0x5a, 0x63, 0x59, 0x02, 0x51, 0x5f, 0x5f, 0x55, 0x41, 0x63, 0x59, 0xe2, 0x50, 0xdf, 0xd7, 0xf5, 0x3f, 0xc3, 0x61, 0x22, 0x59, 0x55, 0xff, 0xa7, 0x0a, - 0xc4, 0x69, 0x42, 0x59, 0x29, 0x8a, 0xaf, 0x0a, 0xc4, 0x69, 0xa2, 0x61, 0x0a, 0x53, 0x6e, 0x02, 0xc4, 0x69, 0x83, 0x61, 0x8b, 0x96, 0x6f, 0x08, 0xc3, 0x71, 0x63, 0x61, 0xba, 0xfb, 0xa0, 0xbd, - 0xc4, 0x69, 0x82, 0x61, 0xa7, 0x4a, 0x6e, 0xba, 0xe3, 0x69, 0x42, 0x61, 0xaf, 0xad, 0x3b, 0xaf, 0xc3, 0x69, 0x82, 0x61, 0xf8, 0xaa, 0x82, 0xe7, 0xc4, 0x69, 0x83, 0x61, 0x8b, 0x3b, 0x76, 0xa3, - 0xc4, 0x69, 0x82, 0x61, 0xc2, 0xf4, 0xf9, 0xfe, 0xc4, 0x69, 0x83, 0x61, 0xfb, 0x3e, 0xfd, 0xb7, 0xa3, 0x69, 0x42, 0x61, 0xae, 0x70, 0xf0, 0x6c, 0xc4, 0x69, 0x43, 0x59, 0xaf, 0x8f, 0xbf, 0xfb, - 0xa3, 0x69, 0x42, 0x61, 0x9e, 0x82, 0xb8, 0x6f, 0x83, 0x69, 0x42, 0x61, 0x3f, 0xba, 0x98, 0xb0, 0xa4, 0x61, 0x22, 0x61, 0xa8, 0xff, 0xff, 0xde, 0xa4, 0x69, 0x43, 0x59, 0xb7, 0x5f, 0xaf, 0x2f, - 0x07, 0x8b, 0x42, 0x59, 0xbf, 0x35, 0x2d, 0x2f, 0xca, 0xab, 0xc6, 0x8a, 0xad, 0x6b, 0xab, 0x0a, 0x2b, 0xb4, 0x69, 0xa3, 0xab, 0xeb, 0xfa, 0x92, 0x4c, 0xb4, 0x48, 0x9b, 0xba, 0xde, 0xaf, 0x2b, - 0x2c, 0xb4, 0x4b, 0x6b, 0xe0, 0xb8, 0x78, 0x78, 0xec, 0x83, 0x2b, 0x6b, 0x8a, 0x78, 0xd7, 0xfd, 0xcc, 0x7b, 0x2b, 0x6b, 0xef, 0xe2, 0x5e, 0xba, 0xec, 0x83, 0x0b, 0x6b, 0x0a, 0xff, 0x2f, 0xb7, - 0xac, 0x7b, 0x0b, 0x6b, 0x08, 0xe2, 0x5e, 0xfe, 0x8c, 0x7b, 0x0a, 0x63, 0x58, 0xdf, 0xff, 0xfa, 0x4c, 0x6b, 0xca, 0x62, 0xff, 0xa2, 0x37, 0xea, 0xad, 0x7b, 0xe9, 0x5a, 0x0b, 0xab, 0xab, 0xb7, - 0xac, 0x7b, 0x2b, 0x6b, 0x5e, 0x2f, 0xbf, 0x82, 0xac, 0x7b, 0x2b, 0x6b, 0x5d, 0x5e, 0xdc, 0xaa, 0xcd, 0x83, 0x0a, 0x6b, 0x5f, 0xfd, 0xff, 0x02, 0xac, 0x83, 0x0a, 0x6b, 0xb2, 0x8b, 0xa7, 0xa0, - 0x8b, 0x83, 0x2a, 0x73, 0x6b, 0x22, 0x0b, 0xb6, 0xab, 0x8b, 0x2a, 0x73, 0xfd, 0xa0, 0x00, 0xce, 0x8b, 0x83, 0x0a, 0x6b, 0xd7, 0xe8, 0x88, 0xba, 0xcc, 0x8b, 0xea, 0x72, 0xbe, 0xaf, 0x0a, 0xd7, - 0xed, 0x93, 0x68, 0x62, 0xaa, 0x80, 0xd6, 0xaf, 0x8b, 0x83, 0xa9, 0x62, 0xe0, 0x56, 0x2b, 0xa8, 0xcc, 0x83, 0xa9, 0x6a, 0x7f, 0x0b, 0xa8, 0xfa, 0xcc, 0x8b, 0x28, 0x52, 0xf5, 0x00, 0xaa, 0xa2, - 0xec, 0x8b, 0x0a, 0x73, 0xff, 0xfa, 0x2a, 0xf5, 0xac, 0x83, 0x4b, 0x73, 0xb5, 0x22, 0x88, 0x3d, 0xcc, 0x83, 0x6b, 0x7b, 0xb5, 0xaa, 0xf0, 0x2b, 0xcd, 0x8b, 0x8b, 0x83, 0xdb, 0x23, 0xee, 0x9a, - 0xe6, 0x49, 0x85, 0x41, 0x3f, 0xef, 0xe7, 0xdf, 0xe7, 0x51, 0xa5, 0x41, 0x3f, 0x2f, 0xb7, 0xf9, 0x46, 0x6a, 0x44, 0x31, 0x28, 0xea, 0xea, 0x77, 0x46, 0x6a, 0x04, 0x21, 0xa8, 0xaa, 0xff, 0x55, - 0xa5, 0x41, 0x04, 0x29, 0x2b, 0x2a, 0xd5, 0x55, 0x27, 0x5a, 0x45, 0x31, 0xdd, 0xd5, 0xfd, 0x8d, 0xe7, 0x51, 0x65, 0x39, 0xbd, 0x35, 0xbf, 0x2a, 0x48, 0x5a, 0x86, 0x41, 0xdd, 0xd7, 0xd7, 0xfc, - 0x28, 0x52, 0x86, 0x49, 0x7f, 0xfd, 0x2f, 0x0b, 0x68, 0x5a, 0x86, 0x49, 0xfd, 0xbb, 0x0a, 0xea, 0x48, 0x5a, 0x65, 0x39, 0xae, 0xaa, 0xf0, 0x5e, 0x07, 0x52, 0x65, 0x49, 0xa0, 0xfa, 0xff, 0x55, - 0xe6, 0x51, 0x04, 0x31, 0x82, 0xaa, 0xff, 0x5f, 0xe7, 0x49, 0x04, 0x31, 0x82, 0xda, 0xeb, 0x2b, 0xe6, 0x49, 0x24, 0x31, 0xfa, 0x75, 0xfd, 0x08, 0x07, 0x4a, 0x45, 0x39, 0xef, 0xf5, 0xd7, 0x80, - 0x27, 0x4a, 0x24, 0x31, 0xdf, 0xea, 0xaa, 0x80, 0xe7, 0x49, 0x45, 0x31, 0x55, 0x52, 0x2e, 0x20, 0xe6, 0x51, 0x25, 0x31, 0x09, 0xff, 0xa2, 0xfa, 0xc5, 0x59, 0x24, 0x39, 0xea, 0x83, 0x0f, 0x7b, - 0x84, 0x49, 0x23, 0x41, 0x7f, 0x58, 0x58, 0x7f, 0x44, 0x49, 0xe2, 0x40, 0x00, 0xa3, 0x7b, 0x77, 0x44, 0x49, 0xa7, 0x28, 0x58, 0xd0, 0x5b, 0x5f, 0x28, 0x62, 0x87, 0x20, 0x0b, 0xfe, 0x75, 0x7d, - 0x26, 0x6a, 0x84, 0x20, 0xba, 0xb2, 0xb9, 0x55, 0x8a, 0x9b, 0x81, 0x30, 0xbf, 0x0b, 0x5f, 0x55, 0xea, 0xa3, 0xa1, 0x40, 0x0a, 0xa0, 0x55, 0x55, 0xe8, 0xb3, 0x81, 0x28, 0x28, 0xe8, 0x55, 0x7f, - 0xa4, 0x8a, 0x62, 0x20, 0xfc, 0x55, 0x55, 0x55, 0x03, 0x39, 0x82, 0x20, 0xa0, 0x57, 0xf5, 0xf5, 0xe3, 0x38, 0x82, 0x20, 0xfa, 0x5d, 0xbf, 0x2a, 0x03, 0x49, 0x62, 0x18, 0xd5, 0xbf, 0x2b, 0x02, - 0x23, 0x51, 0xa2, 0x30, 0x5d, 0xff, 0xbe, 0x2b, 0x23, 0x59, 0xa1, 0x38, 0xd5, 0xef, 0x8a, 0x82, 0x23, 0x59, 0xa1, 0x40, 0xfd, 0xaf, 0xaa, 0x82, 0x63, 0x59, 0xc1, 0x48, 0xfd, 0xbf, 0xaf, 0x03, - 0x43, 0x59, 0x02, 0x51, 0x9f, 0x1b, 0x00, 0xbe, 0x43, 0x59, 0x02, 0x51, 0xbc, 0x8c, 0x00, 0xca, 0x63, 0x61, 0x23, 0x51, 0xfb, 0xbe, 0xe9, 0xfd, 0x63, 0x61, 0x22, 0x59, 0x77, 0xbd, 0x0b, 0xad, - 0x83, 0x61, 0x22, 0x59, 0xff, 0xb7, 0x8b, 0xbf, 0x25, 0x72, 0x43, 0x59, 0xbd, 0xa5, 0xab, 0xa2, 0x68, 0x9b, 0xa4, 0x61, 0xbd, 0xaf, 0x2f, 0x0b, 0xea, 0xb3, 0x48, 0x9b, 0x75, 0xd7, 0x3f, 0xaa, - 0xed, 0xd4, 0xa7, 0x82, 0x7b, 0xab, 0x2a, 0x2a, 0x06, 0x5a, 0x24, 0x31, 0xfb, 0xe0, 0xbc, 0xdc, 0x68, 0x5a, 0x24, 0x31, 0x75, 0x6d, 0xbe, 0x81, 0xe9, 0x6a, 0x25, 0x31, 0xb5, 0xfb, 0xfb, 0xe0, - 0x87, 0x62, 0xc6, 0x41, 0xd5, 0xef, 0x8b, 0xdf, 0xe9, 0x6a, 0x65, 0x39, 0x5f, 0x8a, 0xff, 0x7a, 0x4f, 0x8c, 0x25, 0x31, 0x55, 0xaf, 0x7d, 0x2f, 0x10, 0xad, 0x26, 0x39, 0xd5, 0x8a, 0x2d, 0xe0, - 0xce, 0xb4, 0xc8, 0x49, 0xbd, 0x8a, 0xde, 0xaf, 0x4d, 0x9c, 0xc6, 0x49, 0x02, 0xd7, 0xab, 0x00, 0x8e, 0xac, 0x47, 0x5a, 0xd7, 0xab, 0x0a, 0xfa, 0xae, 0xb4, 0x0a, 0x6b, 0xaf, 0x82, 0xa0, 0xfd, - 0x4d, 0xa4, 0xc9, 0x6a, 0x80, 0x80, 0x77, 0xdf, 0x6d, 0xac, 0xa9, 0x62, 0x80, 0xbf, 0xff, 0xf7, 0xcc, 0x8b, 0xa9, 0x6a, 0x1c, 0xaa, 0x2a, 0xaa, 0xcc, 0x8b, 0x0a, 0x73, 0xe0, 0x80, 0xab, 0xdd, - 0xec, 0x8b, 0xea, 0x6a, 0x7a, 0xae, 0x2b, 0x9f, 0xac, 0x83, 0x29, 0x4a, 0x55, 0xa8, 0x00, 0x00, 0xac, 0x83, 0x49, 0x52, 0x95, 0x2e, 0x08, 0xc2, 0x4e, 0x94, 0xe9, 0x6a, 0xaa, 0x2a, 0xaf, 0x5f, - 0x4e, 0x94, 0x0a, 0x6b, 0xff, 0x7e, 0x2e, 0xd5, 0x0d, 0x8c, 0x27, 0x4a, 0xee, 0x0a, 0x56, 0x5a, 0x0d, 0x8c, 0x48, 0x4a, 0x00, 0x80, 0x8b, 0xb5, 0xec, 0x8b, 0x4b, 0x73, 0x22, 0xbb, 0xfe, 0x35, - 0xcc, 0x83, 0xa9, 0x5a, 0xa0, 0xa0, 0x5a, 0xd6, 0xed, 0x83, 0x83, 0x51, 0x6a, 0x42, 0x6a, 0x6a, 0x84, 0x61, 0x22, 0x59, 0xbf, 0xb8, 0xb5, 0xd6, 0xa3, 0x61, 0x42, 0x59, 0xeb, 0xe2, 0xba, 0xad, - 0x83, 0x69, 0x22, 0x59, 0xeb, 0xae, 0xe8, 0x0a, 0xa3, 0x61, 0x42, 0x59, 0xad, 0xbf, 0xfd, 0x2a, 0x84, 0x69, 0x42, 0x59, 0xab, 0xea, 0xef, 0xbb, 0x83, 0x69, 0x62, 0x59, 0xbb, 0xaa, 0xbe, 0xbe, - 0xa3, 0x61, 0x22, 0x61, 0xaa, 0x6f, 0x80, 0x28, 0x84, 0x61, 0x43, 0x59, 0xe8, 0x7f, 0x2a, 0xee, 0x84, 0x61, 0x42, 0x59, 0x5d, 0x6f, 0x54, 0x95, 0x43, 0x59, 0x02, 0x51, 0xad, 0x6a, 0x2f, 0x94, - 0x83, 0x69, 0x22, 0x59, 0x55, 0xdd, 0xa9, 0xa8, 0x83, 0x61, 0x02, 0x51, 0x7f, 0xf6, 0x2a, 0x02, 0xa3, 0x69, 0x02, 0x51, 0x35, 0xad, 0xee, 0x28, 0xc4, 0x69, 0x62, 0x61, 0xa3, 0xdf, 0xfd, 0x9d, - 0xc3, 0x71, 0x62, 0x61, 0x28, 0xad, 0xab, 0xbd, 0xc3, 0x69, 0x82, 0x61, 0xf2, 0xef, 0xad, 0x7f, 0xc3, 0x69, 0x82, 0x61, 0xbb, 0x0b, 0xee, 0xff, 0xc3, 0x69, 0x62, 0x61, 0x5c, 0xae, 0xeb, 0xab, - 0xa3, 0x69, 0x62, 0x61, 0xe8, 0xce, 0x68, 0xf3, 0xc4, 0x69, 0x62, 0x61, 0x25, 0x77, 0xed, 0xfd, 0xc3, 0x69, 0x62, 0x61, 0xc2, 0xe6, 0x2a, 0xa8, 0xc3, 0x71, 0x63, 0x61, 0x6a, 0xae, 0xfe, 0xab, - 0xc4, 0x69, 0x82, 0x61, 0x5a, 0x56, 0xb5, 0x82, 0xc4, 0x69, 0x62, 0x61, 0xfe, 0x7f, 0xf8, 0xae, 0xc4, 0x69, 0x62, 0x61, 0xb7, 0xdf, 0xb8, 0xfa, 0xc4, 0x69, 0x62, 0x61, 0x5f, 0xbb, 0xff, 0x2f, - 0xa4, 0x69, 0x43, 0x61, 0xed, 0xb8, 0xaa, 0xaa, 0xa4, 0x69, 0x62, 0x61, 0xe2, 0x4f, 0xba, 0xde, 0xa4, 0x69, 0x22, 0x59, 0xea, 0x8a, 0xa2, 0xf6, 0x24, 0x72, 0x62, 0x61, 0xb5, 0xfd, 0x35, 0xb5, - 0x48, 0x9b, 0x04, 0x72, 0xbd, 0xbd, 0x95, 0x2d, 0x0b, 0xb4, 0x48, 0x9b, 0xa9, 0x29, 0xa9, 0x03, 0x4c, 0xbc, 0xaa, 0xa3, 0xdf, 0xab, 0x2b, 0xa2, 0x2c, 0xb4, 0xcb, 0xa3, 0x0d, 0x08, 0xec, 0xc8, - 0x0c, 0xac, 0x4b, 0x6b, 0x58, 0x7e, 0xfe, 0xfe, 0xac, 0x7b, 0x4b, 0x73, 0x5f, 0x77, 0x20, 0x76, 0xac, 0x7b, 0xca, 0x62, 0xae, 0x2a, 0x6a, 0xeb, 0xcc, 0x83, 0xca, 0x62, 0x0a, 0x58, 0x7f, 0xff, - 0x8b, 0x73, 0xaa, 0x5a, 0xe8, 0xff, 0x55, 0x5f, 0xcd, 0x7b, 0xca, 0x5a, 0xdf, 0xfd, 0x2f, 0x2f, 0xed, 0x8b, 0x2b, 0x6b, 0x55, 0xbd, 0x82, 0xa8, 0xcc, 0x83, 0x0b, 0x6b, 0xd5, 0x00, 0xc0, 0xfa, - 0xcc, 0x7b, 0x0b, 0x73, 0x0b, 0xba, 0xf5, 0xb7, 0xac, 0x83, 0x89, 0x62, 0xa0, 0xaa, 0xd6, 0xee, 0x8b, 0x83, 0xaa, 0x5a, 0x02, 0xe8, 0x57, 0xbf, 0x8c, 0x83, 0x28, 0x4a, 0xa0, 0x5f, 0xff, 0xfa, - 0x6c, 0x7b, 0x89, 0x52, 0xde, 0xa9, 0xf5, 0x2f, 0x8c, 0x7b, 0x0a, 0x6b, 0xd5, 0x8b, 0x0b, 0xaa, 0x8c, 0x7b, 0x0a, 0x73, 0xf5, 0xdf, 0xaa, 0x2b, 0xcc, 0x8b, 0x6b, 0x7b, 0xd5, 0xf2, 0xdd, 0xbd, - 0xcc, 0x93, 0x6b, 0x73, 0xf3, 0xfb, 0xf5, 0xdf, 0xcc, 0x83, 0x0a, 0x73, 0xf6, 0xa2, 0x57, 0x7f, 0x8b, 0x7b, 0xea, 0x72, 0xa2, 0xbe, 0x2a, 0xb7, 0xcc, 0x83, 0x2b, 0x73, 0xd5, 0xf7, 0xbf, 0x07, - 0xcd, 0x83, 0x4b, 0x73, 0xbd, 0xab, 0xa0, 0xa0, 0xed, 0x83, 0x6b, 0x73, 0xef, 0xff, 0x75, 0x3f, 0x0e, 0x8c, 0x6b, 0x73, 0xff, 0x55, 0x7d, 0x78, 0xed, 0x8b, 0x0a, 0x6b, 0x7e, 0x8a, 0xf5, 0x2e, - 0xa9, 0x62, 0xa6, 0x41, 0xdf, 0x5e, 0x28, 0x7f, 0xc9, 0x62, 0x65, 0x31, 0x5f, 0x7f, 0xa0, 0xeb, 0x27, 0x52, 0x25, 0x29, 0x5f, 0xef, 0x0a, 0xa8, 0xc7, 0x41, 0x25, 0x29, 0x55, 0x5f, 0x58, 0xcd, - 0x86, 0x39, 0x24, 0x29, 0x97, 0x3b, 0x31, 0x6a, 0x08, 0x52, 0x25, 0x39, 0xaf, 0x2b, 0x0a, 0xd5, 0x28, 0x52, 0xc6, 0x49, 0x0d, 0xe8, 0x26, 0xa9, 0x28, 0x5a, 0xa5, 0x41, 0xf8, 0xfa, 0x7a, 0xe9, - 0x27, 0x52, 0x85, 0x41, 0x2a, 0x88, 0xa5, 0xaa, 0x47, 0x52, 0x86, 0x49, 0xb8, 0x7e, 0x2a, 0xaa, 0x67, 0x5a, 0x65, 0x39, 0xfa, 0xbb, 0xdc, 0x7f, 0x28, 0x52, 0x66, 0x39, 0xbd, 0xa2, 0x02, 0x5d, - 0x07, 0x52, 0x65, 0x39, 0x5f, 0xf0, 0x3e, 0xad, 0x47, 0x52, 0xa6, 0x41, 0xd5, 0xff, 0xab, 0x3f, 0x48, 0x4a, 0x86, 0x41, 0xa9, 0xa0, 0xe8, 0xd6, 0x48, 0x52, 0x65, 0x39, 0x82, 0xfa, 0xb5, 0xfd, - 0x27, 0x4a, 0x65, 0x39, 0xea, 0xff, 0xe0, 0x7b, 0xc7, 0x49, 0x24, 0x29, 0xaa, 0x82, 0xba, 0xf7, 0x07, 0x4a, 0x44, 0x39, 0xff, 0xf8, 0xde, 0xdd, 0xc5, 0x49, 0x04, 0x31, 0xdf, 0xbe, 0xba, 0x07, - 0x03, 0x49, 0xa5, 0x41, 0xbf, 0x3f, 0x2f, 0xbd, 0x03, 0x49, 0x62, 0x28, 0x5e, 0xea, 0xa0, 0xa0, 0xe3, 0x40, 0x84, 0x20, 0xf5, 0xff, 0x7a, 0xf8, 0xa5, 0x61, 0xa6, 0x18, 0x55, 0x77, 0x8d, 0xad, - 0xa1, 0x40, 0x06, 0x21, 0xbd, 0xad, 0xaf, 0xa0, 0x23, 0x51, 0xc2, 0x38, 0xad, 0x0b, 0xab, 0x2a, 0x83, 0x61, 0xe2, 0x58, 0xcb, 0x7f, 0xd5, 0xff, 0xc6, 0x69, 0x02, 0x59, 0x55, 0x95, 0xd5, 0x35, - 0x49, 0x9b, 0x61, 0x30, 0x57, 0x7f, 0xfe, 0xc2, 0x03, 0x49, 0x82, 0x28, 0xbd, 0xbf, 0x0b, 0x2b, 0x44, 0x51, 0xe3, 0x38, 0xf5, 0xaf, 0xaa, 0xaa, 0x63, 0x51, 0x02, 0x49, 0x77, 0x3d, 0xd7, 0xad, - 0x63, 0x51, 0xe2, 0x48, 0xbd, 0x22, 0x22, 0xba, 0x43, 0x59, 0x02, 0x49, 0xea, 0xdb, 0xcf, 0xaa, 0x23, 0x59, 0x02, 0x49, 0x6e, 0xab, 0xfe, 0x8a, 0x23, 0x51, 0x02, 0x49, 0x01, 0xcb, 0x03, 0x90, - 0x63, 0x59, 0x02, 0x51, 0x8d, 0x7e, 0xfb, 0xff, 0x63, 0x59, 0x02, 0x49, 0x8a, 0xfb, 0xea, 0x5d, 0x43, 0x61, 0xc2, 0x38, 0x00, 0xaa, 0x7f, 0xff, 0x63, 0x59, 0xe2, 0x40, 0xa8, 0xea, 0x09, 0x8d, - 0x64, 0x59, 0x03, 0x49, 0xbe, 0x0a, 0xde, 0x22, 0x45, 0x7a, 0x43, 0x59, 0xab, 0xf3, 0x9b, 0x3a, 0xea, 0xab, 0x05, 0x6a, 0xaf, 0x2d, 0x2b, 0x0b, 0xc9, 0xab, 0x27, 0x9b, 0x20, 0xea, 0xa8, 0xde, - 0xad, 0xc4, 0x89, 0xa3, 0xaf, 0x2d, 0x2f, 0x2d, 0x87, 0x72, 0xa6, 0x41, 0xd6, 0xfc, 0x38, 0x18, 0x0f, 0x94, 0x66, 0x39, 0x55, 0xff, 0xbe, 0x0a, 0xf0, 0xb4, 0x25, 0x29, 0x55, 0xbf, 0xaa, 0x02, - 0xcf, 0xb4, 0x28, 0x4a, 0xd5, 0xae, 0x0a, 0xa0, 0xef, 0xb4, 0xaa, 0x62, 0xb7, 0x82, 0xf8, 0x82, 0x8d, 0xa4, 0x43, 0x39, 0xa0, 0xf7, 0x79, 0xfe, 0x0d, 0x94, 0x47, 0x52, 0x37, 0x22, 0x7d, 0x75, - 0x2c, 0x9c, 0xa7, 0x41, 0x2a, 0x80, 0xb7, 0xd7, 0x2d, 0x94, 0x68, 0x52, 0x40, 0x8b, 0x8b, 0x8d, 0x0d, 0x84, 0x68, 0x52, 0xad, 0xaa, 0x2a, 0x0b, 0x4e, 0x94, 0x2b, 0x6b, 0x77, 0xef, 0x0a, 0xc2, - 0x8f, 0x9c, 0xc9, 0x62, 0x7b, 0xdc, 0xde, 0xfd, 0xac, 0x83, 0x8a, 0x62, 0x2d, 0xaa, 0x00, 0x28, 0x0d, 0x94, 0x48, 0x5a, 0xf8, 0x6a, 0x2a, 0x80, 0xac, 0x83, 0x68, 0x52, 0xab, 0xa9, 0x78, 0xab, - 0xcc, 0x83, 0xe7, 0x49, 0x0a, 0xbf, 0xff, 0x5a, 0xac, 0x7b, 0x48, 0x4a, 0x00, 0xe2, 0x58, 0x79, 0xcc, 0x83, 0x28, 0x42, 0x02, 0xff, 0x55, 0x55, 0xac, 0x7b, 0xe8, 0x41, 0xe0, 0xea, 0xff, 0xdf, - 0x8a, 0x52, 0x48, 0x4a, 0x28, 0x74, 0x5c, 0x6a, 0x89, 0x52, 0x08, 0x42, 0xa0, 0x5e, 0xbd, 0x7e, 0x6b, 0x7b, 0x08, 0x42, 0xaf, 0x3f, 0xf5, 0x55, 0x6b, 0x7b, 0x28, 0x4a, 0x00, 0x80, 0xaf, 0xd5, - 0x4a, 0x73, 0x89, 0x5a, 0xfc, 0xfe, 0xf7, 0x8b, 0x2a, 0x6b, 0x27, 0x62, 0x6a, 0xea, 0xea, 0x80, 0x84, 0x59, 0x22, 0x59, 0xd6, 0x76, 0xdc, 0xf8, 0x83, 0x69, 0x22, 0x51, 0xab, 0x22, 0xbf, 0xad, - 0x83, 0x69, 0x22, 0x59, 0x3e, 0xfa, 0x7e, 0xea, 0xa3, 0x69, 0x22, 0x59, 0x0a, 0xbb, 0xeb, 0x55, 0x83, 0x61, 0x22, 0x59, 0x88, 0xea, 0xf2, 0xaf, 0xc4, 0x69, 0x42, 0x59, 0xff, 0xff, 0x2d, 0xb5, - 0x83, 0x61, 0x22, 0x59, 0xee, 0xa0, 0xe0, 0x5b, 0x63, 0x61, 0x02, 0x59, 0xea, 0xf8, 0xea, 0xdd, 0x63, 0x61, 0x22, 0x59, 0xe9, 0x0e, 0xfb, 0xbb, 0x83, 0x61, 0x02, 0x51, 0xaf, 0xde, 0xbe, 0x82, - 0x63, 0x69, 0x42, 0x59, 0xaa, 0x7b, 0xff, 0x60, 0x83, 0x61, 0x42, 0x61, 0xef, 0x7e, 0xb7, 0xfc, 0x83, 0x61, 0x22, 0x59, 0x2a, 0xe8, 0xf7, 0x57, 0x83, 0x69, 0x02, 0x59, 0x08, 0xaa, 0x6b, 0x95, - 0xc3, 0x71, 0x42, 0x61, 0xea, 0xeb, 0xa9, 0xa2, 0xc4, 0x71, 0x62, 0x61, 0xbd, 0xbd, 0x18, 0xab, 0xc4, 0x69, 0x62, 0x61, 0xea, 0x0a, 0x8b, 0x7b, 0xc3, 0x71, 0x62, 0x61, 0x2e, 0xa2, 0xf8, 0xf7, - 0xc3, 0x69, 0x62, 0x61, 0xc2, 0xae, 0x6e, 0xea, 0xc3, 0x69, 0x62, 0x61, 0xf5, 0x2f, 0x3d, 0x2f, 0xe4, 0x71, 0x83, 0x61, 0xff, 0xca, 0xff, 0xfb, 0xa4, 0x69, 0x83, 0x61, 0x8b, 0x33, 0x70, 0xae, - 0xe4, 0x69, 0x62, 0x61, 0xaf, 0x7f, 0xa2, 0xee, 0xe4, 0x69, 0x63, 0x61, 0xfe, 0x35, 0xfe, 0xbb, 0xc4, 0x69, 0x63, 0x61, 0xfe, 0xa8, 0xfa, 0xd6, 0xa3, 0x69, 0x63, 0x61, 0xeb, 0x02, 0x8f, 0x7e, - 0xa4, 0x69, 0x62, 0x61, 0xfd, 0xb6, 0xd4, 0xda, 0xc4, 0x69, 0x63, 0x61, 0x3f, 0xbf, 0xd7, 0x7e, 0xa4, 0x69, 0x62, 0x61, 0x60, 0xfb, 0x76, 0x97, 0x45, 0x7a, 0x63, 0x61, 0x95, 0x35, 0x35, 0x27, - 0xaa, 0xa3, 0x85, 0x82, 0xbd, 0x1f, 0x2d, 0x29, 0x2b, 0xb4, 0x8a, 0xa3, 0xad, 0xab, 0x0b, 0xa9, 0x4c, 0xbc, 0x89, 0xa3, 0xaa, 0x10, 0xb8, 0x0a, 0x4c, 0xbc, 0xab, 0x9b, 0x2a, 0x8a, 0x80, 0x42, - 0x0c, 0x94, 0x6b, 0x7b, 0xf0, 0x5e, 0xff, 0x95, 0xcc, 0x83, 0x2a, 0x73, 0xf7, 0x7b, 0x3a, 0x68, 0x0d, 0x8c, 0xca, 0x62, 0x83, 0xbf, 0x68, 0xb7, 0xac, 0x83, 0xea, 0x6a, 0x7c, 0xa8, 0x01, 0x02, - 0xcc, 0x7b, 0xca, 0x62, 0xaa, 0x6a, 0x20, 0x28, 0xcc, 0x83, 0xc9, 0x62, 0xe2, 0xad, 0x0a, 0xaa, 0xac, 0x83, 0x2b, 0x73, 0xd7, 0xa8, 0xaa, 0xff, 0xac, 0x83, 0x4b, 0x73, 0x75, 0xfb, 0xa0, 0x5d, - 0x8c, 0x83, 0x0a, 0x63, 0x8a, 0xa0, 0xde, 0x7f, 0x8c, 0x7b, 0xea, 0x62, 0xd7, 0x2a, 0xba, 0xbb, 0xed, 0x8b, 0xea, 0x6a, 0x5f, 0xa8, 0x75, 0xff, 0xac, 0x83, 0x28, 0x52, 0x8a, 0xa0, 0x60, 0xeb, - 0xac, 0x83, 0x27, 0x52, 0xa0, 0xae, 0xbd, 0xf5, 0x8c, 0x7b, 0x2a, 0x6b, 0xf5, 0xbd, 0x03, 0x8d, 0xac, 0x7b, 0xaa, 0x6a, 0x02, 0x08, 0x0a, 0x68, 0xcc, 0x83, 0x0a, 0x6b, 0xea, 0x2a, 0xd6, 0xf7, - 0xed, 0x83, 0xc9, 0x62, 0xa2, 0xde, 0x2f, 0xaa, 0x8c, 0x7b, 0x08, 0x4a, 0x8a, 0xaa, 0xf7, 0xa0, 0x4b, 0x7b, 0x89, 0x62, 0x89, 0xdb, 0x0a, 0x82, 0x6b, 0x7b, 0x27, 0x4a, 0x8a, 0xb8, 0x22, 0x60, - 0x8c, 0x83, 0x48, 0x4a, 0xaa, 0x02, 0xe0, 0xfd, 0xed, 0x8b, 0x8a, 0x52, 0x82, 0xf8, 0xf5, 0xab, 0x6c, 0x73, 0x48, 0x52, 0xfa, 0xd5, 0x82, 0x00, 0xad, 0x7b, 0xa9, 0x52, 0x7a, 0xa9, 0x03, 0x2e, - 0x48, 0x62, 0x64, 0x41, 0x62, 0xba, 0xea, 0xea, 0x07, 0x52, 0x65, 0x41, 0xd7, 0xa0, 0x0d, 0x09, 0x48, 0x5a, 0xc6, 0x51, 0xa7, 0x57, 0x8a, 0x08, 0x47, 0x5a, 0x85, 0x41, 0x5f, 0xbf, 0xda, 0xf8, - 0x26, 0x52, 0x65, 0x39, 0xd5, 0xfe, 0xa0, 0xbb, 0xe6, 0x59, 0x65, 0x41, 0xb9, 0x1d, 0x2f, 0xe3, 0x88, 0x62, 0x44, 0x39, 0x0b, 0xea, 0xfe, 0x5f, 0x67, 0x5a, 0x44, 0x39, 0xa3, 0xa5, 0xff, 0x55, - 0x27, 0x52, 0x44, 0x39, 0x80, 0xf2, 0xa9, 0x5f, 0x48, 0x52, 0x65, 0x39, 0xf7, 0x23, 0x7f, 0xf5, 0x27, 0x5a, 0x65, 0x39, 0xfa, 0x58, 0x5f, 0xeb, 0xc6, 0x41, 0x45, 0x39, 0xb7, 0xad, 0x4a, 0x5a, - 0xe6, 0x49, 0x45, 0x31, 0xf0, 0xa8, 0xed, 0xad, 0xe7, 0x41, 0x65, 0x31, 0xd6, 0xeb, 0xdd, 0x82, 0xc5, 0x39, 0x04, 0x31, 0xeb, 0xd7, 0xa8, 0x5c, 0x24, 0x39, 0xa6, 0x31, 0x56, 0xf9, 0xaa, 0xa8, - 0x85, 0x39, 0x04, 0x31, 0xa8, 0x98, 0x23, 0xf0, 0xc6, 0x49, 0xe4, 0x28, 0xae, 0x3e, 0x5e, 0x77, 0xc6, 0x49, 0xe4, 0x28, 0xaa, 0xba, 0x2f, 0x09, 0x06, 0x4a, 0x24, 0x41, 0xb6, 0xf7, 0xfe, 0x8a, - 0x47, 0x62, 0x24, 0x49, 0x57, 0xff, 0x0b, 0xaf, 0x27, 0x6a, 0x02, 0x49, 0x5d, 0xdf, 0x82, 0x82, 0xa9, 0x72, 0x02, 0x49, 0x55, 0xff, 0xbe, 0x00, 0x26, 0x6a, 0x03, 0x49, 0x55, 0xaf, 0xaa, 0x20, - 0x46, 0x6a, 0x03, 0x49, 0xd5, 0xff, 0xaa, 0x2a, 0x67, 0x7a, 0x63, 0x51, 0x55, 0xff, 0xfe, 0x28, 0x6a, 0x93, 0x84, 0x59, 0xd5, 0xff, 0xbf, 0x2a, 0xea, 0xab, 0xe6, 0x61, 0x0d, 0xab, 0x0b, 0x02, - 0x4a, 0xbc, 0x02, 0x49, 0x60, 0x7a, 0x70, 0x58, 0x24, 0x49, 0xe2, 0x38, 0x25, 0x29, 0xaf, 0x0b, 0x44, 0x51, 0x03, 0x41, 0x2f, 0xbe, 0xb7, 0x38, 0x64, 0x59, 0x02, 0x49, 0x8a, 0x5f, 0x7e, 0xfe, - 0x63, 0x51, 0x23, 0x49, 0x7a, 0x7f, 0xb9, 0xfe, 0x43, 0x51, 0xe3, 0x48, 0x72, 0xf2, 0x0c, 0xba, 0x42, 0x51, 0xe3, 0x48, 0xbd, 0xba, 0x28, 0xfa, 0x43, 0x51, 0x02, 0x49, 0xb9, 0xa2, 0x4a, 0x7b, - 0x22, 0x51, 0xe3, 0x48, 0xfe, 0xaa, 0xcb, 0x7f, 0x23, 0x51, 0xe2, 0x40, 0xa0, 0x9e, 0xee, 0xef, 0x23, 0x49, 0xe2, 0x40, 0xeb, 0xef, 0x4f, 0xed, 0xa4, 0x61, 0xe2, 0x40, 0xa5, 0xa5, 0x35, 0x2d, - 0xc4, 0x61, 0x43, 0x59, 0xdf, 0xf3, 0x7f, 0xfb, 0x49, 0x9b, 0xe4, 0x69, 0xdd, 0xb5, 0x35, 0x2d, 0xc9, 0xab, 0x27, 0x93, 0x89, 0xab, 0xab, 0xf8, 0xa9, 0xa3, 0x65, 0x8a, 0x28, 0xa8, 0xb8, 0xd7, - 0x6d, 0xbc, 0x28, 0x9b, 0x8a, 0xab, 0x2b, 0x55, 0xae, 0xac, 0x48, 0x5a, 0xaf, 0x02, 0xf8, 0x5d, 0xce, 0xb4, 0xa9, 0x62, 0x00, 0x80, 0xd7, 0xd5, 0x6d, 0xac, 0x48, 0x52, 0xa0, 0xe2, 0x7f, 0x5f, - 0x8d, 0xac, 0xe7, 0x41, 0xa0, 0xff, 0x7f, 0x57, 0x8a, 0x83, 0x48, 0x52, 0xa0, 0xaf, 0x5d, 0x6b, 0x4b, 0x73, 0x07, 0x42, 0xaa, 0x2a, 0x0b, 0x7f, 0x6b, 0x7b, 0x28, 0x52, 0x7a, 0x8f, 0x2a, 0x03, - 0x6b, 0x7b, 0x29, 0x42, 0xd5, 0x57, 0xf0, 0xa0, 0xca, 0x62, 0xc7, 0x39, 0x22, 0x97, 0xfa, 0x78, 0xab, 0x7b, 0x66, 0x31, 0x0a, 0xaa, 0xff, 0xed, 0x2d, 0x8c, 0x48, 0x52, 0xa2, 0x7f, 0x7d, 0x55, - 0x6a, 0x73, 0xe7, 0x41, 0x0a, 0xaa, 0xb5, 0xf5, 0x0d, 0x8c, 0xc9, 0x62, 0x22, 0xaf, 0xab, 0xbd, 0xed, 0x8b, 0x27, 0x52, 0x80, 0xa0, 0xda, 0xaa, 0x8c, 0x83, 0x07, 0x4a, 0x68, 0xa9, 0xa2, 0x8a, - 0xac, 0x8b, 0x66, 0x31, 0xfd, 0xeb, 0x0a, 0xe2, 0xc9, 0x62, 0xa7, 0x39, 0xa9, 0xf7, 0x78, 0x7f, 0x69, 0x4a, 0x66, 0x29, 0xa0, 0x20, 0x2b, 0x25, 0x8a, 0x52, 0x28, 0x42, 0x5d, 0xdd, 0x5f, 0x78, - 0x89, 0x52, 0x08, 0x42, 0x8b, 0xab, 0xb7, 0xbf, 0xcb, 0x5a, 0x28, 0x42, 0x7f, 0xf5, 0x7d, 0x74, 0x49, 0x4a, 0x65, 0x29, 0x2a, 0xa8, 0x60, 0x60, 0x49, 0x52, 0xa6, 0x31, 0x3a, 0xea, 0xfd, 0xb9, - 0x0a, 0x6b, 0xa7, 0x31, 0x0a, 0xbd, 0xf5, 0xfd, 0x4a, 0x7b, 0x48, 0x4a, 0x02, 0xff, 0x75, 0x55, 0x27, 0x5a, 0x22, 0x51, 0x5f, 0x5c, 0x56, 0x7c, 0x43, 0x59, 0x02, 0x59, 0xbe, 0xaf, 0x30, 0xf9, - 0x63, 0x61, 0x22, 0x59, 0xea, 0x36, 0x0b, 0xae, 0x63, 0x61, 0x02, 0x59, 0xfa, 0xdf, 0xf8, 0x7e, 0x83, 0x61, 0x21, 0x59, 0xfd, 0x5d, 0x8b, 0xa5, 0x83, 0x69, 0x02, 0x59, 0xed, 0x2d, 0xea, 0xba, - 0x63, 0x61, 0x02, 0x59, 0x9c, 0xf0, 0xbe, 0xca, 0x63, 0x61, 0x02, 0x59, 0xe0, 0xba, 0xd7, 0xd5, 0x83, 0x61, 0x22, 0x59, 0xf7, 0xa7, 0xaf, 0xa2, 0x83, 0x61, 0x42, 0x59, 0xf2, 0x68, 0xea, 0xbf, - 0x64, 0x61, 0x22, 0x59, 0x2e, 0xfb, 0xbb, 0x30, 0x83, 0x61, 0x42, 0x59, 0xe5, 0xaf, 0x72, 0xe3, 0x83, 0x69, 0x22, 0x51, 0x7f, 0x2a, 0xaa, 0x2a, 0xc4, 0x69, 0x03, 0x51, 0xad, 0xab, 0x8a, 0xa2, - 0xe4, 0x69, 0x63, 0x61, 0xdf, 0x6b, 0xe9, 0xe3, 0xc4, 0x69, 0x63, 0x59, 0xd8, 0xee, 0xaa, 0x8a, 0xc4, 0x69, 0x62, 0x61, 0xbd, 0xaa, 0x8b, 0xea, 0xc4, 0x69, 0x63, 0x61, 0x9e, 0xa3, 0xeb, 0xbb, - 0xc4, 0x69, 0x63, 0x61, 0xba, 0x6a, 0xaf, 0xf2, 0xa4, 0x69, 0x63, 0x61, 0x87, 0xaf, 0xeb, 0x3f, 0xa4, 0x69, 0x63, 0x61, 0xbf, 0xfe, 0xca, 0xe9, 0xa4, 0x69, 0x83, 0x61, 0x04, 0xa8, 0xf0, 0xc7, - 0xe4, 0x69, 0x63, 0x61, 0x2e, 0xfb, 0xef, 0x5d, 0xa4, 0x69, 0x83, 0x59, 0xba, 0x8a, 0xab, 0xaa, 0xc4, 0x69, 0x63, 0x61, 0x9e, 0x8b, 0xae, 0xaf, 0xa4, 0x69, 0x82, 0x61, 0xd7, 0xae, 0x55, 0xdf, - 0xc4, 0x69, 0x43, 0x59, 0xb8, 0x7a, 0xba, 0xfe, 0xa4, 0x69, 0x63, 0x61, 0xaa, 0x5d, 0x6a, 0xb3, 0xa4, 0x69, 0x43, 0x61, 0x7e, 0xdf, 0x22, 0x8a, 0xa6, 0x82, 0x84, 0x61, 0xad, 0xa9, 0xad, 0x2f, - 0x89, 0xa3, 0xa6, 0x82, 0x2d, 0x29, 0x2f, 0xcb, 0x2b, 0xb4, 0xa9, 0xa3, 0x2d, 0xad, 0xab, 0xaf, 0x4c, 0xb4, 0xca, 0xab, 0x83, 0xe9, 0xab, 0x02, 0x8d, 0xc4, 0x6b, 0x83, 0xea, 0x6a, 0x6a, 0x52, - 0x2d, 0x94, 0x2b, 0x73, 0x7d, 0xff, 0xab, 0xe2, 0xac, 0x83, 0x68, 0x52, 0xa2, 0xe0, 0xdc, 0x9f, 0xac, 0x7b, 0xea, 0x6a, 0x0b, 0xad, 0xbd, 0xfd, 0xac, 0x7b, 0x0b, 0x6b, 0xa8, 0xea, 0xfb, 0x0d, - 0xcc, 0x83, 0x2b, 0x63, 0xaa, 0xdb, 0xfd, 0x88, 0xac, 0x83, 0xca, 0x5a, 0xff, 0x5f, 0xff, 0xa0, 0xcc, 0x7b, 0x69, 0x52, 0xab, 0xef, 0xaa, 0x01, 0xed, 0x83, 0xea, 0x62, 0xfd, 0x7d, 0x3a, 0x98, - 0x0e, 0x94, 0x0b, 0x63, 0x55, 0xff, 0x38, 0x22, 0x0d, 0x8c, 0x2a, 0x6b, 0xf5, 0xaf, 0x8c, 0xe0, 0xcd, 0x83, 0xea, 0x6a, 0xaa, 0xe0, 0xda, 0xff, 0x8c, 0x7b, 0x0b, 0x6b, 0x62, 0xab, 0x8b, 0x89, - 0xcc, 0x83, 0x08, 0x4a, 0x72, 0xaa, 0xa8, 0xaa, 0xac, 0x83, 0x88, 0x5a, 0xbd, 0x8f, 0xe8, 0xbe, 0xac, 0x7b, 0x0a, 0x73, 0xff, 0xfe, 0x2d, 0xea, 0x6c, 0x7b, 0x2b, 0x6b, 0x0a, 0x82, 0x40, 0xde, - 0xac, 0x83, 0x0b, 0x63, 0x0a, 0xa0, 0x77, 0xbf, 0x8c, 0x7b, 0xa9, 0x62, 0x00, 0xab, 0xdf, 0x5a, 0x4b, 0x7b, 0x88, 0x62, 0x38, 0x08, 0xa8, 0x7b, 0x2b, 0x73, 0x29, 0x52, 0x58, 0x5e, 0xf6, 0x57, - 0xcc, 0x7b, 0x89, 0x52, 0xb5, 0xb5, 0x25, 0x2d, 0xcc, 0x83, 0x0a, 0x63, 0xea, 0x2a, 0xa8, 0x70, 0xac, 0x7b, 0xa9, 0x5a, 0x8a, 0xaa, 0xe0, 0xad, 0x0a, 0x6b, 0x89, 0x52, 0xd2, 0x74, 0x5f, 0xf8, - 0x06, 0x5a, 0x85, 0x49, 0xa2, 0xb8, 0xf8, 0x58, 0x47, 0x62, 0x64, 0x41, 0x80, 0xea, 0xff, 0x55, 0x27, 0x52, 0x25, 0x41, 0x2e, 0xab, 0xff, 0x35, 0x26, 0x5a, 0x45, 0x39, 0xf8, 0xfa, 0x7b, 0x68, - 0xc6, 0x49, 0x65, 0x41, 0x82, 0x21, 0x01, 0x29, 0xe6, 0x51, 0x24, 0x39, 0xea, 0xe8, 0x4a, 0x60, 0x06, 0x52, 0x24, 0x39, 0x5f, 0x77, 0x89, 0x7d, 0xe7, 0x49, 0x04, 0x39, 0xb7, 0x3f, 0x03, 0x01, - 0x07, 0x52, 0x24, 0x39, 0x78, 0xf8, 0x76, 0xfe, 0xc7, 0x49, 0x25, 0x39, 0xfd, 0xe7, 0x55, 0x3c, 0x68, 0x5a, 0x45, 0x39, 0xf5, 0xd5, 0x8b, 0xa2, 0xe6, 0x51, 0x03, 0x31, 0xe0, 0x78, 0x7c, 0xf8, - 0x88, 0x62, 0x24, 0x31, 0xfd, 0x55, 0xf5, 0x25, 0x07, 0x4a, 0x45, 0x39, 0xa5, 0xad, 0x80, 0x54, 0x07, 0x52, 0x25, 0x31, 0xf6, 0xea, 0xbf, 0x2b, 0x28, 0x52, 0x25, 0x39, 0xfd, 0x5f, 0xfa, 0x00, - 0x07, 0x52, 0x24, 0x31, 0x5b, 0xd5, 0xd5, 0xb8, 0xe6, 0x49, 0xe4, 0x30, 0x7f, 0xfe, 0xab, 0x22, 0xe6, 0x49, 0xe4, 0x30, 0x0d, 0xaf, 0x82, 0xa8, 0x48, 0x5a, 0x64, 0x31, 0xab, 0x82, 0xb5, 0xf7, - 0x07, 0x4a, 0x85, 0x39, 0xb8, 0xe8, 0x8f, 0x65, 0xc7, 0x72, 0xa6, 0x41, 0x2f, 0x5f, 0xff, 0xd5, 0xe6, 0x82, 0x65, 0x49, 0xe0, 0xff, 0xbf, 0xd7, 0xc9, 0x7a, 0x64, 0x51, 0x7f, 0xf5, 0x2a, 0x2a, - 0xe8, 0x8a, 0xa5, 0x59, 0x95, 0xab, 0x08, 0x80, 0xea, 0xab, 0x47, 0x72, 0xe5, 0xff, 0xaf, 0xc2, 0x0b, 0xac, 0xe1, 0x50, 0x2a, 0x02, 0x00, 0x57, 0x4a, 0xbc, 0xe2, 0x40, 0x22, 0xe0, 0x5e, 0x55, - 0x87, 0xab, 0xe3, 0x38, 0x5c, 0x55, 0x55, 0x55, 0x64, 0x51, 0x03, 0x39, 0xbd, 0xab, 0x2a, 0x22, 0x44, 0x51, 0x22, 0x49, 0xdf, 0xda, 0x1e, 0x2c, 0x84, 0x59, 0x03, 0x49, 0xeb, 0x8d, 0x8b, 0xb8, - 0x83, 0x59, 0x23, 0x51, 0xe7, 0xff, 0xca, 0xff, 0x43, 0x51, 0xe2, 0x48, 0xfc, 0x58, 0xfe, 0xf6, 0x44, 0x59, 0x02, 0x49, 0x5e, 0xf7, 0x35, 0x2a, 0x44, 0x59, 0xe2, 0x48, 0xdd, 0x83, 0xa8, 0x00, - 0x43, 0x59, 0xc2, 0x40, 0xff, 0x5e, 0xf8, 0xa0, 0x23, 0x51, 0xc2, 0x38, 0xfb, 0xfd, 0xaa, 0xf8, 0x23, 0x49, 0xc2, 0x38, 0x8a, 0xf6, 0x5e, 0xfa, 0xa3, 0x69, 0xc2, 0x38, 0x2b, 0xab, 0xa9, 0xbd, - 0x05, 0x72, 0x23, 0x59, 0xef, 0xb5, 0xbd, 0x2d, 0x28, 0x9b, 0x05, 0x72, 0x09, 0x2d, 0x2b, 0x2b, 0x68, 0x9b, 0x45, 0x82, 0x78, 0xa8, 0x02, 0xe8, 0x28, 0x9b, 0xa2, 0x69, 0xaf, 0x20, 0xaa, 0xad, - 0x0b, 0xac, 0xe8, 0x8a, 0xbf, 0xcf, 0x49, 0x7d, 0xc9, 0x62, 0x08, 0x4a, 0x08, 0xeb, 0xff, 0xd7, 0xea, 0x6a, 0x48, 0x52, 0xb4, 0xff, 0xb5, 0x1d, 0x2b, 0x6b, 0x28, 0x52, 0xfb, 0xf7, 0xab, 0x80, - 0x4b, 0x73, 0x08, 0x42, 0xd7, 0xae, 0x2a, 0xa8, 0x4b, 0x7b, 0x48, 0x52, 0x60, 0x70, 0x40, 0x68, 0xa9, 0x5a, 0xe8, 0x41, 0x7f, 0x2f, 0x2f, 0x3f, 0xec, 0x8b, 0xa6, 0x41, 0xab, 0x01, 0x02, 0xa2, - 0x8b, 0x7b, 0xa9, 0x62, 0xea, 0xe8, 0x78, 0xb0, 0x8c, 0x7b, 0xc7, 0x41, 0x7b, 0xe2, 0xca, 0xf8, 0x0b, 0x63, 0x87, 0x39, 0x95, 0xdf, 0xf8, 0x2a, 0xea, 0x62, 0xe7, 0x41, 0xaa, 0x0f, 0xb5, 0xd7, - 0x2a, 0x73, 0xe8, 0x49, 0xf5, 0xf8, 0xe0, 0x02, 0x4b, 0x7b, 0x48, 0x5a, 0x0d, 0x2d, 0xbf, 0xb6, 0x4a, 0x7b, 0x28, 0x62, 0xa8, 0xb8, 0x6c, 0xae, 0xab, 0x8b, 0x27, 0x62, 0x0a, 0x02, 0x29, 0xaf, - 0xec, 0x93, 0x28, 0x5a, 0x70, 0xfa, 0xfa, 0xd7, 0xca, 0x6a, 0xc6, 0x41, 0xbd, 0xb0, 0xde, 0x78, 0xaa, 0x6a, 0xa6, 0x41, 0x6a, 0xcc, 0xeb, 0xed, 0x8a, 0x5a, 0x66, 0x39, 0x82, 0x85, 0xdd, 0xbe, - 0x6a, 0x4a, 0xe7, 0x41, 0xfb, 0x7a, 0xe3, 0x83, 0xaa, 0x5a, 0xe8, 0x39, 0x72, 0x6b, 0x7d, 0xeb, 0x29, 0x4a, 0xa7, 0x39, 0x6f, 0xf9, 0xed, 0x0b, 0x28, 0x4a, 0xa7, 0x39, 0xdb, 0xcb, 0x17, 0x36, - 0x8a, 0x5a, 0x87, 0x31, 0xef, 0xff, 0xff, 0x5c, 0x69, 0x4a, 0xa7, 0x39, 0xf8, 0x2b, 0x27, 0x75, 0x43, 0x59, 0x69, 0x52, 0x09, 0x0b, 0x0f, 0x2f, 0x43, 0x59, 0xe2, 0x50, 0xff, 0x38, 0x68, 0xb8, - 0x84, 0x61, 0x22, 0x59, 0xf5, 0xcf, 0xfd, 0x55, 0x43, 0x59, 0x02, 0x51, 0x38, 0x98, 0xf0, 0xcd, 0x83, 0x61, 0x02, 0x59, 0xaf, 0x8b, 0x89, 0xe5, 0x63, 0x61, 0x02, 0x51, 0xc2, 0xea, 0xfa, 0x6f, - 0x43, 0x61, 0x02, 0x51, 0xa0, 0xba, 0x0e, 0xeb, 0x44, 0x59, 0x02, 0x51, 0x1f, 0x8a, 0x8e, 0x22, 0x84, 0x69, 0x22, 0x59, 0x0e, 0xbb, 0xed, 0xd7, 0x63, 0x61, 0x22, 0x59, 0x02, 0x82, 0xaa, 0x57, - 0x63, 0x61, 0x02, 0x59, 0x08, 0x0a, 0x28, 0xd6, 0x83, 0x61, 0x22, 0x59, 0x02, 0xe8, 0x20, 0x7d, 0x64, 0x61, 0x22, 0x59, 0xe7, 0x02, 0x3f, 0x09, 0x84, 0x69, 0x62, 0x59, 0x8b, 0xef, 0x57, 0xef, - 0xa4, 0x69, 0x63, 0x59, 0xbb, 0xe9, 0xbf, 0x0f, 0xa4, 0x69, 0x63, 0x59, 0x2a, 0xbf, 0xaf, 0xae, 0xc4, 0x69, 0x63, 0x61, 0x23, 0xff, 0xa5, 0xf7, 0xa4, 0x69, 0x63, 0x59, 0xab, 0xb9, 0xea, 0xaa, - 0xa4, 0x61, 0x62, 0x61, 0xb7, 0xef, 0xfa, 0xe8, 0xa4, 0x69, 0x63, 0x59, 0x3f, 0x2a, 0xcb, 0xaf, 0xa4, 0x69, 0x83, 0x59, 0x2e, 0xa9, 0xbe, 0xb9, 0xc4, 0x69, 0x63, 0x61, 0xde, 0x58, 0xdd, 0xba, - 0xe4, 0x69, 0x83, 0x61, 0xbf, 0x3d, 0x55, 0x79, 0xc4, 0x69, 0x82, 0x59, 0xfe, 0xba, 0xea, 0x2a, 0xc4, 0x71, 0x63, 0x61, 0xf7, 0xd7, 0xea, 0xe8, 0xc4, 0x69, 0x63, 0x61, 0xe9, 0xbb, 0x8a, 0x2b, - 0xc4, 0x69, 0x62, 0x61, 0xde, 0xfe, 0x3e, 0xfa, 0xc4, 0x69, 0x63, 0x61, 0xaf, 0x37, 0x80, 0xfe, 0xc4, 0x69, 0x63, 0x61, 0xba, 0xf2, 0xda, 0x55, 0xe7, 0x8a, 0xe4, 0x69, 0x35, 0x2d, 0xbd, 0x2d, - 0xa9, 0xa3, 0x86, 0x82, 0x4b, 0x0b, 0x2f, 0x0b, 0x2b, 0xb4, 0x89, 0xa3, 0xaf, 0x9b, 0xab, 0x26, 0x6c, 0xbc, 0x0b, 0xb4, 0x2b, 0xe7, 0x29, 0xdd, 0x8e, 0xc4, 0x68, 0x62, 0xb8, 0x7a, 0x54, 0x5c, - 0x2b, 0x73, 0xa6, 0x39, 0x94, 0x2d, 0xde, 0xcb, 0x2b, 0x6b, 0xe7, 0x41, 0x00, 0x0a, 0xab, 0x29, 0x4b, 0x73, 0xaa, 0x62, 0x5a, 0x2f, 0x2b, 0x2b, 0x8c, 0x7b, 0xea, 0x6a, 0xad, 0xa2, 0xab, 0x88, - 0xac, 0x7b, 0x69, 0x62, 0x07, 0xc2, 0x22, 0xaa, 0xac, 0x83, 0x47, 0x52, 0x80, 0x1e, 0xde, 0xff, 0xaf, 0x9c, 0x68, 0x5a, 0xb7, 0x20, 0x0a, 0x7f, 0x4e, 0x94, 0x06, 0x4a, 0xaa, 0x00, 0xa8, 0xfd, - 0x0d, 0x8c, 0xea, 0x62, 0x00, 0xe0, 0xf7, 0xd5, 0x8c, 0x7b, 0x48, 0x52, 0x00, 0x22, 0x02, 0x60, 0x8f, 0x9c, 0xa6, 0x41, 0xaa, 0xaa, 0x8a, 0xfd, 0x6f, 0x8c, 0x2a, 0x73, 0xfb, 0xf5, 0x5f, 0x0f, - 0xac, 0x83, 0x07, 0x4a, 0xaa, 0x68, 0x2a, 0xf8, 0xab, 0x83, 0xc8, 0x49, 0xb7, 0xa9, 0x80, 0xab, 0xed, 0x8b, 0x88, 0x5a, 0xab, 0xfb, 0xbf, 0x71, 0xcc, 0x83, 0x27, 0x52, 0x00, 0xab, 0xa8, 0xfd, - 0xac, 0x83, 0x08, 0x4a, 0x80, 0x78, 0xa3, 0xaa, 0xab, 0x7b, 0x28, 0x4a, 0xc2, 0x57, 0x57, 0x54, 0x0a, 0x63, 0x49, 0x4a, 0xd8, 0xf9, 0xab, 0x2f, 0xec, 0x83, 0x69, 0x4a, 0x55, 0xb5, 0x03, 0x02, - 0xed, 0x8b, 0xca, 0x5a, 0xe9, 0xfa, 0xe8, 0xa8, 0x8c, 0x73, 0xe7, 0x41, 0xff, 0xfe, 0xfa, 0x68, 0xac, 0x7b, 0x89, 0x52, 0x8b, 0x8b, 0x83, 0x29, 0x8c, 0x7b, 0xe9, 0x62, 0x7e, 0xfe, 0xea, 0x80, - 0xc9, 0x62, 0x04, 0x39, 0xf5, 0xf5, 0xb7, 0x27, 0x8a, 0x83, 0x25, 0x39, 0x55, 0xfd, 0xa2, 0xe0, 0xe9, 0x6a, 0xa6, 0x41, 0x7d, 0xff, 0xaa, 0xa2, 0x27, 0x52, 0x85, 0x39, 0x42, 0xf8, 0xf8, 0xfc, - 0xe6, 0x51, 0x64, 0x41, 0x75, 0xde, 0xe8, 0xa8, 0x27, 0x52, 0x65, 0x41, 0x6b, 0x2b, 0x3b, 0xab, 0x27, 0x5a, 0x04, 0x29, 0xfd, 0xfe, 0xbc, 0xa8, 0x27, 0x5a, 0x24, 0x31, 0x0f, 0x2d, 0xdd, 0x57, - 0x27, 0x52, 0x45, 0x39, 0x70, 0xa0, 0xa8, 0x6b, 0x26, 0x52, 0x45, 0x39, 0x0d, 0xaa, 0xfa, 0xad, 0xcd, 0x93, 0x23, 0x31, 0x7f, 0x57, 0x5d, 0x4f, 0xcd, 0x83, 0x45, 0x39, 0x55, 0xd5, 0xd5, 0x35, - 0xab, 0x83, 0xa6, 0x41, 0xd5, 0xb5, 0x83, 0x78, 0x2d, 0x9c, 0x64, 0x31, 0x5f, 0x02, 0x7f, 0x7f, 0xcb, 0x93, 0x65, 0x39, 0x7d, 0xf8, 0xf7, 0xfd, 0x0a, 0x73, 0x24, 0x31, 0x0b, 0xfa, 0xf5, 0xf7, - 0xe9, 0x62, 0x24, 0x29, 0x2c, 0x57, 0xff, 0xaf, 0xc9, 0x6a, 0x85, 0x31, 0x50, 0xb5, 0x57, 0xd7, 0x8c, 0x7b, 0x24, 0x31, 0xdd, 0xa8, 0xbd, 0x5f, 0xeb, 0x8b, 0xa6, 0x41, 0x55, 0xff, 0x8a, 0xdf, - 0x6a, 0x8b, 0xa6, 0x41, 0x55, 0xdf, 0x70, 0xff, 0xcc, 0x7b, 0xa6, 0x41, 0x55, 0xf7, 0xc2, 0x5f, 0xa8, 0x62, 0xc7, 0x49, 0x97, 0xfa, 0xe0, 0xfd, 0xed, 0x8b, 0x85, 0x41, 0x72, 0xf7, 0xfd, 0xbf, - 0x09, 0x7b, 0x44, 0x49, 0xff, 0x57, 0x57, 0x54, 0xa4, 0x59, 0x23, 0x41, 0xdc, 0x77, 0x7f, 0xf7, 0x44, 0x49, 0xc3, 0x38, 0xa0, 0x82, 0x78, 0x7a, 0x64, 0x49, 0x03, 0x41, 0xfd, 0xf9, 0x8f, 0xff, - 0x44, 0x51, 0x03, 0x41, 0xe7, 0xb7, 0xe0, 0x8e, 0x84, 0x51, 0x23, 0x49, 0xfb, 0x8b, 0xfe, 0xa8, 0x64, 0x59, 0x23, 0x49, 0xf2, 0x23, 0x9f, 0xfa, 0x64, 0x59, 0x23, 0x51, 0x7f, 0xca, 0xa2, 0x65, - 0xa4, 0x59, 0x03, 0x51, 0x2f, 0xb7, 0xff, 0xfd, 0x63, 0x59, 0x02, 0x49, 0xd8, 0x6a, 0xfe, 0xfa, 0x44, 0x51, 0x23, 0x49, 0x98, 0x58, 0xfe, 0x28, 0x44, 0x59, 0x03, 0x51, 0x80, 0x2e, 0x83, 0xe9, - 0x44, 0x59, 0x03, 0x51, 0x9e, 0x4a, 0xfa, 0xad, 0x23, 0x51, 0xe2, 0x40, 0x98, 0x37, 0xb8, 0xa0, 0x22, 0x51, 0xe3, 0x38, 0x5e, 0x7e, 0xd8, 0xfe, 0x64, 0x61, 0xe3, 0x40, 0xbd, 0x2f, 0xab, 0x83, - 0x46, 0x7a, 0x63, 0x59, 0xad, 0xbf, 0xbd, 0x3f, 0x07, 0x93, 0x66, 0x7a, 0x0b, 0xaf, 0xe9, 0xbd, 0x06, 0x93, 0x63, 0x69, 0xf8, 0xa0, 0x78, 0x7a, 0xc6, 0x8a, 0x23, 0x59, 0x2d, 0x2a, 0xa5, 0xbd, - 0x6e, 0xbc, 0x65, 0x82, 0x3f, 0x95, 0xf5, 0xf5, 0xab, 0x9b, 0x07, 0x42, 0x57, 0x77, 0x7e, 0x7c, 0xca, 0x62, 0xc8, 0x41, 0x0a, 0x5e, 0xaf, 0xbd, 0x0a, 0x73, 0x48, 0x52, 0x82, 0x89, 0x0f, 0x7b, - 0x0a, 0x6b, 0x07, 0x4a, 0xa0, 0xb0, 0xe2, 0x55, 0x0a, 0x6b, 0x89, 0x5a, 0xf3, 0xf2, 0x5b, 0xb9, 0x2b, 0x6b, 0xe8, 0x49, 0x97, 0xff, 0xa2, 0x02, 0xeb, 0x8b, 0x8a, 0x5a, 0xb2, 0x5f, 0xff, 0xdf, - 0x8c, 0x83, 0x28, 0x4a, 0xa8, 0x5c, 0x7c, 0x5f, 0x2b, 0x6b, 0x28, 0x4a, 0xff, 0x55, 0x15, 0x07, 0x2e, 0x94, 0xe8, 0x41, 0x5d, 0x5f, 0xa8, 0xaa, 0x2b, 0x73, 0xe8, 0x49, 0xdf, 0xab, 0xa0, 0x6b, - 0xac, 0x83, 0xc6, 0x41, 0xab, 0x0b, 0x02, 0xf5, 0xac, 0x83, 0x07, 0x52, 0xae, 0x8a, 0xd8, 0xef, 0x4b, 0x7b, 0x65, 0x39, 0xfa, 0x80, 0x2f, 0x5a, 0xea, 0x72, 0xc7, 0x41, 0xc0, 0xfb, 0xe0, 0x5a, - 0x89, 0x5a, 0x08, 0x52, 0x97, 0x3d, 0xce, 0xad, 0x0a, 0x73, 0xe7, 0x49, 0x7e, 0x7b, 0xa3, 0xda, 0x0a, 0x6b, 0x86, 0x39, 0xab, 0xbd, 0x02, 0x37, 0xaa, 0x62, 0xa7, 0x49, 0x1e, 0xcf, 0xee, 0xba, - 0xaa, 0x62, 0x86, 0x39, 0xa7, 0xba, 0x7f, 0x4b, 0x69, 0x4a, 0x87, 0x41, 0x88, 0x02, 0x8a, 0x9d, 0xaa, 0x5a, 0xc7, 0x39, 0xad, 0x8a, 0x0f, 0x0b, 0x0b, 0x6b, 0x08, 0x42, 0xf5, 0xe3, 0x2f, 0x8a, - 0x8c, 0x7b, 0x28, 0x4a, 0x5f, 0xfb, 0xe2, 0x83, 0x4c, 0x6b, 0xe7, 0x41, 0xd5, 0x5e, 0x0a, 0x52, 0x2c, 0x6b, 0x63, 0x59, 0x7a, 0x72, 0x7a, 0x7a, 0x43, 0x61, 0x02, 0x51, 0xfc, 0x5e, 0x5e, 0x5a, - 0x44, 0x59, 0x02, 0x49, 0x8f, 0xed, 0xa5, 0xa7, 0x03, 0x59, 0x43, 0x51, 0xf7, 0x85, 0xdf, 0xaa, 0x43, 0x59, 0x03, 0x51, 0xda, 0xbd, 0x0a, 0x0f, 0x43, 0x59, 0x02, 0x51, 0x68, 0xbf, 0xe0, 0xe0, - 0x63, 0x59, 0x22, 0x51, 0x7d, 0xfb, 0x23, 0xf9, 0x63, 0x61, 0x22, 0x51, 0xeb, 0xff, 0xbf, 0xdd, 0x64, 0x61, 0x02, 0x59, 0xaa, 0x2d, 0x2b, 0xbf, 0x62, 0x59, 0x03, 0x51, 0x7a, 0x7c, 0xfe, 0xae, - 0x43, 0x59, 0x02, 0x49, 0x7a, 0xff, 0xf0, 0x5e, 0x43, 0x59, 0x02, 0x51, 0x37, 0xff, 0xd7, 0xfd, 0xa3, 0x61, 0x02, 0x51, 0x2f, 0x2b, 0xf5, 0xd5, 0xa4, 0x69, 0x42, 0x59, 0xdf, 0xae, 0xae, 0xbf, - 0xa4, 0x69, 0x43, 0x59, 0x7f, 0xaa, 0x2a, 0x8b, 0xc3, 0x69, 0x64, 0x61, 0x7f, 0xbf, 0x22, 0x2a, 0xa4, 0x69, 0x83, 0x61, 0x5d, 0xb4, 0x00, 0xd3, 0xc4, 0x69, 0x83, 0x61, 0xef, 0xff, 0x3f, 0x5f, - 0xa4, 0x69, 0x63, 0x61, 0x68, 0xe2, 0xba, 0x7c, 0xc4, 0x69, 0x82, 0x61, 0x6f, 0x29, 0xe9, 0x85, 0xc4, 0x69, 0x62, 0x61, 0xf8, 0xf2, 0x7e, 0xff, 0x62, 0x69, 0xc4, 0x61, 0xfe, 0x2a, 0xff, 0xbe, - 0xc4, 0x69, 0x83, 0x61, 0xaf, 0x6b, 0x75, 0xd6, 0xc4, 0x69, 0x62, 0x61, 0xe8, 0x3f, 0xb7, 0xfe, 0xa4, 0x69, 0x63, 0x61, 0x3b, 0xab, 0xb8, 0xd5, 0xa3, 0x69, 0x42, 0x61, 0xa0, 0xde, 0xa2, 0xfb, - 0x83, 0x69, 0x62, 0x59, 0xbe, 0xbc, 0xfa, 0xbf, 0xa4, 0x69, 0x63, 0x61, 0xa7, 0x2c, 0x89, 0xb7, 0xa7, 0x7a, 0x63, 0x61, 0x55, 0x55, 0xf5, 0x8b, 0xe8, 0x8a, 0xe4, 0x69, 0x8f, 0xf5, 0xaf, 0x20, - 0xeb, 0xab, 0x86, 0x82, 0xaf, 0xd5, 0x2f, 0x03, 0x6c, 0xb4, 0x28, 0x93, 0xbf, 0xa9, 0x2a, 0x2a, 0xce, 0xc4, 0x89, 0xa3, 0x2b, 0x2a, 0x2a, 0xd2, 0x6e, 0xac, 0x66, 0x41, 0xfc, 0xfe, 0x5f, 0xfd, - 0xca, 0x6a, 0x46, 0x31, 0x70, 0xde, 0x55, 0x56, 0xea, 0x62, 0x46, 0x39, 0x2f, 0x2d, 0xd5, 0xd5, 0x6b, 0x73, 0x49, 0x5a, 0x0a, 0xab, 0xad, 0xf5, 0x6b, 0x7b, 0xc6, 0x41, 0x00, 0x5a, 0xfe, 0xba, - 0x0a, 0x7b, 0xc7, 0x41, 0xa0, 0x0b, 0xfa, 0xf6, 0x0b, 0x73, 0x66, 0x39, 0xa8, 0xfe, 0x77, 0xae, 0xa9, 0x62, 0x46, 0x31, 0x00, 0xaa, 0x7f, 0xff, 0xa9, 0x5a, 0x67, 0x31, 0x2c, 0xe2, 0x2d, 0x2f, - 0x2a, 0x73, 0xe7, 0x41, 0x82, 0xf5, 0xde, 0x57, 0xe9, 0x6a, 0x87, 0x39, 0x0b, 0x2b, 0x5f, 0xeb, 0x4a, 0x6b, 0xc7, 0x41, 0x82, 0xab, 0xbf, 0xfd, 0x0a, 0x6b, 0x08, 0x4a, 0x0a, 0xee, 0xab, 0xf7, - 0x2b, 0x73, 0x28, 0x52, 0x68, 0xae, 0x8f, 0xa7, 0x2b, 0x73, 0x88, 0x5a, 0x1f, 0xa0, 0xea, 0x92, 0x4b, 0x73, 0xe7, 0x49, 0x56, 0xfe, 0xfe, 0x82, 0x6b, 0x83, 0x89, 0x62, 0xad, 0x22, 0x2d, 0x67, - 0x6b, 0x7b, 0xe6, 0x41, 0x00, 0xa0, 0xda, 0xad, 0xc9, 0x62, 0xa6, 0x39, 0xf8, 0xfc, 0xf8, 0x58, 0x6b, 0x73, 0xe7, 0x41, 0xaf, 0x0b, 0x2d, 0x2d, 0xec, 0x83, 0xea, 0x62, 0x0b, 0x0a, 0x7a, 0x5f, - 0xcc, 0x83, 0xa9, 0x5a, 0x80, 0xf8, 0xad, 0xef, 0x2b, 0x6b, 0x28, 0x4a, 0x86, 0xb8, 0xb4, 0xd6, 0x8b, 0x7b, 0x28, 0x4a, 0x2f, 0xba, 0x7a, 0xd7, 0xec, 0x83, 0x89, 0x5a, 0xa8, 0xaa, 0xed, 0xd5, - 0x29, 0x83, 0x85, 0x49, 0xd7, 0xf5, 0x83, 0x8b, 0xed, 0x93, 0x45, 0x39, 0x5f, 0xff, 0xfe, 0xb4, 0x8f, 0xa4, 0x64, 0x39, 0xed, 0x8b, 0xca, 0x58, 0x27, 0x5a, 0x85, 0x39, 0xee, 0x72, 0x57, 0x2d, - 0x28, 0x52, 0xa5, 0x41, 0xf6, 0x3d, 0xa3, 0x89, 0x28, 0x52, 0xc6, 0x41, 0x7a, 0x7f, 0x80, 0xa2, 0xca, 0x6a, 0x44, 0x39, 0xff, 0xff, 0xfd, 0x0d, 0x6b, 0x83, 0x44, 0x39, 0x55, 0x7d, 0xcb, 0x20, - 0xe9, 0x72, 0x24, 0x39, 0xd5, 0xdd, 0x9f, 0x88, 0xed, 0x8b, 0x64, 0x39, 0xf5, 0xbd, 0xf0, 0x55, 0xcb, 0x83, 0x23, 0x31, 0xeb, 0x82, 0xf7, 0xff, 0x8a, 0x83, 0x64, 0x31, 0x62, 0x57, 0xd7, 0xdf, - 0xe9, 0x6a, 0x85, 0x31, 0xff, 0xdd, 0xff, 0xa2, 0x2a, 0x6b, 0x64, 0x31, 0xba, 0xaa, 0x02, 0xd7, 0xa8, 0x5a, 0x65, 0x31, 0xbf, 0x2d, 0xb6, 0xf7, 0xe9, 0x6a, 0x85, 0x31, 0x82, 0xba, 0x2f, 0xd5, - 0xca, 0x62, 0xe7, 0x41, 0x5f, 0x8a, 0x6d, 0xab, 0xcd, 0x7b, 0xc6, 0x41, 0x55, 0xff, 0xdf, 0x27, 0x70, 0x94, 0x68, 0x52, 0xfd, 0x5d, 0xfd, 0x2a, 0xed, 0x8b, 0x07, 0x4a, 0x5f, 0xef, 0xdf, 0xb0, - 0x4d, 0x9c, 0xc7, 0x39, 0x5f, 0xaf, 0x0a, 0x02, 0x6d, 0xa4, 0x28, 0x52, 0x7d, 0xca, 0x5f, 0x60, 0x6e, 0xa4, 0xca, 0x62, 0xfd, 0xfb, 0x23, 0x5d, 0x2d, 0x94, 0x0a, 0x6b, 0xaf, 0xbd, 0xb8, 0xa2, - 0x4d, 0x9c, 0x23, 0x49, 0x5e, 0x58, 0x7a, 0x00, 0xc6, 0x59, 0x24, 0x49, 0x5f, 0xfb, 0xdf, 0xf0, 0x65, 0x51, 0xc3, 0x40, 0x6c, 0xea, 0xe0, 0xf8, 0x64, 0x51, 0x23, 0x49, 0x9d, 0xc8, 0xfe, 0xde, - 0x64, 0x59, 0x23, 0x49, 0xf3, 0xba, 0xbb, 0xbe, 0x63, 0x59, 0x44, 0x51, 0x7d, 0x55, 0x0f, 0x26, 0xa4, 0x59, 0x03, 0x49, 0x7f, 0xeb, 0xf2, 0xae, 0x64, 0x59, 0x23, 0x49, 0x95, 0xad, 0xb2, 0xab, - 0x63, 0x59, 0x04, 0x51, 0xad, 0xaa, 0xbd, 0x28, 0x64, 0x59, 0x23, 0x51, 0x76, 0xd1, 0xa7, 0xee, 0x64, 0x59, 0x23, 0x51, 0x7f, 0x7b, 0x96, 0x33, 0x63, 0x59, 0x23, 0x49, 0xfa, 0xbd, 0xaf, 0xa8, - 0x63, 0x59, 0x23, 0x51, 0xfd, 0xfd, 0xee, 0xe2, 0x64, 0x61, 0xc2, 0x40, 0x6a, 0xfa, 0xaa, 0x82, 0xa4, 0x61, 0xe3, 0x40, 0x55, 0x55, 0xbe, 0x0a, 0x25, 0x72, 0x03, 0x51, 0xf9, 0xbd, 0xab, 0x02, - 0xa6, 0x82, 0xa4, 0x61, 0xb5, 0xbd, 0x2b, 0x23, 0x86, 0x82, 0x04, 0x7a, 0xa2, 0x82, 0x00, 0x7f, 0x65, 0x82, 0x43, 0x61, 0x78, 0xa8, 0x80, 0x8a, 0x07, 0x93, 0x84, 0x61, 0x25, 0xaf, 0xaf, 0x2e, - 0x8a, 0xa3, 0xc6, 0x8a, 0x35, 0x35, 0xbf, 0x0f, 0x8e, 0xbc, 0x27, 0x52, 0xf4, 0xfe, 0xf6, 0xb4, 0xac, 0x7b, 0x08, 0x4a, 0x57, 0x57, 0xfa, 0xa0, 0x0b, 0x63, 0x28, 0x4a, 0x7d, 0xbb, 0xb7, 0xa8, - 0x2b, 0x6b, 0x08, 0x42, 0xd7, 0xf6, 0xaa, 0x00, 0x2b, 0x6b, 0x86, 0x39, 0xad, 0x7a, 0x82, 0x38, 0x0a, 0x73, 0x07, 0x4a, 0x8a, 0x09, 0xa2, 0xe0, 0x6b, 0x73, 0x89, 0x5a, 0xa2, 0x80, 0xbf, 0x4d, - 0xcc, 0x83, 0x68, 0x52, 0xfa, 0xaa, 0xaa, 0x09, 0xec, 0x8b, 0x08, 0x52, 0xbf, 0xea, 0x82, 0xdc, 0x4b, 0x7b, 0x27, 0x4a, 0xa0, 0x70, 0x7b, 0xee, 0x2a, 0x73, 0x66, 0x31, 0xe2, 0xab, 0xde, 0xaa, - 0xaa, 0x62, 0x86, 0x39, 0x17, 0xbf, 0xca, 0xb0, 0xea, 0x72, 0xc7, 0x41, 0x02, 0xfb, 0x8b, 0x97, 0x0a, 0x73, 0xe7, 0x41, 0x6a, 0x9f, 0xfe, 0xf8, 0xea, 0x72, 0xe7, 0x41, 0x63, 0x8b, 0xab, 0xdd, - 0x2a, 0x73, 0xc7, 0x41, 0x6f, 0xae, 0xe0, 0x37, 0xea, 0x6a, 0xc7, 0x41, 0x7c, 0xee, 0x37, 0xef, 0xca, 0x62, 0xa6, 0x39, 0xfc, 0xdd, 0xba, 0xff, 0xea, 0x6a, 0x08, 0x4a, 0xff, 0xbf, 0x2f, 0xfd, - 0xaa, 0x62, 0xa6, 0x39, 0xd7, 0xce, 0xfc, 0xe0, 0x49, 0x52, 0x66, 0x39, 0xfa, 0x2a, 0xaa, 0xd8, 0xa9, 0x5a, 0xc7, 0x39, 0x2d, 0xaa, 0xfa, 0xfb, 0x0b, 0x6b, 0x28, 0x4a, 0xb2, 0xb7, 0x0d, 0xd5, - 0x2b, 0x73, 0xe7, 0x41, 0x2e, 0x7a, 0xa0, 0x8b, 0x4f, 0x9c, 0xa6, 0x39, 0xde, 0xa3, 0xbe, 0xfa, 0xed, 0x7b, 0x64, 0x51, 0x7f, 0x7a, 0xf8, 0x7e, 0xa4, 0x61, 0x22, 0x59, 0x7a, 0x5e, 0xe2, 0xfa, - 0x44, 0x59, 0x02, 0x49, 0xbf, 0xe8, 0xb8, 0x98, 0x64, 0x61, 0x23, 0x51, 0x7f, 0xff, 0x27, 0x17, 0xa4, 0x61, 0x23, 0x51, 0xd5, 0xfd, 0xe8, 0xca, 0x64, 0x61, 0x02, 0x51, 0x7e, 0xfa, 0xf8, 0xfe, - 0x43, 0x59, 0x22, 0x49, 0xaa, 0x9a, 0x8f, 0x2a, 0x43, 0x59, 0x02, 0x49, 0x7e, 0xaa, 0x2a, 0x0c, 0x64, 0x59, 0x02, 0x51, 0x89, 0x0b, 0xae, 0x28, 0x84, 0x59, 0x03, 0x51, 0xff, 0x7f, 0x57, 0x78, - 0x64, 0x59, 0x03, 0x49, 0xff, 0x77, 0xb5, 0x35, 0x64, 0x51, 0xe2, 0x48, 0xf7, 0xff, 0xf6, 0x8a, 0x84, 0x61, 0x02, 0x49, 0xd5, 0xf5, 0xfd, 0x0a, 0xa4, 0x69, 0x23, 0x51, 0xfd, 0xa9, 0x02, 0x82, - 0xa3, 0x69, 0x64, 0x59, 0xed, 0xf7, 0xa8, 0x22, 0xa4, 0x69, 0x63, 0x61, 0xae, 0xca, 0xf2, 0x6e, 0xc4, 0x69, 0x43, 0x59, 0xae, 0xfb, 0xb7, 0xb3, 0xc4, 0x69, 0x43, 0x61, 0xab, 0xaa, 0xb7, 0x0e, - 0xc4, 0x69, 0x43, 0x61, 0xa8, 0xde, 0xfc, 0x7a, 0x83, 0x69, 0x63, 0x59, 0xaa, 0xb7, 0x0b, 0xaa, 0xc3, 0x69, 0x42, 0x61, 0xa2, 0xf5, 0xaa, 0xea, 0xa4, 0x69, 0x62, 0x61, 0x34, 0x88, 0xea, 0xbd, - 0xc4, 0x69, 0x62, 0x59, 0xfa, 0x8a, 0xb8, 0x7f, 0xc4, 0x69, 0x62, 0x61, 0x7e, 0xaf, 0xaa, 0xff, 0xc4, 0x69, 0x42, 0x61, 0xba, 0xfa, 0x28, 0xde, 0xc3, 0x69, 0x62, 0x61, 0xef, 0xeb, 0xfc, 0x7f, - 0xa4, 0x69, 0x63, 0x59, 0xae, 0xd7, 0xd7, 0x7f, 0xc7, 0x7a, 0x43, 0x59, 0xd5, 0xbf, 0xad, 0x8d, 0x69, 0x93, 0x25, 0x6a, 0xb5, 0x07, 0x81, 0xa8, 0x48, 0x93, 0xa6, 0x82, 0xdc, 0xbe, 0x3f, 0x17, - 0x2c, 0xb4, 0xc7, 0x8a, 0x29, 0x2b, 0xaa, 0x62, 0xad, 0xbc, 0x86, 0x82, 0x2a, 0x2a, 0x82, 0x25, 0xae, 0xc4, 0x64, 0x49, 0xd0, 0xf8, 0xff, 0xe8, 0xaa, 0x6a, 0xe7, 0x49, 0xfe, 0xef, 0xab, 0x68, - 0xeb, 0x72, 0x87, 0x39, 0x5f, 0xfd, 0x0b, 0x0b, 0x0b, 0x73, 0x66, 0x39, 0x95, 0xb7, 0xbc, 0xa8, 0x4c, 0x7b, 0x48, 0x5a, 0xfd, 0x7f, 0x5a, 0x37, 0xea, 0x72, 0xc8, 0x49, 0x8a, 0xeb, 0xf7, 0x9f, - 0xeb, 0x72, 0xa6, 0x41, 0x7b, 0x25, 0xa7, 0xfc, 0xca, 0x62, 0x87, 0x41, 0xbb, 0x2c, 0x37, 0xfd, 0x8a, 0x62, 0xa7, 0x41, 0x7e, 0x5e, 0x78, 0xff, 0x69, 0x5a, 0x66, 0x31, 0x0a, 0xbf, 0xbf, 0x7f, - 0x49, 0x52, 0xa7, 0x41, 0xda, 0x7f, 0x5e, 0x3b, 0xaa, 0x6a, 0xa7, 0x39, 0xff, 0xd5, 0x5d, 0xa0, 0xaa, 0x6a, 0xe8, 0x51, 0xfb, 0xbe, 0x58, 0xde, 0xaa, 0x6a, 0xc7, 0x49, 0xaa, 0xa8, 0x8b, 0xd7, - 0x0a, 0x6b, 0x08, 0x52, 0x8b, 0xdf, 0x5f, 0xf7, 0x0a, 0x73, 0xa7, 0x39, 0x2a, 0xfe, 0xfd, 0xf7, 0x6b, 0x7b, 0x27, 0x52, 0xa0, 0x85, 0xaf, 0x2d, 0x6c, 0x83, 0x08, 0x4a, 0xfa, 0x8a, 0x5a, 0x7e, - 0xca, 0x62, 0xc7, 0x41, 0xbc, 0xf7, 0xfb, 0xf0, 0x28, 0x4a, 0x87, 0x39, 0x6c, 0xdf, 0x5f, 0x54, 0xe9, 0x62, 0xa7, 0x41, 0x3d, 0xb5, 0xd5, 0xd5, 0x0a, 0x6b, 0x07, 0x4a, 0x00, 0xa2, 0xa9, 0x2d, - 0x4b, 0x73, 0x28, 0x52, 0xc2, 0x72, 0xde, 0xde, 0xca, 0x62, 0x49, 0x52, 0xb7, 0xab, 0x2b, 0x85, 0x8a, 0x62, 0xc7, 0x41, 0xb8, 0xe6, 0x58, 0x7e, 0xa9, 0x5a, 0x66, 0x39, 0xf2, 0x7f, 0xff, 0xf9, - 0x4d, 0xa4, 0xc8, 0x7a, 0xad, 0xab, 0x0b, 0x00, 0x0b, 0x9c, 0x84, 0x49, 0x2c, 0x5c, 0x5c, 0x58, 0x4a, 0x73, 0x86, 0x39, 0xf8, 0xdd, 0x55, 0x2d, 0xef, 0xac, 0xc7, 0x41, 0x55, 0xd5, 0xb5, 0x82, - 0xce, 0xa4, 0xc6, 0x41, 0xf5, 0xab, 0x60, 0x5f, 0xae, 0x9c, 0x04, 0x31, 0xbe, 0x02, 0x55, 0xd7, 0x8d, 0xa4, 0x44, 0x29, 0xa8, 0xe0, 0x55, 0x55, 0x89, 0x83, 0x44, 0x31, 0xe0, 0xfd, 0xff, 0xfd, - 0x67, 0x5a, 0x85, 0x39, 0xe8, 0x7a, 0xdf, 0xf5, 0xe7, 0x49, 0x24, 0x29, 0xde, 0x77, 0xf0, 0xa0, 0x28, 0x4a, 0x04, 0x29, 0x5f, 0xea, 0xbf, 0x62, 0x4c, 0x6b, 0x65, 0x31, 0xd7, 0xf5, 0xff, 0x21, - 0xad, 0x83, 0x65, 0x31, 0x5d, 0xd5, 0x2b, 0x00, 0xed, 0x8b, 0x66, 0x31, 0xf5, 0xef, 0xb8, 0x0a, 0x8f, 0xa4, 0x46, 0x29, 0x57, 0xbb, 0xaa, 0x02, 0xae, 0xb4, 0xa7, 0x39, 0x55, 0xfa, 0x2a, 0xab, - 0xaf, 0xb4, 0xe7, 0x39, 0xad, 0xae, 0xac, 0x02, 0x0e, 0xbd, 0x2b, 0x73, 0x75, 0x5e, 0x0a, 0xf8, 0x6e, 0xa4, 0x47, 0x62, 0xe3, 0x02, 0x00, 0x70, 0xae, 0xac, 0x86, 0x39, 0x02, 0xaa, 0x80, 0x55, - 0x0b, 0x9c, 0xa6, 0x31, 0x80, 0x28, 0xea, 0x55, 0x8e, 0xa4, 0xc7, 0x39, 0xad, 0x80, 0xd7, 0x55, 0x8e, 0xac, 0xe8, 0x41, 0x0a, 0x5f, 0x5d, 0x75, 0x2b, 0xa4, 0xe8, 0x39, 0xe8, 0x5d, 0xff, 0x77, - 0x6a, 0x4a, 0xc7, 0x39, 0x78, 0x7b, 0xe8, 0x80, 0x0b, 0x63, 0x67, 0x31, 0x2f, 0x57, 0x57, 0xdf, 0x49, 0x52, 0x86, 0x31, 0xe8, 0xe5, 0xf7, 0x5b, 0xa4, 0x59, 0x23, 0x49, 0xd5, 0xfd, 0xaa, 0xe2, - 0x64, 0x59, 0x42, 0x51, 0xdb, 0xd7, 0xde, 0x6f, 0xc4, 0x61, 0x22, 0x49, 0xbf, 0xbf, 0x2f, 0xb5, 0xa4, 0x61, 0x43, 0x51, 0x76, 0xfa, 0xa8, 0xf5, 0xa4, 0x61, 0x23, 0x59, 0x95, 0xaf, 0x02, 0xfa, - 0x84, 0x61, 0x42, 0x59, 0xa7, 0x2e, 0xdb, 0x7d, 0xa4, 0x61, 0x42, 0x59, 0xfe, 0xb0, 0x77, 0x55, 0x84, 0x59, 0x43, 0x51, 0x7e, 0x5a, 0xfa, 0xff, 0x64, 0x59, 0x03, 0x51, 0x2c, 0xfa, 0x02, 0x2b, - 0x63, 0x59, 0x03, 0x51, 0x0a, 0xad, 0xfe, 0xa8, 0x64, 0x59, 0x23, 0x51, 0xa2, 0xb7, 0xfa, 0xd0, 0x25, 0x72, 0x43, 0x51, 0x2d, 0xa9, 0xb5, 0x75, 0x04, 0x72, 0x43, 0x59, 0x20, 0xbe, 0xb7, 0xb7, - 0x85, 0x7a, 0x43, 0x61, 0x0a, 0x6f, 0x7e, 0x7f, 0x24, 0x72, 0x22, 0x59, 0xf0, 0xd5, 0x55, 0xb7, 0xe7, 0x92, 0xc3, 0x69, 0xb5, 0xbd, 0xb5, 0x2f, 0xe6, 0x8a, 0x45, 0x7a, 0xa5, 0xfb, 0x5f, 0xac, - 0xea, 0xab, 0x86, 0x82, 0x2f, 0x2d, 0x2d, 0x2b, 0x8d, 0xbc, 0x27, 0x52, 0x54, 0x54, 0x54, 0xfc, 0x0a, 0x6b, 0xe7, 0x41, 0x23, 0x7f, 0xad, 0x15, 0x8b, 0x7b, 0x08, 0x4a, 0xa8, 0xad, 0xff, 0x82, - 0x4b, 0x7b, 0x89, 0x5a, 0xfa, 0x2a, 0xbb, 0x52, 0x6c, 0x7b, 0xe7, 0x51, 0xba, 0xaa, 0xa2, 0x77, 0x4b, 0x73, 0x28, 0x62, 0x82, 0x2a, 0x00, 0xfd, 0xac, 0x83, 0x07, 0x4a, 0x2a, 0x2a, 0xe2, 0x5f, - 0x0c, 0x94, 0xe8, 0x49, 0xe0, 0x5f, 0x7d, 0xed, 0xea, 0x72, 0x48, 0x5a, 0xaf, 0xad, 0xad, 0x2b, 0x2b, 0x7b, 0x07, 0x5a, 0x62, 0x3a, 0xaa, 0xf0, 0x88, 0x62, 0xe7, 0x49, 0x09, 0xd6, 0x88, 0xef, - 0x4c, 0x83, 0x86, 0x41, 0xf8, 0xdf, 0x7a, 0xfb, 0xca, 0x62, 0xe7, 0x41, 0x2b, 0xfb, 0xad, 0xdf, 0x89, 0x6a, 0xa7, 0x39, 0xdc, 0xf8, 0xaa, 0xaf, 0xca, 0x62, 0x08, 0x4a, 0xc7, 0xeb, 0xdf, 0xbd, - 0xca, 0x62, 0x08, 0x42, 0xbf, 0xbd, 0x5f, 0xf0, 0xea, 0x6a, 0xc7, 0x41, 0xda, 0x2b, 0xb9, 0x3f, 0x0a, 0x6b, 0xe7, 0x41, 0xd7, 0x56, 0xbb, 0xe0, 0x48, 0x4a, 0xa7, 0x39, 0xaa, 0xfe, 0xec, 0xf7, - 0xc9, 0x6a, 0xc7, 0x39, 0x8b, 0xdd, 0xb9, 0xdd, 0x0b, 0x73, 0x86, 0x41, 0xdf, 0x5a, 0x58, 0x72, 0x69, 0x5a, 0x66, 0x39, 0xb2, 0x00, 0x17, 0xfe, 0x28, 0x52, 0xa7, 0x39, 0x38, 0x5e, 0x72, 0xaf, - 0xa9, 0x6a, 0x87, 0x31, 0x2b, 0xb7, 0x95, 0x57, 0x2a, 0x73, 0xa7, 0x41, 0xfe, 0xab, 0x2b, 0xfd, 0x2b, 0x73, 0x65, 0x51, 0x5e, 0x78, 0xfe, 0xee, 0x23, 0x61, 0x84, 0x59, 0xbf, 0xef, 0xfd, 0x29, - 0x84, 0x69, 0x22, 0x51, 0x57, 0xfb, 0x02, 0xaa, 0x84, 0x61, 0x02, 0x49, 0xd7, 0x20, 0x00, 0x82, 0x63, 0x61, 0x02, 0x51, 0xcb, 0xda, 0xd8, 0xa0, 0x63, 0x59, 0x02, 0x51, 0x55, 0x5f, 0xde, 0x00, - 0x63, 0x59, 0x02, 0x51, 0x2d, 0x2b, 0xea, 0xa2, 0x64, 0x59, 0x22, 0x51, 0x83, 0xb7, 0xda, 0xda, 0x64, 0x61, 0x22, 0x51, 0xa2, 0xbf, 0x3d, 0xb5, 0x84, 0x61, 0x23, 0x59, 0x3e, 0xa3, 0x9f, 0xbf, - 0x84, 0x61, 0x42, 0x59, 0xaf, 0x68, 0xeb, 0xcb, 0x83, 0x61, 0x22, 0x59, 0xae, 0x29, 0xba, 0xfa, 0xa4, 0x69, 0x42, 0x59, 0xef, 0xea, 0xa3, 0xaf, 0xc3, 0x69, 0x83, 0x61, 0xc8, 0x89, 0x2a, 0x7d, - 0x04, 0x6a, 0x83, 0x61, 0xbd, 0xab, 0x8a, 0xbb, 0xe4, 0x71, 0x62, 0x61, 0x7f, 0x68, 0xe0, 0xfe, 0xa3, 0x71, 0x64, 0x61, 0x2f, 0xbb, 0xef, 0x55, 0xa3, 0x69, 0x43, 0x59, 0x82, 0xa8, 0xea, 0xfd, - 0x84, 0x61, 0x43, 0x59, 0x80, 0xaa, 0x1a, 0x1b, 0xa4, 0x69, 0x63, 0x59, 0x8f, 0x8b, 0xaf, 0xa7, 0xa3, 0x61, 0x44, 0x59, 0xc0, 0xee, 0xf8, 0x6e, 0xa4, 0x61, 0x43, 0x59, 0x2d, 0x2a, 0xaa, 0xd5, - 0xc4, 0x61, 0x03, 0x51, 0xaa, 0x8a, 0xaa, 0xfd, 0x84, 0x61, 0x22, 0x59, 0x8a, 0x8a, 0xf6, 0xe3, 0x83, 0x61, 0xe2, 0x48, 0x80, 0x02, 0xde, 0xaa, 0x84, 0x59, 0x02, 0x51, 0x2a, 0x2a, 0xbd, 0x2e, - 0x45, 0x72, 0x63, 0x59, 0x55, 0xd5, 0x3d, 0x02, 0x69, 0x9b, 0xa4, 0x61, 0x2d, 0xdf, 0xa7, 0x0b, 0xaa, 0x9b, 0x65, 0x7a, 0x76, 0xf9, 0xaa, 0x08, 0x2c, 0xb4, 0x86, 0x7a, 0xb5, 0x0b, 0x0a, 0x02, - 0x4c, 0xb4, 0x8a, 0x9b, 0xbd, 0xaa, 0x20, 0x80, 0x0f, 0xcd, 0xeb, 0xab, 0xb5, 0xbf, 0xab, 0x2b, 0x50, 0xdd, 0xe7, 0x59, 0xfa, 0xf8, 0x7c, 0x57, 0x6a, 0x5a, 0xa7, 0x49, 0xbe, 0x97, 0xff, 0xe3, - 0xa9, 0x62, 0xc7, 0x51, 0xeb, 0x2b, 0xbd, 0xf5, 0xea, 0x72, 0xe8, 0x49, 0xfa, 0x7e, 0xaf, 0x2f, 0xaa, 0x6a, 0xe7, 0x49, 0x87, 0x73, 0xe8, 0x08, 0x4c, 0x83, 0x86, 0x41, 0xab, 0x8d, 0xab, 0xbb, - 0x2c, 0x7b, 0x86, 0x41, 0xe2, 0xfe, 0xf0, 0x78, 0xaa, 0x6a, 0x67, 0x39, 0x7f, 0xfb, 0xba, 0x0f, 0x4b, 0x73, 0x87, 0x41, 0xfd, 0xfd, 0xaf, 0x80, 0xca, 0x6a, 0xc7, 0x41, 0x65, 0xcf, 0xe8, 0x72, - 0x69, 0x52, 0xa7, 0x39, 0xbd, 0x3a, 0x9f, 0xfd, 0xa9, 0x62, 0xc6, 0x31, 0x20, 0x9b, 0xfe, 0xbf, 0x49, 0x62, 0xa6, 0x31, 0xaa, 0xea, 0x8a, 0x37, 0xca, 0x6a, 0x08, 0x52, 0xb7, 0xa9, 0x89, 0xc8, - 0xeb, 0x6a, 0x24, 0x29, 0xa0, 0xbe, 0x08, 0x9a, 0xaa, 0x62, 0x65, 0x31, 0x82, 0x2b, 0xad, 0xef, 0x6c, 0x83, 0xe7, 0x41, 0xa2, 0xf7, 0xf5, 0xd5, 0xca, 0x6a, 0x08, 0x4a, 0xf8, 0x29, 0x0e, 0x27, - 0xaa, 0x6a, 0x66, 0x31, 0xfa, 0x7a, 0xfe, 0xf8, 0xc8, 0x41, 0x66, 0x31, 0xff, 0x7d, 0xa7, 0xf0, 0xc7, 0x41, 0x66, 0x31, 0x8b, 0xfa, 0xbe, 0xb5, 0x69, 0x5a, 0xa7, 0x39, 0x25, 0x2d, 0xd5, 0xf5, - 0x89, 0x62, 0xa8, 0x49, 0xe8, 0x5e, 0xde, 0xaf, 0x49, 0x5a, 0xa7, 0x41, 0xe2, 0x9a, 0x88, 0xe0, 0x08, 0x4a, 0x87, 0x39, 0x2f, 0x96, 0xae, 0xb7, 0xaa, 0x62, 0xe7, 0x41, 0x7f, 0xed, 0x8b, 0x83, - 0x0f, 0xbd, 0x48, 0x52, 0x8a, 0x5f, 0xf7, 0xff, 0x0f, 0xad, 0xc6, 0x49, 0xf7, 0xaf, 0xe2, 0x55, 0xef, 0xac, 0x44, 0x39, 0x2b, 0xe0, 0xf5, 0x75, 0x8b, 0xac, 0x45, 0x31, 0x5c, 0x55, 0x57, 0xf5, - 0x28, 0x42, 0x24, 0x31, 0xd5, 0xff, 0xbb, 0x22, 0x4c, 0x7b, 0x65, 0x31, 0xdd, 0x55, 0xdf, 0x2b, 0xac, 0x83, 0xa6, 0x39, 0x55, 0x75, 0x7f, 0x28, 0x2d, 0x94, 0x86, 0x39, 0x55, 0x57, 0xff, 0x00, - 0x0d, 0x94, 0xa6, 0x39, 0x55, 0xd5, 0x23, 0x78, 0x8f, 0xa4, 0x85, 0x39, 0x55, 0xf5, 0x00, 0xa5, 0x8e, 0xa4, 0xc7, 0x41, 0xa5, 0xaf, 0xba, 0x82, 0xcf, 0xb4, 0x2c, 0x7b, 0xd7, 0xaa, 0xbe, 0x0b, - 0xae, 0xb4, 0xaa, 0x72, 0xaf, 0xaa, 0x02, 0x78, 0xae, 0xb4, 0xc5, 0x49, 0x0a, 0x00, 0xf8, 0x55, 0xce, 0xb4, 0x66, 0x39, 0xbe, 0xa0, 0x5f, 0x55, 0x8e, 0xb4, 0xc7, 0x41, 0x08, 0x7a, 0x55, 0x55, - 0xcd, 0xbc, 0x87, 0x39, 0x80, 0x55, 0x55, 0x55, 0x28, 0x83, 0x47, 0x31, 0xfc, 0x55, 0x57, 0x55, 0xe8, 0x49, 0x67, 0x29, 0xd0, 0xaf, 0xb5, 0xed, 0xe8, 0x41, 0x87, 0x31, 0x37, 0xe7, 0x3f, 0xef, - 0x29, 0x42, 0x87, 0x31, 0x0a, 0xdd, 0xd7, 0xe2, 0x09, 0x42, 0x87, 0x31, 0xbe, 0xb8, 0xb4, 0xe9, 0x08, 0x42, 0x66, 0x31, 0x82, 0xc0, 0x8b, 0x27, 0x6a, 0x52, 0x66, 0x29, 0x2b, 0xf5, 0x5f, 0x77, - 0x8a, 0x52, 0x87, 0x29, 0x80, 0x0b, 0xad, 0xdd, 0x4a, 0x4a, 0x47, 0x29, 0x8a, 0xa8, 0xa8, 0xd8, 0x29, 0x4a, 0x86, 0x39, 0x78, 0x6b, 0xf7, 0xea, 0x84, 0x51, 0x23, 0x49, 0xfc, 0x7e, 0x7e, 0xbe, - 0x64, 0x59, 0x23, 0x49, 0xdb, 0x6f, 0xab, 0x88, 0x64, 0x59, 0x23, 0x49, 0xaf, 0xff, 0xaf, 0xbe, 0xa4, 0x59, 0x23, 0x51, 0x55, 0xd5, 0xff, 0x2f, 0x84, 0x59, 0x43, 0x51, 0xdf, 0x7b, 0x7e, 0x6c, - 0x83, 0x61, 0x22, 0x51, 0xea, 0xbe, 0xaf, 0xc9, 0x63, 0x59, 0x23, 0x59, 0x2a, 0xff, 0xfb, 0xa8, 0x64, 0x61, 0x02, 0x59, 0x88, 0xab, 0xb0, 0xda, 0x43, 0x61, 0x22, 0x59, 0xbf, 0x05, 0x8e, 0x97, - 0x64, 0x59, 0x02, 0x51, 0x8b, 0xa8, 0xaa, 0xef, 0x63, 0x59, 0x02, 0x51, 0xae, 0x8a, 0x08, 0x6e, 0x63, 0x59, 0x22, 0x51, 0xbd, 0xda, 0xbf, 0xd0, 0x64, 0x61, 0x22, 0x51, 0x02, 0xeb, 0xaa, 0xea, - 0x84, 0x61, 0x43, 0x59, 0xec, 0x57, 0xd5, 0x57, 0x45, 0x7a, 0x43, 0x59, 0x27, 0xb5, 0xbd, 0xa5, 0xc6, 0x8a, 0xe5, 0x71, 0x8a, 0xed, 0xbf, 0xbf, 0xe7, 0x8a, 0x45, 0x7a, 0xfc, 0xbf, 0x2a, 0x09, - 0x2b, 0xb4, 0xe7, 0x8a, 0xbd, 0x2f, 0x2f, 0x2f, 0xce, 0xc4, 0x07, 0x52, 0x5c, 0x54, 0xf6, 0x56, 0xc9, 0x62, 0xa6, 0x41, 0xb8, 0xed, 0xbe, 0xeb, 0x0a, 0x6b, 0xc7, 0x41, 0x55, 0x2f, 0xfe, 0xaf, - 0xea, 0x6a, 0xe7, 0x49, 0xa9, 0x0a, 0xe2, 0xde, 0xea, 0x72, 0x27, 0x52, 0xfe, 0xfb, 0xed, 0x2a, 0x0a, 0x73, 0xe7, 0x49, 0xbe, 0xb7, 0x2d, 0xc8, 0xea, 0x72, 0xa6, 0x49, 0xc0, 0xd7, 0x80, 0xb9, - 0xca, 0x6a, 0xc7, 0x41, 0x75, 0x2a, 0x88, 0xb2, 0x0b, 0x73, 0xe7, 0x49, 0xed, 0x27, 0xd7, 0xff, 0x2b, 0x83, 0xe6, 0x51, 0x2a, 0x7a, 0xea, 0xa8, 0x0b, 0x83, 0x87, 0x41, 0xfc, 0xf6, 0x57, 0x57, - 0xa9, 0x72, 0x87, 0x39, 0xf2, 0xe2, 0x7b, 0xbf, 0x48, 0x52, 0x87, 0x39, 0xa3, 0xba, 0xe9, 0xae, 0xea, 0x72, 0x87, 0x41, 0xa3, 0xfa, 0x7d, 0x57, 0x28, 0x52, 0x66, 0x31, 0x06, 0xea, 0xae, 0xb5, - 0xe8, 0x49, 0x45, 0x21, 0x2a, 0xda, 0xfa, 0xae, 0x08, 0x4a, 0xa7, 0x39, 0x96, 0x57, 0xcb, 0xab, 0xca, 0x62, 0x67, 0x31, 0x2a, 0xfd, 0xbf, 0x5f, 0xaa, 0x62, 0xe7, 0x39, 0xbe, 0xe2, 0xd5, 0xff, - 0x28, 0x52, 0xc6, 0x39, 0x0e, 0x3a, 0xe2, 0x7a, 0xaa, 0x62, 0xc7, 0x41, 0xa0, 0xbe, 0xad, 0xbd, 0x49, 0x5a, 0xa7, 0x41, 0xad, 0xe0, 0xa2, 0x98, 0x48, 0x5a, 0xa7, 0x41, 0xee, 0x3f, 0x98, 0x34, - 0x89, 0x6a, 0x87, 0x39, 0x57, 0x70, 0xfa, 0xea, 0x49, 0x52, 0x66, 0x39, 0xbf, 0xfd, 0xf7, 0xfc, 0x28, 0x5a, 0x66, 0x31, 0xab, 0xdf, 0xbf, 0x2f, 0x42, 0x69, 0x06, 0x52, 0x0b, 0xab, 0xad, 0xbd, - 0xa4, 0x69, 0x63, 0x61, 0x6e, 0xde, 0x81, 0x5b, 0x83, 0x69, 0x22, 0x59, 0xc8, 0xf2, 0xe8, 0x7f, 0x63, 0x69, 0x02, 0x51, 0xa2, 0xbe, 0xfa, 0xf5, 0x63, 0x61, 0x22, 0x51, 0xa8, 0xf2, 0xbf, 0xf7, - 0x63, 0x59, 0x22, 0x51, 0x9f, 0xe6, 0xe2, 0xf9, 0x64, 0x59, 0x22, 0x51, 0x72, 0xf9, 0x78, 0xfa, 0x43, 0x59, 0x03, 0x49, 0x0a, 0xa2, 0xbe, 0xda, 0x84, 0x61, 0x03, 0x51, 0xab, 0x0b, 0xf5, 0xd7, - 0x63, 0x61, 0x02, 0x51, 0x08, 0xae, 0xff, 0xf7, 0x43, 0x59, 0x22, 0x51, 0x82, 0xe0, 0x75, 0xdb, 0x83, 0x61, 0x02, 0x49, 0x2b, 0x95, 0x55, 0xff, 0xc4, 0x69, 0x23, 0x59, 0xa2, 0xaa, 0x7f, 0xff, - 0xe4, 0x69, 0x23, 0x59, 0x8a, 0x8b, 0x77, 0xff, 0xc4, 0x69, 0x02, 0x51, 0xa8, 0xfe, 0xd7, 0xff, 0xe5, 0x69, 0x22, 0x51, 0xbf, 0x54, 0x57, 0x57, 0xa4, 0x61, 0x23, 0x59, 0xa8, 0xef, 0xf5, 0x9f, - 0x84, 0x61, 0x23, 0x59, 0x88, 0x7b, 0xaf, 0xf8, 0x84, 0x61, 0x23, 0x59, 0xff, 0xee, 0xb6, 0x8a, 0x84, 0x61, 0x43, 0x59, 0xb3, 0x0a, 0xa7, 0xaa, 0xa4, 0x61, 0x63, 0x59, 0x0f, 0xba, 0xf9, 0x8d, - 0xc4, 0x69, 0x63, 0x59, 0xe8, 0xea, 0xff, 0x5f, 0x84, 0x61, 0x23, 0x59, 0xb8, 0xf8, 0xd0, 0xa1, 0xc4, 0x61, 0x23, 0x59, 0xfe, 0xdf, 0xba, 0x2f, 0x86, 0x72, 0x43, 0x59, 0xd5, 0x35, 0x0b, 0x0a, - 0xe7, 0x82, 0x46, 0x72, 0xbd, 0x2b, 0x8b, 0x83, 0xaa, 0x9b, 0x48, 0x93, 0xfb, 0x2a, 0x0d, 0x2a, 0x0b, 0xac, 0x89, 0x9b, 0xb7, 0x2f, 0x2f, 0x2a, 0x4c, 0xb4, 0xeb, 0xa3, 0x0d, 0xaf, 0xab, 0x2b, - 0xce, 0xc4, 0x0b, 0xac, 0xdf, 0xb5, 0xbf, 0x2b, 0x50, 0xdd, 0xa5, 0x51, 0x8a, 0x42, 0x72, 0x58, 0x48, 0x62, 0xa7, 0x41, 0xa8, 0xd5, 0xfe, 0x7e, 0x08, 0x5a, 0x87, 0x41, 0xa8, 0xa2, 0xba, 0xb7, - 0xea, 0x7a, 0xc7, 0x49, 0xb5, 0xad, 0xad, 0x2d, 0xea, 0x82, 0x29, 0x62, 0x5f, 0xeb, 0xea, 0xe0, 0xeb, 0x7a, 0x27, 0x52, 0x9f, 0xab, 0x02, 0x0d, 0x6c, 0x8b, 0x48, 0x62, 0xcb, 0xfb, 0xfe, 0x57, - 0xea, 0x7a, 0x87, 0x39, 0xea, 0x7a, 0x70, 0x7e, 0xca, 0x7a, 0xa7, 0x41, 0x0f, 0x0b, 0x85, 0xed, 0xea, 0x7a, 0xa7, 0x41, 0x60, 0xa8, 0xfe, 0x7d, 0xaa, 0x62, 0x87, 0x41, 0xf8, 0xff, 0xd5, 0x2b, - 0x28, 0x52, 0x67, 0x31, 0x7f, 0x5e, 0x7e, 0xe8, 0x48, 0x4a, 0x46, 0x31, 0x2f, 0x9d, 0xf5, 0xfe, 0x68, 0x5a, 0xa7, 0x39, 0x8a, 0xff, 0x5f, 0xdd, 0xea, 0x6a, 0x86, 0x39, 0xb5, 0x2f, 0xaf, 0x2f, - 0xaa, 0x72, 0xe7, 0x41, 0xa8, 0xca, 0x7e, 0x5d, 0x49, 0x52, 0xc8, 0x41, 0x50, 0xaa, 0xd7, 0xe3, 0x89, 0x5a, 0xc8, 0x49, 0x21, 0xa7, 0x7f, 0xaa, 0xeb, 0x72, 0xc7, 0x49, 0xa8, 0xaf, 0xf5, 0xca, - 0x49, 0x5a, 0x87, 0x39, 0xd6, 0x7c, 0x57, 0xfa, 0xc8, 0x41, 0x86, 0x39, 0x7d, 0x57, 0xbd, 0x7a, 0xa7, 0x39, 0x66, 0x31, 0xd7, 0xbe, 0xab, 0x05, 0x08, 0x4a, 0x87, 0x39, 0xbd, 0x5b, 0x8b, 0xad, - 0x89, 0x5a, 0xa7, 0x39, 0xef, 0xfd, 0xbd, 0x0f, 0xaa, 0x6a, 0x87, 0x39, 0xaa, 0x77, 0x2a, 0x80, 0xaa, 0x62, 0xa7, 0x41, 0x55, 0x5d, 0xfc, 0x8b, 0x89, 0x5a, 0xa7, 0x41, 0xcd, 0x8b, 0xfa, 0xa7, - 0x4b, 0x7b, 0xc6, 0x41, 0x57, 0x75, 0x2f, 0xbf, 0x2c, 0x94, 0xa6, 0x39, 0x55, 0xbf, 0xe0, 0x5e, 0x0b, 0x9c, 0xa6, 0x41, 0xe9, 0xe0, 0x57, 0xd5, 0x8f, 0x9c, 0xa6, 0x39, 0xaf, 0xf5, 0xb5, 0x2a, - 0xce, 0xb4, 0xe6, 0x49, 0xff, 0xd5, 0x22, 0xe8, 0xcf, 0xb4, 0xa7, 0x41, 0xff, 0xad, 0x80, 0x55, 0x4d, 0x9c, 0xa7, 0x41, 0xd7, 0x08, 0x7a, 0x55, 0xec, 0x9b, 0xa7, 0x39, 0xd7, 0x80, 0x55, 0x55, - 0xaf, 0xa4, 0x66, 0x31, 0xc2, 0x57, 0x57, 0x55, 0x8a, 0x83, 0x67, 0x31, 0x2f, 0x7d, 0xf7, 0x55, 0xa7, 0x72, 0xa8, 0x31, 0x82, 0x55, 0x7d, 0x55, 0x29, 0x7b, 0xa8, 0x31, 0xc2, 0xbd, 0x55, 0xfd, - 0x0b, 0x63, 0xa7, 0x39, 0xef, 0x78, 0xff, 0xd7, 0x69, 0x52, 0xa7, 0x31, 0x58, 0x5f, 0xbf, 0xbf, 0x29, 0x42, 0x67, 0x31, 0x69, 0x7f, 0xea, 0x88, 0x08, 0x42, 0x87, 0x39, 0x2d, 0xb5, 0x9d, 0xfc, - 0xc8, 0x39, 0x26, 0x29, 0x00, 0xa8, 0x08, 0xdc, 0xa8, 0x39, 0x47, 0x29, 0x80, 0x08, 0x80, 0xa7, 0xc8, 0x39, 0x67, 0x31, 0x2a, 0xa5, 0x5f, 0xfc, 0xe8, 0x41, 0x87, 0x31, 0xe7, 0xaf, 0x3d, 0xd9, - 0x08, 0x42, 0x87, 0x31, 0xab, 0xb7, 0x3a, 0x56, 0x29, 0x42, 0xa7, 0x31, 0xff, 0x27, 0xba, 0xd7, 0x29, 0x42, 0x87, 0x39, 0xbf, 0xe0, 0xbe, 0x5f, 0x09, 0x42, 0x67, 0x31, 0xb7, 0xdf, 0x3a, 0xfa, - 0xe8, 0x41, 0x87, 0x31, 0xaf, 0xae, 0xef, 0xef, 0x08, 0x3a, 0x87, 0x31, 0xa3, 0x9d, 0xfd, 0xe2, 0x49, 0x4a, 0x86, 0x41, 0x6a, 0xe8, 0xa8, 0xaf, 0x23, 0x51, 0xa5, 0x49, 0x2b, 0xab, 0xa3, 0x2d, - 0x83, 0x59, 0x44, 0x51, 0x7d, 0xee, 0xe9, 0xa3, 0x64, 0x59, 0x43, 0x51, 0x58, 0x7d, 0x2a, 0x82, 0xa4, 0x61, 0x43, 0x51, 0xbb, 0xed, 0xfb, 0xfe, 0x63, 0x61, 0x22, 0x49, 0x68, 0x60, 0x42, 0xe0, - 0x63, 0x59, 0xe2, 0x48, 0xe0, 0xaa, 0x7e, 0x7f, 0x63, 0x59, 0xe2, 0x48, 0x0a, 0xaa, 0xf6, 0x57, 0x43, 0x59, 0xe2, 0x40, 0x00, 0xbe, 0xbf, 0x75, 0x43, 0x59, 0xe2, 0x48, 0x2a, 0xa8, 0xaa, 0xc9, - 0x83, 0x59, 0x02, 0x51, 0xaa, 0xa0, 0xfb, 0xa7, 0x43, 0x59, 0x42, 0x51, 0x02, 0x28, 0x97, 0xf8, 0x84, 0x61, 0x03, 0x51, 0x57, 0xff, 0xaf, 0x8b, 0xa4, 0x61, 0x22, 0x51, 0xff, 0xdd, 0xaf, 0x2f, - 0x04, 0x6a, 0x23, 0x59, 0x55, 0xfd, 0xd8, 0xff, 0xa6, 0x82, 0x63, 0x61, 0xb5, 0xbd, 0x2a, 0xfb, 0xc7, 0x92, 0xa3, 0x69, 0xab, 0xfa, 0xa8, 0x77, 0x07, 0x93, 0x24, 0x7a, 0x2f, 0x0b, 0xbb, 0xfd, - 0x0b, 0xb4, 0xe6, 0x8a, 0x2f, 0x2f, 0x3d, 0x2d, 0x0c, 0xac, 0xc7, 0x41, 0x5c, 0x74, 0xd4, 0xd4, 0xa9, 0x5a, 0xa7, 0x39, 0xaa, 0x0a, 0x0a, 0xfd, 0x89, 0x5a, 0xc7, 0x41, 0xac, 0xde, 0x50, 0xa3, - 0xaa, 0x62, 0xc7, 0x49, 0xb0, 0xae, 0xa9, 0xf7, 0xca, 0x62, 0xe8, 0x49, 0x3e, 0x5e, 0x88, 0x02, 0xaa, 0x6a, 0x07, 0x4a, 0x02, 0x9d, 0xf7, 0xa0, 0xaa, 0x6a, 0x08, 0x4a, 0xa0, 0x78, 0xae, 0xaa, - 0xea, 0x7a, 0x28, 0x5a, 0xea, 0xfa, 0x70, 0xea, 0x89, 0x62, 0xe7, 0x49, 0xaf, 0xfc, 0xda, 0x42, 0xea, 0x7a, 0xe7, 0x51, 0x7a, 0x62, 0xea, 0x7d, 0x08, 0x4a, 0xa7, 0x39, 0x7f, 0x57, 0x5e, 0x87, - 0xe8, 0x41, 0x26, 0x39, 0x82, 0x82, 0x7e, 0x80, 0x08, 0x4a, 0x46, 0x39, 0xab, 0x8a, 0xbd, 0x3e, 0x29, 0x5a, 0xa7, 0x39, 0xeb, 0x7a, 0x5d, 0xf8, 0x08, 0x42, 0xa7, 0x39, 0x37, 0x15, 0xbd, 0xfe, - 0x08, 0x42, 0x87, 0x39, 0x82, 0x60, 0xaa, 0xad, 0xe8, 0x49, 0x87, 0x39, 0xcf, 0xa0, 0x80, 0x2d, 0xc8, 0x41, 0x86, 0x29, 0xdf, 0x20, 0x00, 0x00, 0x69, 0x52, 0x46, 0x29, 0x28, 0xff, 0xdf, 0xff, - 0x68, 0x52, 0x66, 0x31, 0x28, 0xbb, 0xfe, 0x55, 0x48, 0x52, 0xc7, 0x41, 0x8f, 0xfd, 0xee, 0xbf, 0x49, 0x5a, 0xe7, 0x39, 0xaa, 0xff, 0x3f, 0x57, 0x48, 0x52, 0xa7, 0x41, 0x78, 0x5e, 0xdc, 0x7f, - 0x48, 0x5a, 0xa7, 0x41, 0x09, 0x5e, 0xd7, 0xd2, 0x89, 0x62, 0x86, 0x39, 0x8a, 0x7e, 0x82, 0xe8, 0x69, 0x5a, 0x67, 0x39, 0x2b, 0xe0, 0xd8, 0x5e, 0x26, 0x6a, 0x65, 0x49, 0xf8, 0xeb, 0xed, 0xed, - 0x84, 0x69, 0x43, 0x59, 0xa2, 0xfa, 0xee, 0xab, 0x63, 0x61, 0x22, 0x51, 0xf8, 0x5f, 0xd7, 0xda, 0x84, 0x59, 0x02, 0x51, 0xdf, 0xfd, 0xfd, 0x8a, 0x24, 0x59, 0x02, 0x49, 0x48, 0xaa, 0xf7, 0xee, - 0x64, 0x59, 0x03, 0x49, 0xb9, 0x77, 0xee, 0xa2, 0x44, 0x59, 0x02, 0x51, 0xdf, 0xa9, 0xa0, 0x80, 0x43, 0x59, 0xe2, 0x50, 0xd7, 0xbf, 0xbf, 0xa2, 0x63, 0x59, 0x02, 0x51, 0xe3, 0xff, 0xbe, 0xf5, - 0x43, 0x59, 0x02, 0x51, 0xbf, 0xba, 0xc2, 0xf8, 0x43, 0x59, 0x02, 0x51, 0x7a, 0xe0, 0x2a, 0x2b, 0x44, 0x59, 0x22, 0x49, 0x5f, 0xfa, 0x02, 0xa2, 0x84, 0x61, 0x23, 0x51, 0xa9, 0x87, 0xff, 0xaf, - 0x84, 0x61, 0x42, 0x59, 0x8a, 0xba, 0xbe, 0xad, 0x84, 0x61, 0x43, 0x59, 0x58, 0xee, 0x2d, 0x7e, 0x83, 0x61, 0x42, 0x51, 0xa0, 0xe2, 0x8a, 0xd6, 0xa4, 0x61, 0x63, 0x59, 0x59, 0xdb, 0xff, 0xf9, - 0xa4, 0x61, 0x42, 0x51, 0xff, 0x3f, 0xb8, 0xba, 0x43, 0x61, 0x84, 0x59, 0x9e, 0xe9, 0xa2, 0xf5, 0x84, 0x61, 0x62, 0x51, 0xaa, 0x88, 0xa3, 0xde, 0x25, 0x6a, 0x63, 0x59, 0xfd, 0x7d, 0xf3, 0xee, - 0xc4, 0x61, 0x63, 0x59, 0x57, 0x57, 0xfa, 0x2a, 0x25, 0x6a, 0x63, 0x59, 0xd5, 0xff, 0xff, 0xa0, 0xc8, 0x82, 0xc4, 0x59, 0xd5, 0xfb, 0x2d, 0x89, 0xa7, 0x7a, 0x05, 0x62, 0x3c, 0x3d, 0x2f, 0x0f, - 0xec, 0x9b, 0xc7, 0x7a, 0xdd, 0xf5, 0xfd, 0x0d, 0xaf, 0xbc, 0x69, 0x93, 0xf5, 0xfd, 0xa5, 0x00, 0x4c, 0xb4, 0xca, 0xa3, 0xb5, 0xbf, 0x22, 0x08, 0xcf, 0xc4, 0xeb, 0xab, 0xdf, 0xbf, 0x2b, 0x02, - 0x71, 0xd5, 0xc6, 0x59, 0x0a, 0x02, 0x82, 0x40, 0x50, 0xd5, 0x86, 0x39, 0xfc, 0xf7, 0xd5, 0x55, 0x48, 0x5a, 0xa7, 0x49, 0xd6, 0x78, 0x80, 0xbe, 0x69, 0x62, 0x67, 0x41, 0x5d, 0xf7, 0x0a, 0x22, - 0xa9, 0x72, 0xa7, 0x51, 0x25, 0xef, 0x0a, 0x8a, 0x0a, 0x83, 0xa6, 0x49, 0xba, 0xff, 0xdf, 0x35, 0x2b, 0x83, 0x28, 0x62, 0xb7, 0xb9, 0xeb, 0x58, 0xcd, 0x8b, 0x08, 0x52, 0x7f, 0xff, 0x3f, 0xfd, - 0xcb, 0x72, 0x86, 0x31, 0xfa, 0x58, 0x5e, 0xdf, 0x89, 0x62, 0xa7, 0x39, 0x83, 0xe3, 0xcb, 0xf5, 0x6a, 0x5a, 0xe7, 0x41, 0xe0, 0x03, 0xa5, 0x8d, 0xeb, 0x72, 0xc8, 0x49, 0xaf, 0xa3, 0x5e, 0xe2, - 0xaa, 0x62, 0x67, 0x39, 0x5c, 0xf7, 0xfe, 0xd7, 0xc7, 0x39, 0x66, 0x31, 0x38, 0xa4, 0xed, 0x8a, 0x28, 0x52, 0x46, 0x31, 0xbe, 0x2d, 0xbd, 0xff, 0x89, 0x62, 0xc7, 0x41, 0xf5, 0x26, 0x6a, 0x89, - 0xaa, 0x62, 0xa7, 0x41, 0x97, 0xbe, 0xfb, 0xf2, 0xaa, 0x5a, 0xa7, 0x39, 0x7a, 0x07, 0xad, 0xbb, 0x8a, 0x62, 0xc7, 0x41, 0xea, 0x29, 0x8d, 0xea, 0x69, 0x5a, 0xa7, 0x49, 0xa8, 0x98, 0x2a, 0x9f, - 0x89, 0x62, 0xe8, 0x49, 0x6f, 0x8a, 0x70, 0x5e, 0x28, 0x52, 0x46, 0x29, 0xf8, 0x5e, 0xff, 0x57, 0xc8, 0x41, 0x66, 0x39, 0xef, 0xef, 0x73, 0x82, 0xc8, 0x41, 0x47, 0x39, 0xaf, 0xa8, 0x8d, 0xbf, - 0x89, 0x62, 0x86, 0x31, 0x2b, 0xbf, 0xf7, 0xbf, 0xa9, 0x6a, 0x28, 0x5a, 0xf8, 0x2b, 0xf9, 0xa9, 0x89, 0x6a, 0x48, 0x5a, 0xff, 0x82, 0x68, 0xa2, 0x8a, 0x6a, 0x86, 0x31, 0xfe, 0xf8, 0x7a, 0xfa, - 0x8e, 0xa4, 0xa7, 0x41, 0xff, 0x80, 0x55, 0x55, 0x8b, 0x83, 0xe8, 0x41, 0x2a, 0x7a, 0xff, 0x55, 0x6e, 0x9c, 0x08, 0x42, 0x02, 0x55, 0x55, 0x55, 0x29, 0x7b, 0xc8, 0x39, 0x78, 0xff, 0xff, 0xd7, - 0x49, 0x4a, 0x87, 0x31, 0xab, 0xab, 0xe9, 0xac, 0x29, 0x42, 0xa7, 0x39, 0x2d, 0x97, 0xb7, 0x8f, 0x49, 0x4a, 0xa7, 0x39, 0xea, 0xd8, 0x77, 0xff, 0xe8, 0x41, 0x67, 0x31, 0xf2, 0xda, 0x2b, 0xaf, - 0xc8, 0x41, 0x87, 0x31, 0x79, 0xbf, 0xe0, 0x0d, 0x09, 0x42, 0x87, 0x39, 0xa6, 0xab, 0x29, 0xef, 0x29, 0x42, 0x87, 0x39, 0xbd, 0xa1, 0xfe, 0xfe, 0xe8, 0x39, 0x87, 0x31, 0x0c, 0xc0, 0x34, 0xa0, - 0xe8, 0x41, 0x67, 0x39, 0x28, 0x0a, 0x8a, 0x9a, 0x09, 0x4a, 0xa7, 0x39, 0xef, 0x0a, 0xfe, 0xd5, 0x49, 0x4a, 0xa8, 0x39, 0xfd, 0xfa, 0x3e, 0xad, 0x49, 0x4a, 0xa8, 0x39, 0xfe, 0xd7, 0xde, 0xe2, - 0x29, 0x4a, 0xa7, 0x39, 0x08, 0xbf, 0xdd, 0xff, 0x08, 0x42, 0xa7, 0x39, 0xe2, 0x5b, 0xef, 0xe5, 0xe8, 0x41, 0x67, 0x31, 0x7f, 0xca, 0x9c, 0xf0, 0x49, 0x4a, 0x67, 0x31, 0x5d, 0x8a, 0xff, 0xff, - 0x28, 0x42, 0x87, 0x29, 0xfa, 0x7f, 0xbc, 0xfd, 0x08, 0x42, 0x67, 0x31, 0x2e, 0xfa, 0x5f, 0xa8, 0x29, 0x4a, 0x87, 0x39, 0xda, 0x2f, 0xab, 0xfd, 0x29, 0x4a, 0x67, 0x31, 0xe7, 0x2a, 0x0a, 0xdb, - 0x69, 0x4a, 0x87, 0x39, 0x5d, 0xde, 0xe8, 0xf3, 0xe8, 0x41, 0x86, 0x31, 0x8a, 0x2a, 0x06, 0xae, 0x08, 0x42, 0x67, 0x39, 0xaa, 0xdf, 0xaa, 0x80, 0x43, 0x59, 0xc5, 0x49, 0x0b, 0x29, 0x0b, 0x89, - 0x84, 0x61, 0x23, 0x51, 0xf9, 0xeb, 0xab, 0xa8, 0x84, 0x61, 0x23, 0x51, 0x82, 0xaf, 0xbf, 0xdf, 0x64, 0x61, 0x23, 0x41, 0x2a, 0x02, 0xea, 0x7f, 0x84, 0x61, 0xe3, 0x40, 0xc8, 0xea, 0xff, 0xed, - 0x24, 0x51, 0xc2, 0x40, 0xfe, 0xfa, 0xb8, 0x83, 0xe3, 0x48, 0x23, 0x41, 0xaa, 0xeb, 0xbe, 0xfb, 0x02, 0x49, 0xe3, 0x40, 0xb7, 0x99, 0xef, 0xb7, 0xa4, 0x61, 0xe2, 0x40, 0x89, 0xad, 0xed, 0xff, - 0x63, 0x59, 0x03, 0x49, 0x27, 0xeb, 0xaa, 0xab, 0x83, 0x59, 0x22, 0x51, 0xb7, 0x6d, 0xf0, 0x55, 0x64, 0x59, 0x23, 0x51, 0xda, 0xed, 0x82, 0x57, 0x64, 0x59, 0x02, 0x51, 0xe2, 0x0e, 0xfa, 0xad, - 0xa4, 0x61, 0x02, 0x51, 0x2f, 0xab, 0xf7, 0xff, 0xe3, 0x71, 0x02, 0x51, 0x20, 0xff, 0x57, 0xff, 0x65, 0x7a, 0x22, 0x51, 0x2a, 0x3f, 0x3d, 0x2b, 0xaa, 0xa3, 0x05, 0x72, 0xd5, 0x95, 0x35, 0x27, - 0x8d, 0xc4, 0x87, 0x82, 0x2f, 0x2f, 0x8a, 0x42, 0xc8, 0x7a, 0x66, 0x31, 0xfc, 0xff, 0x55, 0xfe, 0x89, 0x5a, 0x86, 0x39, 0xe2, 0xef, 0xbd, 0xff, 0x49, 0x4a, 0xe7, 0x41, 0x3d, 0x30, 0xbb, 0x7e, - 0x69, 0x5a, 0x07, 0x42, 0xdc, 0xa3, 0xf1, 0xdd, 0xca, 0x6a, 0x28, 0x52, 0x89, 0xb7, 0x2a, 0xa9, 0xca, 0x6a, 0x27, 0x4a, 0xaa, 0xa8, 0xbc, 0x97, 0x0a, 0x73, 0x69, 0x5a, 0xdd, 0xbf, 0xbe, 0x37, - 0x0a, 0x7b, 0x28, 0x52, 0x58, 0x7e, 0xfe, 0xfe, 0xaa, 0x62, 0x07, 0x4a, 0x43, 0xd7, 0xb2, 0xf3, 0xca, 0x72, 0xc7, 0x49, 0x03, 0x35, 0xad, 0xff, 0x49, 0x62, 0xc7, 0x39, 0xd6, 0xf8, 0xff, 0xfe, - 0x08, 0x4a, 0xa7, 0x41, 0xa4, 0x62, 0xba, 0xa0, 0x08, 0x4a, 0xa7, 0x41, 0x9e, 0xd6, 0x8a, 0xba, 0x29, 0x52, 0xc7, 0x41, 0x78, 0xdc, 0xfa, 0xfe, 0x08, 0x4a, 0x87, 0x31, 0xbb, 0xb2, 0x2a, 0xda, - 0xe8, 0x49, 0x87, 0x31, 0xa7, 0xbe, 0xd8, 0xa8, 0x08, 0x4a, 0x87, 0x41, 0xfe, 0xaf, 0xbc, 0xd6, 0xe8, 0x49, 0x66, 0x31, 0x6a, 0xa2, 0x82, 0xaa, 0xc7, 0x41, 0x46, 0x29, 0xbe, 0xbe, 0x9e, 0x28, - 0xe8, 0x49, 0x66, 0x31, 0xf7, 0xe2, 0x7a, 0x7e, 0x08, 0x42, 0x67, 0x31, 0x0b, 0xd7, 0xf5, 0x55, 0x29, 0x4a, 0x66, 0x31, 0xa8, 0xaa, 0x8b, 0xd7, 0x28, 0x52, 0xa7, 0x41, 0xdf, 0xe2, 0x36, 0xaf, - 0x28, 0x62, 0x87, 0x41, 0x9f, 0xf3, 0x8a, 0x8f, 0xa9, 0x62, 0xa7, 0x39, 0x0a, 0x2f, 0xf7, 0xff, 0x89, 0x62, 0x86, 0x41, 0x5c, 0xf8, 0x5f, 0xdf, 0xe4, 0x69, 0xa7, 0x41, 0x0d, 0x8d, 0xad, 0xa5, - 0x84, 0x69, 0x42, 0x51, 0xac, 0x78, 0xdf, 0x7e, 0x64, 0x59, 0x42, 0x51, 0x9d, 0xfd, 0xbe, 0x37, 0x84, 0x59, 0x02, 0x51, 0xae, 0xf5, 0xaf, 0x0a, 0x84, 0x59, 0x22, 0x51, 0xde, 0x95, 0x2e, 0xca, - 0xa4, 0x61, 0x43, 0x51, 0x6b, 0xff, 0xf2, 0xff, 0x84, 0x59, 0xe3, 0x50, 0xa8, 0x2e, 0xaa, 0x70, 0x64, 0x59, 0x23, 0x51, 0x0b, 0xaa, 0xa2, 0xff, 0x43, 0x59, 0x02, 0x49, 0x3e, 0x80, 0x26, 0x55, - 0x63, 0x59, 0x02, 0x51, 0xe8, 0xaf, 0x8a, 0x0f, 0x44, 0x59, 0x22, 0x51, 0xf3, 0xba, 0xb6, 0x73, 0x43, 0x59, 0x22, 0x49, 0x92, 0x88, 0xba, 0x25, 0x63, 0x59, 0x23, 0x51, 0x3a, 0xaf, 0xe7, 0xdf, - 0x84, 0x59, 0x22, 0x51, 0xfe, 0xee, 0x8b, 0xbe, 0x84, 0x61, 0x43, 0x51, 0x7f, 0x6b, 0xea, 0xa2, 0xa4, 0x59, 0x43, 0x51, 0xaf, 0x2b, 0x7f, 0xa7, 0xa4, 0x59, 0x43, 0x59, 0xff, 0xe2, 0x2b, 0xbd, - 0x26, 0x62, 0x43, 0x59, 0x55, 0xff, 0x57, 0xc3, 0x47, 0x62, 0x43, 0x51, 0x57, 0xff, 0xbd, 0x2b, 0x4a, 0x8b, 0x64, 0x51, 0xd5, 0x95, 0x0f, 0xae, 0xa8, 0x72, 0xc5, 0x61, 0x7f, 0xef, 0xb0, 0xeb, - 0x67, 0x6a, 0x83, 0x59, 0xd7, 0xd5, 0xff, 0x0a, 0x46, 0x6a, 0x83, 0x59, 0x5d, 0xd5, 0xbf, 0x0a, 0xe9, 0x82, 0xc4, 0x61, 0xf1, 0xfa, 0xf8, 0x00, 0x0d, 0xa4, 0x25, 0x6a, 0xf5, 0xb5, 0x29, 0x02, - 0x8e, 0xb4, 0x08, 0x83, 0xad, 0xed, 0xae, 0x0a, 0xae, 0xbc, 0xeb, 0xa3, 0xa9, 0xaa, 0xaa, 0x02, 0xef, 0xbc, 0x4d, 0xb4, 0xd5, 0xbe, 0xbe, 0x25, 0xb2, 0xd5, 0xae, 0xbc, 0xf5, 0xbf, 0xaf, 0x2f, - 0x13, 0xe6, 0x66, 0x41, 0x70, 0x58, 0x54, 0x56, 0x48, 0x52, 0x47, 0x31, 0x2e, 0x2f, 0xf7, 0xff, 0xa9, 0x6a, 0xc8, 0x41, 0xff, 0xe8, 0xfb, 0xb5, 0x0a, 0x73, 0xa7, 0x41, 0xff, 0x5e, 0x0b, 0xaa, - 0x0b, 0x7b, 0x07, 0x52, 0xf5, 0x55, 0xb8, 0xa8, 0x0a, 0x7b, 0x08, 0x52, 0x2f, 0x7a, 0xaa, 0xfe, 0xaa, 0x72, 0x08, 0x4a, 0xf8, 0xde, 0xb6, 0xbf, 0x2b, 0x7b, 0x08, 0x5a, 0x6d, 0x72, 0x58, 0x7b, - 0x28, 0x5a, 0x87, 0x39, 0xfb, 0xd6, 0xdc, 0x5f, 0x08, 0x4a, 0x86, 0x39, 0xbd, 0xe3, 0xaa, 0xae, 0x89, 0x62, 0xa7, 0x41, 0x3f, 0xbd, 0xbd, 0x2d, 0xeb, 0x7a, 0xc7, 0x49, 0xae, 0xfb, 0x5f, 0x2a, - 0xeb, 0x7a, 0x87, 0x41, 0x5f, 0xfb, 0x4a, 0xfe, 0xa8, 0x49, 0x46, 0x31, 0xfe, 0x7e, 0xfe, 0xb8, 0xa7, 0x41, 0x66, 0x39, 0x06, 0xa9, 0xcb, 0xa9, 0x8a, 0x62, 0x86, 0x39, 0xad, 0xaf, 0x89, 0x2b, - 0x69, 0x62, 0xa7, 0x41, 0xf7, 0xfd, 0x7e, 0x22, 0x69, 0x62, 0x87, 0x39, 0xab, 0xab, 0xbd, 0x5c, 0xca, 0x62, 0xa7, 0x41, 0x57, 0x3f, 0xee, 0xbf, 0xea, 0x72, 0xc7, 0x41, 0xbb, 0x8a, 0x89, 0x7e, - 0x49, 0x5a, 0x46, 0x29, 0xec, 0xea, 0x5e, 0xff, 0xa7, 0x39, 0x46, 0x31, 0x77, 0x3a, 0xaa, 0xb0, 0xa7, 0x41, 0x46, 0x31, 0xed, 0xef, 0x0a, 0xed, 0xc8, 0x41, 0x26, 0x31, 0xee, 0x7f, 0x20, 0x22, - 0xaa, 0x6a, 0x66, 0x39, 0xf5, 0xf5, 0x09, 0xbf, 0xa9, 0x6a, 0xa7, 0x49, 0xaf, 0xa2, 0xa2, 0x78, 0xca, 0x72, 0xa7, 0x49, 0xee, 0xea, 0xc2, 0x79, 0x29, 0x5a, 0x66, 0x31, 0xe8, 0xf8, 0x7e, 0xff, - 0x29, 0x42, 0xa7, 0x31, 0x29, 0x95, 0xfd, 0x9e, 0x28, 0x42, 0xa7, 0x31, 0x00, 0xf7, 0x65, 0xbd, 0x49, 0x4a, 0x88, 0x39, 0x02, 0x2f, 0x8d, 0xfe, 0xca, 0x5a, 0xc8, 0x39, 0x2f, 0xba, 0xb7, 0x7f, - 0xca, 0x5a, 0xa7, 0x39, 0x7c, 0xaa, 0xff, 0xeb, 0x29, 0x4a, 0xc8, 0x41, 0xb2, 0xde, 0xf9, 0x0b, 0x8a, 0x5a, 0xa7, 0x39, 0x5f, 0x77, 0xfb, 0xec, 0xe8, 0x41, 0x67, 0x39, 0xbf, 0x2b, 0x88, 0xa9, - 0x09, 0x42, 0x87, 0x39, 0x0b, 0xaa, 0xf5, 0x27, 0xe8, 0x41, 0x87, 0x39, 0x98, 0xeb, 0xd9, 0xf0, 0xe8, 0x41, 0x67, 0x39, 0x02, 0xfa, 0x8e, 0x37, 0xe8, 0x41, 0x87, 0x39, 0xef, 0x03, 0x58, 0x68, - 0xe8, 0x41, 0x87, 0x39, 0x5b, 0xea, 0xab, 0xa3, 0x08, 0x42, 0x87, 0x39, 0xff, 0xe5, 0x0c, 0xeb, 0xe8, 0x41, 0x87, 0x39, 0xe2, 0xa0, 0xac, 0xfe, 0x29, 0x4a, 0x87, 0x39, 0xad, 0xae, 0xbf, 0xc2, - 0x69, 0x5a, 0xc8, 0x39, 0x55, 0xff, 0x8a, 0xbc, 0xeb, 0x6a, 0xa7, 0x39, 0x75, 0xdf, 0xdf, 0x8b, 0x28, 0x4a, 0xa7, 0x31, 0x7d, 0xfe, 0xf8, 0x7a, 0xe8, 0x39, 0x87, 0x31, 0x76, 0xf6, 0xaa, 0x29, - 0xe8, 0x41, 0x67, 0x31, 0xff, 0x5f, 0xae, 0x08, 0xc8, 0x41, 0x87, 0x39, 0x8b, 0x56, 0x90, 0xa6, 0x29, 0x4a, 0x87, 0x31, 0x4b, 0xaf, 0xf5, 0x7e, 0x09, 0x42, 0xa7, 0x31, 0x9f, 0x6e, 0x62, 0xf7, - 0x49, 0x4a, 0xa7, 0x39, 0x2f, 0xd5, 0xe3, 0xfd, 0x29, 0x42, 0x86, 0x31, 0xf7, 0xbb, 0xa2, 0xbb, 0x08, 0x42, 0xa7, 0x31, 0xca, 0xff, 0x9a, 0x35, 0x62, 0x59, 0x85, 0x41, 0x03, 0x03, 0x09, 0xad, - 0x84, 0x59, 0x22, 0x51, 0xea, 0x2a, 0xba, 0x9d, 0x84, 0x59, 0x02, 0x51, 0x7b, 0xea, 0xf8, 0xb0, 0x64, 0x51, 0x22, 0x49, 0x6f, 0xaa, 0x5e, 0x2a, 0x62, 0x59, 0x04, 0x49, 0xf7, 0xca, 0xff, 0xfa, - 0x43, 0x59, 0x02, 0x49, 0xed, 0xab, 0x0f, 0x2a, 0x43, 0x59, 0x02, 0x49, 0xba, 0xda, 0xea, 0x0a, 0x02, 0x51, 0x43, 0x49, 0xa9, 0xe2, 0x5e, 0x27, 0x44, 0x59, 0xe3, 0x40, 0xe8, 0x5c, 0xff, 0xfe, - 0x24, 0x51, 0xe3, 0x38, 0x2e, 0xaa, 0xee, 0xfa, 0x23, 0x59, 0x02, 0x39, 0xa0, 0xab, 0xb5, 0xb7, 0x64, 0x59, 0x02, 0x51, 0xf5, 0xab, 0xae, 0x2d, 0x63, 0x61, 0x42, 0x51, 0xaf, 0xaa, 0xde, 0xff, - 0x84, 0x61, 0x02, 0x49, 0xaa, 0xba, 0x2f, 0xb5, 0x85, 0x7a, 0x63, 0x59, 0xf5, 0xad, 0x8a, 0xab, 0x49, 0x93, 0xc4, 0x61, 0x95, 0xbd, 0x2b, 0x2f, 0x4c, 0xb4, 0xc8, 0x82, 0x25, 0xaf, 0x2b, 0x8a, - 0xce, 0xcc, 0xa6, 0x49, 0x62, 0x50, 0x5c, 0x57, 0x08, 0x4a, 0x66, 0x31, 0xe0, 0x7f, 0x7e, 0xea, 0x28, 0x4a, 0xa7, 0x39, 0x89, 0xad, 0x75, 0x57, 0x28, 0x4a, 0xa7, 0x41, 0x2b, 0x0a, 0xdb, 0x7f, - 0x28, 0x4a, 0xa7, 0x39, 0x0a, 0xab, 0xdf, 0xd7, 0x69, 0x52, 0xc8, 0x39, 0x2e, 0xff, 0xfd, 0x55, 0x49, 0x4a, 0xa7, 0x41, 0x08, 0xba, 0xef, 0xfd, 0xea, 0x6a, 0xa7, 0x39, 0x2a, 0xf7, 0xdf, 0xaf, - 0x89, 0x62, 0xc7, 0x49, 0xfa, 0x2b, 0xaf, 0x58, 0x89, 0x5a, 0xe8, 0x49, 0x7a, 0xa0, 0x0a, 0x55, 0x89, 0x5a, 0xa7, 0x39, 0xbb, 0xfb, 0x78, 0xff, 0x08, 0x4a, 0xe8, 0x39, 0xfa, 0xfc, 0xe2, 0xa0, - 0x08, 0x4a, 0xa7, 0x39, 0xa6, 0xaa, 0xfc, 0xfe, 0x08, 0x4a, 0xa7, 0x41, 0xbc, 0xfa, 0xe3, 0x7f, 0x08, 0x4a, 0x87, 0x41, 0x82, 0xaa, 0xe0, 0x5b, 0xe8, 0x49, 0x87, 0x41, 0x32, 0xba, 0x7e, 0xf7, - 0xe8, 0x49, 0x66, 0x31, 0xdc, 0xaa, 0xfe, 0xeb, 0xc8, 0x49, 0x86, 0x39, 0xbe, 0x8f, 0x7f, 0xfa, 0xc8, 0x49, 0x67, 0x39, 0xea, 0x42, 0x3b, 0xef, 0xc8, 0x41, 0x46, 0x39, 0x82, 0xb7, 0x00, 0xdb, - 0xe8, 0x41, 0x46, 0x31, 0xfb, 0x1e, 0xba, 0xaa, 0x08, 0x4a, 0x67, 0x31, 0xd7, 0xff, 0xef, 0xe0, 0xc8, 0x39, 0x46, 0x31, 0x5c, 0xab, 0xfa, 0xbf, 0x08, 0x42, 0x67, 0x31, 0xa9, 0x82, 0x2d, 0xf8, - 0x08, 0x4a, 0x67, 0x41, 0x7e, 0xa2, 0x00, 0xa2, 0x08, 0x4a, 0x87, 0x39, 0xab, 0xd7, 0xf8, 0xaa, 0x08, 0x4a, 0x46, 0x41, 0xba, 0x7e, 0xff, 0xa2, 0xc5, 0x61, 0x87, 0x39, 0x2d, 0xbf, 0x35, 0x2d, - 0x84, 0x61, 0x43, 0x51, 0xfe, 0x52, 0x72, 0xf8, 0x84, 0x59, 0x03, 0x59, 0x2e, 0xa6, 0xaa, 0x00, 0x84, 0x61, 0x63, 0x51, 0xbf, 0xef, 0xbb, 0xcf, 0x84, 0x59, 0x23, 0x51, 0xa6, 0xea, 0xee, 0x68, - 0x83, 0x59, 0x02, 0x49, 0xba, 0x77, 0xd8, 0x5b, 0x84, 0x59, 0x02, 0x49, 0x80, 0xaf, 0x5f, 0x7f, 0x63, 0x51, 0xe2, 0x48, 0xca, 0xeb, 0x7f, 0xaa, 0x43, 0x59, 0x02, 0x49, 0x9c, 0xac, 0xe9, 0x3e, - 0x62, 0x59, 0x23, 0x51, 0xaa, 0xfb, 0x0a, 0x2f, 0x63, 0x61, 0x02, 0x51, 0xb8, 0xfb, 0xba, 0xaa, 0x84, 0x59, 0x22, 0x51, 0xff, 0xed, 0x6f, 0x8e, 0x64, 0x59, 0x02, 0x51, 0xaf, 0xa3, 0x34, 0xbb, - 0xc4, 0x61, 0x43, 0x59, 0xb5, 0x7d, 0x27, 0x0d, 0x05, 0x62, 0x43, 0x59, 0xff, 0xf7, 0xff, 0x2a, 0x46, 0x62, 0x43, 0x59, 0x57, 0xf7, 0xbf, 0x02, 0x87, 0x72, 0x84, 0x51, 0x55, 0xb5, 0x0a, 0xab, - 0x67, 0x72, 0xe6, 0x69, 0x08, 0xa2, 0x78, 0xbb, 0x08, 0x83, 0x06, 0x62, 0x09, 0xeb, 0xfd, 0xf7, 0x6a, 0x8b, 0x05, 0x62, 0xe8, 0x7f, 0x55, 0x5d, 0xc8, 0x7a, 0xe5, 0x59, 0xa8, 0x5e, 0xfe, 0x8a, - 0x87, 0x6a, 0x05, 0x62, 0x0d, 0xf5, 0xf5, 0xce, 0xcc, 0x93, 0x26, 0x6a, 0xd5, 0xd5, 0xdf, 0x3d, 0x51, 0xc5, 0xa7, 0x72, 0xbf, 0xaf, 0xcb, 0x62, 0x30, 0xbd, 0xc7, 0x7a, 0xae, 0xad, 0xa9, 0x0a, - 0xb2, 0xcd, 0x87, 0x72, 0xbe, 0xe7, 0x29, 0x0f, 0x31, 0xc5, 0x2c, 0x9c, 0xf6, 0x22, 0x90, 0xf4, 0xd2, 0xd5, 0x6d, 0xac, 0xb5, 0x8b, 0x2e, 0xab, 0x53, 0xee, 0x07, 0x62, 0x8a, 0x0a, 0xe2, 0x6a, - 0x6b, 0x8b, 0x66, 0x39, 0x5c, 0x5f, 0x57, 0x57, 0xa8, 0x41, 0x66, 0x31, 0xee, 0xab, 0xaf, 0xfb, 0x08, 0x4a, 0x66, 0x39, 0x0a, 0xff, 0xad, 0xd5, 0xa9, 0x6a, 0xa7, 0x39, 0x2a, 0xbd, 0xbe, 0xff, - 0xa9, 0x72, 0xe8, 0x51, 0x20, 0x2d, 0xab, 0xaf, 0xa9, 0x72, 0xc8, 0x49, 0xde, 0x72, 0x2d, 0x0a, 0xea, 0x72, 0x08, 0x5a, 0xaf, 0xed, 0x8e, 0xa0, 0x89, 0x6a, 0x87, 0x41, 0x88, 0xe3, 0xf7, 0x78, - 0xa8, 0x49, 0x87, 0x39, 0xfc, 0x7a, 0x6c, 0x7c, 0x09, 0x52, 0x87, 0x39, 0xff, 0xed, 0xb3, 0xfd, 0x49, 0x52, 0x86, 0x41, 0x55, 0xdf, 0xbf, 0x2b, 0x89, 0x6a, 0x87, 0x49, 0xb5, 0x2d, 0x0b, 0x28, - 0xaa, 0x6a, 0x66, 0x39, 0x7f, 0x6e, 0x78, 0x57, 0xc7, 0x39, 0x66, 0x31, 0x9f, 0x6a, 0xca, 0x7a, 0xe8, 0x49, 0x66, 0x39, 0xbf, 0x3f, 0xad, 0xaf, 0xaa, 0x62, 0xa7, 0x41, 0x2d, 0x2d, 0x2b, 0x0b, - 0xca, 0x6a, 0xa7, 0x39, 0xfe, 0xf8, 0x5f, 0xfd, 0xa9, 0x62, 0xe8, 0x41, 0xf5, 0xbf, 0x3d, 0x8e, 0xea, 0x6a, 0xc7, 0x41, 0xe7, 0xe2, 0x7e, 0xfe, 0x69, 0x5a, 0x46, 0x31, 0x7a, 0xfe, 0xff, 0xe0, - 0x08, 0x42, 0x46, 0x31, 0xff, 0xd7, 0xff, 0x2a, 0x89, 0x5a, 0x67, 0x31, 0x55, 0x55, 0xd5, 0xc2, 0x48, 0x5a, 0x46, 0x31, 0x57, 0x57, 0xaa, 0x2a, 0x09, 0x4a, 0x46, 0x31, 0xfd, 0xd5, 0xfe, 0xf8, - 0x69, 0x6a, 0xa7, 0x39, 0xad, 0x7d, 0xaf, 0x0a, 0xa9, 0x6a, 0xa8, 0x49, 0xfa, 0xc2, 0x5f, 0xfa, 0x89, 0x62, 0x66, 0x39, 0x5f, 0xf7, 0x57, 0x8a, 0x69, 0x5a, 0x66, 0x31, 0x55, 0x55, 0x5f, 0x8a, - 0x29, 0x42, 0xa8, 0x39, 0xd7, 0x55, 0xd8, 0xbe, 0x09, 0x42, 0xa8, 0x39, 0xba, 0xff, 0xf8, 0x55, 0x09, 0x42, 0xa7, 0x39, 0xad, 0xa0, 0xeb, 0x20, 0xec, 0x6a, 0xe8, 0x39, 0x55, 0xf5, 0x3d, 0xf5, - 0xaa, 0x5a, 0x08, 0x42, 0xdd, 0x3e, 0x2e, 0xeb, 0xca, 0x62, 0x08, 0x42, 0xad, 0xaa, 0xae, 0x88, 0xaa, 0x62, 0xc8, 0x39, 0x7e, 0x57, 0x72, 0x62, 0xe8, 0x41, 0xa7, 0x31, 0x6e, 0xee, 0xa2, 0xfa, - 0xc8, 0x39, 0x87, 0x31, 0xfa, 0xe8, 0x57, 0x0e, 0x09, 0x4a, 0x88, 0x31, 0xff, 0x5f, 0xbf, 0x28, 0xe9, 0x41, 0x67, 0x31, 0xb7, 0xba, 0x2a, 0x0a, 0x08, 0x42, 0x87, 0x31, 0xba, 0x5f, 0xe0, 0xaa, - 0x09, 0x4a, 0xa8, 0x39, 0x6f, 0x9f, 0xdb, 0xbc, 0x08, 0x42, 0xa7, 0x39, 0xbb, 0xdf, 0x7a, 0x2d, 0x29, 0x4a, 0xa7, 0x39, 0xf9, 0xb8, 0xfb, 0xfb, 0x29, 0x4a, 0xa8, 0x39, 0xab, 0x0b, 0x2b, 0x97, - 0xea, 0x62, 0xa7, 0x39, 0xbf, 0x97, 0x02, 0xdf, 0xeb, 0x72, 0xc7, 0x41, 0x7f, 0x0f, 0x28, 0xf5, 0x49, 0x5a, 0xa7, 0x31, 0xff, 0xfe, 0x78, 0x5f, 0xe8, 0x41, 0xa7, 0x39, 0xb2, 0x74, 0x55, 0x82, - 0x08, 0x42, 0xa7, 0x31, 0xca, 0xfb, 0xfb, 0x5d, 0x09, 0x42, 0x87, 0x39, 0xba, 0x8a, 0xa5, 0xba, 0xe8, 0x41, 0x87, 0x31, 0xba, 0xe2, 0x9e, 0xbf, 0x29, 0x42, 0xa7, 0x39, 0x77, 0x09, 0xbd, 0xf5, - 0x08, 0x42, 0xa7, 0x31, 0xea, 0xb6, 0xd8, 0xea, 0x08, 0x42, 0xa7, 0x39, 0xb2, 0xb7, 0x7e, 0xbb, 0xe8, 0x49, 0xa7, 0x31, 0xeb, 0x2e, 0xb5, 0xea, 0x63, 0x59, 0xa6, 0x41, 0x09, 0xad, 0x0b, 0x0d, - 0x84, 0x59, 0x23, 0x51, 0xfd, 0xab, 0xa2, 0xf8, 0x84, 0x59, 0x22, 0x51, 0xb6, 0xea, 0xeb, 0xea, 0x64, 0x59, 0x03, 0x51, 0x88, 0xa8, 0xfe, 0xde, 0x64, 0x59, 0x03, 0x49, 0xaa, 0xaf, 0x67, 0x6f, - 0x44, 0x59, 0xe3, 0x48, 0x80, 0x7e, 0x77, 0xde, 0x24, 0x59, 0xe2, 0x38, 0x82, 0xfb, 0xff, 0x7f, 0x24, 0x49, 0x02, 0x39, 0xb0, 0xbe, 0xde, 0xd7, 0x24, 0x41, 0xe3, 0x38, 0xa8, 0x6f, 0x5e, 0xeb, - 0x04, 0x41, 0xe3, 0x38, 0x22, 0xd7, 0x5f, 0x34, 0x44, 0x49, 0xe3, 0x38, 0x0a, 0x7e, 0x5f, 0xdf, 0x63, 0x51, 0xc2, 0x38, 0x08, 0x8a, 0xff, 0xdd, 0x44, 0x59, 0xe3, 0x40, 0x80, 0xaa, 0xfe, 0xf5, - 0x46, 0x72, 0xe3, 0x40, 0x35, 0xdd, 0xf5, 0xb5, 0xa7, 0x82, 0xa3, 0x61, 0xae, 0x9d, 0xb9, 0x28, 0x4c, 0xb4, 0x45, 0x72, 0xf5, 0xb5, 0x3d, 0x2d, 0x8d, 0xc4, 0xc6, 0x49, 0x8a, 0x62, 0x58, 0x5c, - 0x49, 0x62, 0xc8, 0x39, 0xf8, 0xff, 0xff, 0x77, 0x29, 0x4a, 0xc7, 0x41, 0x7b, 0xe8, 0xfa, 0x5f, 0x29, 0x4a, 0x87, 0x41, 0x5f, 0xae, 0x2a, 0xa9, 0x29, 0x4a, 0x87, 0x39, 0x6b, 0xaf, 0xb8, 0x9f, - 0x29, 0x4a, 0x67, 0x39, 0xf6, 0x0a, 0xae, 0xfc, 0x49, 0x52, 0xa7, 0x39, 0xdf, 0x0f, 0xbb, 0xdf, 0x89, 0x52, 0xa7, 0x41, 0x75, 0x8b, 0xef, 0x7f, 0xca, 0x62, 0x87, 0x39, 0xff, 0xff, 0x0b, 0x3d, - 0xea, 0x6a, 0xa7, 0x41, 0x55, 0x55, 0xc2, 0x20, 0x2c, 0x73, 0xa7, 0x41, 0xf5, 0x55, 0xea, 0xe2, 0x69, 0x52, 0x87, 0x39, 0xd7, 0xd7, 0x9f, 0x2b, 0xaa, 0x5a, 0x67, 0x39, 0xd7, 0x7f, 0xff, 0xa8, - 0x08, 0x42, 0x87, 0x39, 0xeb, 0xba, 0x77, 0xa2, 0x08, 0x42, 0x67, 0x39, 0xae, 0xab, 0xb7, 0xa8, 0xe8, 0x41, 0x67, 0x39, 0xa8, 0xae, 0xaa, 0x05, 0xe8, 0x41, 0x87, 0x39, 0xa6, 0x96, 0xe8, 0x70, - 0xe8, 0x41, 0x67, 0x39, 0xa8, 0xd6, 0xfe, 0x2b, 0xe8, 0x49, 0x66, 0x39, 0xeb, 0x5e, 0x7f, 0xf8, 0xc8, 0x41, 0x46, 0x39, 0xe2, 0xbe, 0x3d, 0xaa, 0xc7, 0x41, 0x46, 0x39, 0xb7, 0xaf, 0x28, 0x2a, - 0xe8, 0x41, 0x66, 0x39, 0x2f, 0xb5, 0xea, 0x57, 0x49, 0x52, 0x87, 0x41, 0xf2, 0xf5, 0x5d, 0xfd, 0xc8, 0x39, 0x47, 0x29, 0x5e, 0xbe, 0xbf, 0x3f, 0xc8, 0x41, 0x46, 0x29, 0x8e, 0xab, 0xba, 0xdf, - 0x09, 0x4a, 0x87, 0x31, 0x8a, 0x2b, 0xae, 0x7d, 0xe8, 0x49, 0x87, 0x41, 0x8b, 0x02, 0x25, 0xa2, 0xe8, 0x51, 0x67, 0x41, 0x5f, 0x7a, 0x82, 0xa8, 0xe6, 0x61, 0xa8, 0x39, 0x2f, 0x3d, 0x2f, 0x3d, - 0xc4, 0x61, 0x63, 0x59, 0x7e, 0x5a, 0x9f, 0x3f, 0xe6, 0x61, 0x63, 0x59, 0x57, 0x55, 0x5b, 0x00, 0xc4, 0x61, 0x43, 0x59, 0xbb, 0xab, 0x2d, 0x8e, 0xa4, 0x61, 0x43, 0x51, 0x62, 0xee, 0xea, 0x6b, - 0x64, 0x59, 0xe3, 0x40, 0xde, 0xa8, 0xa2, 0xa2, 0x64, 0x59, 0x23, 0x51, 0x75, 0xd5, 0xe8, 0xde, 0x44, 0x59, 0x02, 0x41, 0x7a, 0xfa, 0x8a, 0xfa, 0x44, 0x59, 0xc2, 0x38, 0x8b, 0x02, 0x8a, 0xd7, - 0x43, 0x59, 0xe2, 0x40, 0x00, 0x22, 0x20, 0xf7, 0x83, 0x61, 0x02, 0x49, 0xea, 0xaf, 0x0f, 0xfd, 0xa4, 0x61, 0x43, 0x59, 0xff, 0xf7, 0x7b, 0x2e, 0x05, 0x6a, 0x43, 0x59, 0x57, 0xf9, 0x35, 0x29, - 0x45, 0x6a, 0x84, 0x61, 0xed, 0x0b, 0x0a, 0x02, 0x46, 0x6a, 0xc5, 0x61, 0x5f, 0x2a, 0xa0, 0x00, 0x87, 0x72, 0xe4, 0x69, 0xfd, 0xd7, 0xb5, 0x0b, 0xa7, 0x72, 0xe5, 0x61, 0x7d, 0x55, 0xfe, 0x80, - 0xa8, 0x72, 0x26, 0x6a, 0xdd, 0x7f, 0xea, 0x80, 0x87, 0x72, 0x26, 0x6a, 0xf5, 0x75, 0xff, 0xec, 0x87, 0x72, 0x05, 0x62, 0x6b, 0xaf, 0x0b, 0x0a, 0xab, 0x8b, 0x26, 0x6a, 0xf5, 0xff, 0xff, 0x3f, - 0x6d, 0xa4, 0x47, 0x6a, 0x55, 0x3f, 0xfb, 0x1a, 0xae, 0xac, 0xc8, 0x72, 0xaf, 0x2d, 0xa9, 0x9f, 0x30, 0xbd, 0x08, 0x7b, 0xe0, 0x6a, 0xfa, 0xba, 0xef, 0xbc, 0xa7, 0x7a, 0xee, 0xe8, 0x9c, 0xe7, - 0x30, 0xbd, 0x66, 0x6a, 0x83, 0xa2, 0xc2, 0x52, 0xef, 0xbc, 0x28, 0x7b, 0x07, 0xad, 0xaf, 0x83, 0x71, 0xd5, 0x6c, 0xac, 0xa3, 0xad, 0xaf, 0xab, 0x91, 0xdd, 0xc7, 0x51, 0xf0, 0x50, 0x5c, 0x56, - 0xaa, 0x6a, 0xc7, 0x41, 0x9a, 0x78, 0x7b, 0xaf, 0x48, 0x52, 0xa7, 0x41, 0x5c, 0xfe, 0xa6, 0xf6, 0xe8, 0x41, 0x67, 0x39, 0xb6, 0x82, 0xb2, 0x8a, 0x08, 0x4a, 0x87, 0x41, 0xdd, 0x0b, 0x32, 0x20, - 0x89, 0x6a, 0xc7, 0x41, 0xaf, 0x35, 0xa9, 0xac, 0xaa, 0x6a, 0xa6, 0x51, 0xa0, 0x7b, 0xaa, 0x02, 0x69, 0x6a, 0xa7, 0x41, 0xf0, 0x7e, 0xc0, 0x00, 0x49, 0x5a, 0x67, 0x39, 0xdf, 0x7e, 0xaa, 0x28, - 0xaa, 0x6a, 0x67, 0x39, 0x57, 0x57, 0x2a, 0xfa, 0xaa, 0x6a, 0x67, 0x39, 0x75, 0x55, 0x2a, 0x0a, 0xca, 0x72, 0x87, 0x41, 0xff, 0xf5, 0xc2, 0xea, 0x29, 0x5a, 0xa7, 0x41, 0xc0, 0xe2, 0x7c, 0x65, - 0x08, 0x5a, 0x87, 0x31, 0x78, 0x7e, 0xff, 0x55, 0xe8, 0x41, 0x87, 0x39, 0xc9, 0x90, 0xa2, 0x29, 0x69, 0x52, 0x87, 0x39, 0xf5, 0xef, 0xbf, 0x3f, 0x49, 0x52, 0xa7, 0x39, 0xbb, 0x01, 0x80, 0x8c, - 0xaa, 0x62, 0xc7, 0x41, 0xbf, 0x5f, 0x0b, 0x2d, 0x89, 0x62, 0xe8, 0x49, 0xe8, 0xda, 0xfb, 0xf2, 0xca, 0x6a, 0x28, 0x4a, 0x5f, 0xed, 0xed, 0xf2, 0x69, 0x62, 0xa7, 0x39, 0xd6, 0x7e, 0xaa, 0xe8, - 0x08, 0x42, 0x87, 0x31, 0xaf, 0x30, 0x2e, 0x7a, 0x48, 0x4a, 0x46, 0x31, 0x8a, 0xaa, 0x28, 0x7a, 0xe7, 0x49, 0x66, 0x39, 0x3e, 0xa8, 0x2f, 0x75, 0x69, 0x52, 0xa7, 0x39, 0x7a, 0x03, 0x9c, 0xa9, - 0x69, 0x5a, 0xa7, 0x39, 0x7a, 0xe0, 0xa0, 0xaf, 0x69, 0x52, 0x87, 0x41, 0xb7, 0xe2, 0xfe, 0xe0, 0x89, 0x5a, 0xa7, 0x41, 0xfb, 0xc5, 0xaf, 0xaf, 0xca, 0x62, 0xa7, 0x41, 0xfd, 0x8f, 0xaf, 0x00, - 0xe8, 0x39, 0x87, 0x31, 0xa5, 0x78, 0x3b, 0xe7, 0xe9, 0x41, 0x87, 0x29, 0x7e, 0xaa, 0xe2, 0xeb, 0x08, 0x42, 0xa7, 0x31, 0x27, 0x57, 0x75, 0x6a, 0x6a, 0x52, 0x87, 0x31, 0x3b, 0xbd, 0xff, 0x37, - 0xea, 0x62, 0xe8, 0x41, 0x97, 0xd7, 0x95, 0x3f, 0x2b, 0x6b, 0xe7, 0x49, 0x2a, 0xab, 0x5f, 0xbf, 0x0a, 0x73, 0xa7, 0x39, 0xe2, 0xf8, 0x7a, 0x5c, 0x49, 0x4a, 0x87, 0x39, 0x7c, 0x7a, 0xd5, 0xed, - 0xe8, 0x39, 0x87, 0x31, 0xdd, 0x59, 0xd2, 0x03, 0x09, 0x4a, 0x87, 0x39, 0xdf, 0x5d, 0x5f, 0x2f, 0x09, 0x4a, 0x67, 0x31, 0xdf, 0xdf, 0xff, 0x8a, 0x08, 0x42, 0x87, 0x39, 0x7b, 0xfb, 0xcb, 0x00, - 0x29, 0x42, 0x67, 0x39, 0x7d, 0x7b, 0xfb, 0xa8, 0xe9, 0x41, 0xa7, 0x31, 0x17, 0xaf, 0x7a, 0x82, 0xe9, 0x41, 0xa8, 0x39, 0x34, 0xf8, 0x7b, 0xff, 0x08, 0x42, 0x87, 0x39, 0xef, 0xfc, 0x9f, 0x8b, - 0xaa, 0x62, 0xa7, 0x39, 0xf7, 0x2d, 0xf5, 0xed, 0x0b, 0x73, 0x67, 0x39, 0x22, 0xaa, 0xff, 0xf7, 0xaa, 0x5a, 0xa7, 0x41, 0x7c, 0xce, 0x75, 0x57, 0x8a, 0x5a, 0x87, 0x39, 0x5f, 0xfa, 0x73, 0xfd, - 0x08, 0x42, 0x87, 0x39, 0xe7, 0x8a, 0xfa, 0x6b, 0xe9, 0x41, 0x67, 0x31, 0x7a, 0xb0, 0xaa, 0xaa, 0xa8, 0x41, 0xe8, 0x39, 0xdf, 0x0b, 0xf7, 0xff, 0xc8, 0x39, 0x67, 0x31, 0xa0, 0x4a, 0x82, 0x82, - 0xe8, 0x41, 0x87, 0x31, 0xc2, 0x8d, 0x8f, 0xf5, 0xe9, 0x41, 0xa7, 0x31, 0x25, 0xab, 0xfb, 0xe6, 0x09, 0x4a, 0xc7, 0x39, 0x2f, 0x2a, 0xd7, 0x55, 0x43, 0x59, 0xe7, 0x41, 0x09, 0x09, 0xbd, 0x2d, - 0x84, 0x59, 0x23, 0x51, 0xf2, 0xfd, 0xae, 0xb8, 0xa4, 0x61, 0x23, 0x51, 0x7d, 0x57, 0xf8, 0xfe, 0x64, 0x51, 0x03, 0x49, 0x7b, 0x5e, 0xfb, 0x00, 0x64, 0x51, 0x03, 0x49, 0x55, 0x5f, 0x7d, 0xc0, - 0x44, 0x51, 0xe2, 0x40, 0x5f, 0xfa, 0xf0, 0xf0, 0x24, 0x49, 0xe2, 0x38, 0xff, 0xee, 0x80, 0x02, 0x23, 0x41, 0x02, 0x41, 0xdf, 0x7f, 0x75, 0xad, 0xc3, 0x40, 0x22, 0x31, 0xef, 0xf7, 0xf8, 0xbb, - 0x23, 0x41, 0xe2, 0x38, 0xde, 0xa7, 0x56, 0x35, 0x24, 0x41, 0xe3, 0x38, 0x2f, 0xcf, 0x47, 0x2b, 0x44, 0x51, 0xe2, 0x30, 0xfe, 0xff, 0xfd, 0x2b, 0x44, 0x51, 0xc3, 0x30, 0x2f, 0xb6, 0x2a, 0x0a, - 0x45, 0x72, 0x23, 0x51, 0xb5, 0x2d, 0x2d, 0x35, 0xc8, 0x82, 0x24, 0x72, 0x7f, 0xed, 0xad, 0x17, 0xae, 0xc4, 0xa5, 0x51, 0x8b, 0xca, 0x73, 0x52, 0x47, 0x62, 0xa8, 0x39, 0xfc, 0xfb, 0xf5, 0xf7, - 0x09, 0x4a, 0x86, 0x31, 0x5e, 0xf2, 0xfe, 0xba, 0x08, 0x42, 0x87, 0x31, 0xbf, 0xfd, 0x88, 0x6a, 0xe8, 0x39, 0xa7, 0x31, 0xca, 0xb4, 0xef, 0xef, 0x09, 0x4a, 0xa7, 0x39, 0xd3, 0xd5, 0xeb, 0xcf, - 0x09, 0x4a, 0xa7, 0x31, 0xfe, 0x76, 0x0a, 0xa2, 0x48, 0x42, 0x46, 0x31, 0xab, 0x5f, 0xa2, 0xbe, 0x6a, 0x52, 0x87, 0x39, 0x0b, 0xb5, 0xfd, 0xbf, 0x6c, 0x73, 0xc7, 0x39, 0xa9, 0xa3, 0xf5, 0xd5, - 0x0a, 0x6b, 0x67, 0x31, 0x2e, 0x88, 0xf7, 0xee, 0x2a, 0x73, 0xa7, 0x39, 0xf0, 0xff, 0xf5, 0xdd, 0x48, 0x4a, 0xa7, 0x41, 0xf7, 0xa8, 0x57, 0xa3, 0xea, 0x6a, 0xc7, 0x41, 0xe2, 0x6d, 0x75, 0xff, - 0x28, 0x4a, 0xa7, 0x39, 0xff, 0xb3, 0x5f, 0x7f, 0x08, 0x4a, 0x87, 0x31, 0x00, 0x08, 0xfb, 0x5e, 0x08, 0x4a, 0xa7, 0x39, 0xbb, 0xe2, 0x57, 0xf5, 0x09, 0x4a, 0xc8, 0x39, 0xad, 0xaa, 0xf7, 0x21, - 0x08, 0x4a, 0xc7, 0x39, 0xe2, 0x75, 0x77, 0x28, 0x49, 0x4a, 0x87, 0x39, 0xaa, 0xaa, 0xde, 0x2e, 0x29, 0x4a, 0x66, 0x39, 0x7c, 0xe0, 0x77, 0x7c, 0xc8, 0x49, 0x86, 0x31, 0xff, 0xf7, 0xa7, 0xac, - 0xc8, 0x41, 0x46, 0x31, 0xa6, 0xdf, 0xf2, 0xab, 0xc8, 0x49, 0x46, 0x31, 0x22, 0xeb, 0xf7, 0xaf, 0xc8, 0x39, 0x67, 0x31, 0xbe, 0xe7, 0xd7, 0xfb, 0x08, 0x42, 0x67, 0x31, 0xeb, 0xf3, 0xf5, 0x5d, - 0xc8, 0x39, 0x66, 0x31, 0x8a, 0x2c, 0x6f, 0xd7, 0xe8, 0x41, 0x66, 0x31, 0x0e, 0xa3, 0x09, 0xbd, 0xc8, 0x49, 0x87, 0x39, 0x72, 0xee, 0x7e, 0xf8, 0xc4, 0x61, 0xa7, 0x39, 0x3d, 0xbd, 0xb5, 0xff, - 0xe4, 0x61, 0x43, 0x59, 0x28, 0x3f, 0xff, 0xfd, 0x25, 0x6a, 0x23, 0x59, 0x8a, 0xaa, 0x7e, 0x7d, 0xa4, 0x61, 0x23, 0x51, 0x0c, 0x8a, 0x8b, 0xe5, 0x84, 0x61, 0x23, 0x51, 0x7b, 0xfe, 0xf7, 0x78, - 0x44, 0x59, 0x23, 0x49, 0xa0, 0x7f, 0xef, 0xde, 0x44, 0x59, 0x03, 0x49, 0xd7, 0xdf, 0xad, 0x2b, 0x64, 0x59, 0x03, 0x49, 0x5f, 0xdf, 0xaa, 0x28, 0x43, 0x59, 0x02, 0x41, 0xbd, 0xea, 0xa0, 0xa8, - 0x63, 0x59, 0x03, 0x41, 0x7f, 0xff, 0xa0, 0x0a, 0x43, 0x51, 0x02, 0x49, 0x17, 0xf8, 0xb8, 0xf8, 0x45, 0x72, 0x43, 0x59, 0xff, 0x05, 0x0f, 0x2f, 0xa7, 0x72, 0xc5, 0x61, 0xfd, 0xab, 0x2a, 0xff, - 0xa7, 0x72, 0x05, 0x6a, 0xbf, 0x3a, 0xf8, 0x5d, 0xa7, 0x72, 0xe4, 0x69, 0xa8, 0xa8, 0xeb, 0xf5, 0xe9, 0x7a, 0x04, 0x62, 0xaa, 0xa3, 0xbd, 0x35, 0x08, 0x7b, 0x25, 0x62, 0xfa, 0x7a, 0x5c, 0x5e, - 0xc8, 0x72, 0x05, 0x62, 0x83, 0x79, 0xfb, 0xff, 0x67, 0x72, 0x05, 0x6a, 0x5e, 0xfd, 0xaa, 0xa8, 0x66, 0x72, 0x05, 0x62, 0x88, 0xab, 0xeb, 0xeb, 0x08, 0x83, 0x25, 0x6a, 0xef, 0xfd, 0xad, 0x2d, - 0x4d, 0xac, 0x66, 0x72, 0xf1, 0xad, 0x0b, 0x03, 0x6e, 0xac, 0x86, 0x72, 0xff, 0xad, 0x2a, 0x82, 0x8e, 0xb4, 0x25, 0x6a, 0x80, 0x68, 0x9a, 0x8e, 0x30, 0xc5, 0x08, 0x83, 0xfd, 0x3f, 0xcf, 0xe9, - 0x30, 0xc5, 0xe8, 0x7a, 0xbc, 0xe7, 0xbf, 0xab, 0x30, 0xcd, 0x49, 0x8b, 0xa9, 0xaf, 0x2a, 0x22, 0x91, 0xd5, 0xc6, 0x59, 0x00, 0x8a, 0x40, 0x52, 0xa9, 0x72, 0xc7, 0x41, 0xe8, 0xae, 0xb7, 0xf5, - 0xa9, 0x62, 0x86, 0x39, 0x2b, 0x9e, 0xfc, 0xff, 0x69, 0x5a, 0xc7, 0x39, 0xfc, 0xb4, 0xf7, 0xaf, 0x48, 0x4a, 0xa7, 0x39, 0x96, 0x60, 0x6b, 0x7a, 0x28, 0x4a, 0x87, 0x39, 0xe8, 0x0b, 0x29, 0x2b, - 0xa9, 0x6a, 0xa6, 0x39, 0xe9, 0x0b, 0x3f, 0xbf, 0xc9, 0x72, 0xc7, 0x49, 0x7f, 0xfa, 0xb8, 0xf7, 0x89, 0x62, 0xc8, 0x51, 0xfd, 0x8a, 0x78, 0xbf, 0x69, 0x62, 0xe8, 0x49, 0xd7, 0xe2, 0x89, 0x22, - 0xaa, 0x62, 0xe7, 0x41, 0xf7, 0xa9, 0xa3, 0x9c, 0xaa, 0x72, 0xa7, 0x41, 0xfb, 0x78, 0x57, 0x57, 0x49, 0x52, 0x66, 0x39, 0xf0, 0xd6, 0x57, 0xff, 0x08, 0x5a, 0x67, 0x39, 0xc1, 0xed, 0xfd, 0x9f, - 0xc8, 0x41, 0x66, 0x31, 0xaa, 0xaf, 0x7d, 0x70, 0xe8, 0x41, 0x87, 0x31, 0xab, 0xa8, 0xaf, 0x35, 0x49, 0x5a, 0xa7, 0x39, 0x3f, 0xf5, 0xfd, 0xd7, 0xaa, 0x5a, 0xc7, 0x39, 0x8a, 0xa5, 0xd7, 0xbf, - 0x89, 0x5a, 0xa6, 0x39, 0x87, 0xbb, 0xfa, 0xaa, 0xc9, 0x5a, 0x87, 0x39, 0x02, 0x7a, 0xde, 0xff, 0xc9, 0x6a, 0xa7, 0x39, 0x2a, 0xfd, 0xdf, 0x7d, 0x69, 0x52, 0x87, 0x31, 0xf8, 0xdf, 0x7f, 0x5f, - 0xe8, 0x41, 0x87, 0x31, 0xbf, 0xf3, 0x87, 0x3a, 0xc8, 0x41, 0x67, 0x31, 0x7f, 0xdf, 0xee, 0xbc, 0xa8, 0x41, 0x67, 0x39, 0xdb, 0x5d, 0x09, 0xc2, 0x69, 0x52, 0x67, 0x31, 0x25, 0xf7, 0xff, 0xaf, - 0xaa, 0x5a, 0x87, 0x39, 0xf8, 0xff, 0x55, 0xdf, 0x89, 0x5a, 0x87, 0x39, 0x02, 0x2b, 0x7d, 0x55, 0xaa, 0x5a, 0xa8, 0x41, 0x5e, 0xfa, 0x2b, 0xa9, 0xaa, 0x62, 0xa7, 0x39, 0x2a, 0xad, 0xbb, 0xaa, - 0x29, 0x42, 0x88, 0x39, 0xff, 0x8b, 0xae, 0xd5, 0x49, 0x4a, 0xa7, 0x39, 0xff, 0xaa, 0x15, 0x5d, 0xca, 0x62, 0x87, 0x31, 0x7f, 0xab, 0xa0, 0xff, 0x89, 0x5a, 0xa7, 0x29, 0xf5, 0xaf, 0x2a, 0xaa, - 0x2b, 0x6b, 0x09, 0x4a, 0xbd, 0x2a, 0xaa, 0xfd, 0x2b, 0x6b, 0xe7, 0x49, 0xba, 0x28, 0xb6, 0x2a, 0xae, 0x83, 0xc7, 0x41, 0x4f, 0xaa, 0xfd, 0x7e, 0x89, 0x52, 0xc8, 0x39, 0xfd, 0xfe, 0x78, 0x75, - 0x09, 0x42, 0xa7, 0x31, 0x83, 0xaf, 0xef, 0x7a, 0x29, 0x4a, 0x88, 0x31, 0x0a, 0xff, 0xd7, 0xfa, 0x09, 0x42, 0x67, 0x29, 0xa0, 0xba, 0x5e, 0xfa, 0x29, 0x4a, 0xa8, 0x31, 0xff, 0x77, 0x7d, 0xc3, - 0x09, 0x42, 0x87, 0x31, 0xae, 0x2d, 0xbf, 0xaa, 0x29, 0x42, 0xa8, 0x39, 0xaa, 0xda, 0x7f, 0xeb, 0x8a, 0x52, 0x88, 0x31, 0x0f, 0xaf, 0xed, 0xbf, 0x6a, 0x52, 0xe8, 0x39, 0xae, 0xe3, 0x39, 0xf5, - 0x2b, 0x63, 0xc8, 0x39, 0xff, 0x2f, 0xd7, 0xdf, 0xca, 0x6a, 0xc7, 0x39, 0x0a, 0xa8, 0xbf, 0x5f, 0xeb, 0x6a, 0xe8, 0x41, 0xec, 0xc2, 0xfa, 0xd5, 0xca, 0x62, 0xc8, 0x41, 0x15, 0xaf, 0xaa, 0xff, - 0x8a, 0x5a, 0xa7, 0x41, 0x75, 0xf0, 0x8e, 0x60, 0x49, 0x4a, 0xa8, 0x39, 0xdf, 0xde, 0x28, 0x2a, 0x8a, 0x52, 0x67, 0x39, 0x7f, 0xff, 0xa0, 0xe8, 0x89, 0x52, 0xa8, 0x39, 0xd5, 0x57, 0xfe, 0xf2, - 0x08, 0x42, 0xa7, 0x39, 0x75, 0x57, 0x62, 0xf2, 0xe8, 0x41, 0x67, 0x39, 0x8d, 0x09, 0xae, 0x2a, 0xe8, 0x41, 0x87, 0x31, 0xbe, 0x0f, 0x6e, 0xae, 0x64, 0x59, 0xe8, 0x39, 0x2d, 0x0d, 0xbd, 0xbf, - 0xc4, 0x61, 0x43, 0x51, 0x5f, 0x7e, 0xe8, 0xf2, 0x84, 0x59, 0x43, 0x49, 0xae, 0xf6, 0xc0, 0x00, 0x63, 0x59, 0x23, 0x51, 0x92, 0x60, 0xfa, 0xe0, 0x64, 0x59, 0x23, 0x49, 0x8a, 0x29, 0xbd, 0xb7, - 0x64, 0x59, 0xe3, 0x48, 0x79, 0x2e, 0x28, 0xa0, 0x64, 0x51, 0x03, 0x41, 0xd5, 0x5f, 0x70, 0xbf, 0x44, 0x49, 0xe2, 0x40, 0xff, 0xbe, 0xfe, 0xe8, 0x44, 0x49, 0xe2, 0x40, 0xad, 0xbf, 0x7d, 0xc2, - 0x23, 0x49, 0xe2, 0x40, 0xef, 0x5e, 0xe1, 0x3e, 0x44, 0x49, 0xe2, 0x40, 0xe3, 0x7f, 0xf3, 0x7d, 0x24, 0x49, 0xe3, 0x38, 0xff, 0xff, 0xeb, 0xaf, 0x64, 0x51, 0xe3, 0x38, 0xa5, 0x07, 0x27, 0x0d, - 0xc5, 0x69, 0x03, 0x41, 0xa5, 0x2d, 0xad, 0x2d, 0x2a, 0x83, 0xc4, 0x61, 0xb5, 0x7d, 0xdf, 0x37, 0xf0, 0xcc, 0xc7, 0x41, 0x5c, 0x56, 0x57, 0x55, 0x29, 0x4a, 0xa7, 0x39, 0xac, 0xbb, 0xda, 0x82, - 0x29, 0x4a, 0xa7, 0x39, 0xb8, 0xae, 0x5f, 0xfb, 0x29, 0x42, 0xc7, 0x39, 0x3b, 0x82, 0xd8, 0x6a, 0x29, 0x4a, 0xa7, 0x39, 0xf7, 0xe2, 0xab, 0xb7, 0x28, 0x42, 0x67, 0x31, 0xaa, 0xee, 0x27, 0x8a, - 0x29, 0x4a, 0xa7, 0x31, 0xe8, 0x08, 0xa8, 0x5b, 0x6a, 0x5a, 0xc7, 0x39, 0xfd, 0x2a, 0xff, 0xff, 0xaa, 0x5a, 0xe8, 0x41, 0x7f, 0x8a, 0x8a, 0xfd, 0xa9, 0x5a, 0xe8, 0x41, 0xdf, 0x2f, 0x02, 0xab, - 0x2c, 0x73, 0xe8, 0x41, 0x75, 0x87, 0xe2, 0xee, 0xea, 0x6a, 0x08, 0x4a, 0xaf, 0x8b, 0x6f, 0x7f, 0x89, 0x5a, 0xc7, 0x41, 0x2e, 0x7f, 0xf5, 0x7b, 0xaa, 0x5a, 0xc8, 0x41, 0xfc, 0x5f, 0xff, 0x57, - 0x08, 0x4a, 0x87, 0x39, 0xae, 0xba, 0x00, 0x05, 0xe8, 0x41, 0xa7, 0x31, 0x42, 0xa8, 0x00, 0xa8, 0x08, 0x42, 0x87, 0x31, 0xa9, 0x02, 0x0a, 0x3a, 0x29, 0x4a, 0xa7, 0x39, 0xff, 0xa2, 0xb9, 0xd6, - 0x08, 0x4a, 0x87, 0x39, 0x7a, 0xab, 0x2b, 0x8a, 0xa7, 0x49, 0x08, 0x42, 0xfa, 0x8b, 0x6f, 0xed, 0x28, 0x4a, 0xa7, 0x41, 0xb8, 0x5e, 0xb2, 0xe7, 0xe8, 0x49, 0x87, 0x41, 0x8c, 0xaf, 0x58, 0xaa, - 0xe8, 0x41, 0x86, 0x39, 0x7e, 0x00, 0xba, 0xc2, 0xe8, 0x41, 0x46, 0x31, 0xbf, 0xe2, 0xc0, 0x6a, 0xa8, 0x39, 0x47, 0x31, 0xdf, 0xfa, 0xc0, 0xfa, 0xc8, 0x41, 0x67, 0x31, 0xbf, 0xd5, 0x8a, 0x3b, - 0xe8, 0x41, 0x46, 0x31, 0xff, 0xfd, 0x2e, 0x82, 0xe8, 0x41, 0x67, 0x31, 0xfd, 0xff, 0xa3, 0x23, 0xe8, 0x41, 0x67, 0x39, 0xa8, 0x22, 0x0d, 0x9f, 0xe8, 0x49, 0x86, 0x41, 0xd7, 0x70, 0xa0, 0xcb, - 0x84, 0x51, 0x03, 0x49, 0x8b, 0xe3, 0xda, 0x7e, 0x84, 0x59, 0x03, 0x49, 0xe2, 0xa3, 0xc3, 0xfd, 0xa4, 0x59, 0x03, 0x49, 0xcb, 0xcb, 0x75, 0xdd, 0x84, 0x59, 0x03, 0x49, 0xe0, 0xa0, 0xef, 0xe5, - 0x64, 0x59, 0x23, 0x51, 0xef, 0xba, 0xd5, 0xff, 0x64, 0x51, 0xe3, 0x48, 0xaa, 0x9e, 0xba, 0xa8, 0x84, 0x59, 0x02, 0x49, 0xa2, 0x7b, 0xde, 0xff, 0x44, 0x49, 0xe3, 0x40, 0xaa, 0x57, 0x3e, 0x5f, - 0x43, 0x51, 0x03, 0x41, 0x0a, 0xb5, 0xa7, 0xbf, 0xc4, 0x59, 0xe3, 0x50, 0xff, 0xdf, 0xbf, 0x2f, 0x05, 0x6a, 0x83, 0x61, 0x2d, 0xe5, 0x02, 0xe2, 0x04, 0x6a, 0x83, 0x61, 0xbe, 0x7f, 0x80, 0xa8, - 0xe4, 0x69, 0x83, 0x59, 0xaa, 0x63, 0x82, 0x0a, 0x05, 0x6a, 0xa4, 0x59, 0x0a, 0x09, 0x02, 0xaa, 0x49, 0x8b, 0xc4, 0x61, 0xb5, 0x2f, 0xef, 0x29, 0x6a, 0x93, 0xa4, 0x59, 0x5f, 0xf1, 0xbf, 0xea, - 0x66, 0x6a, 0xa5, 0x59, 0xaa, 0xa9, 0x88, 0x88, 0xe8, 0x82, 0xe5, 0x61, 0xff, 0x7f, 0x7f, 0x63, 0x49, 0x8b, 0xe5, 0x61, 0x5d, 0xd5, 0x35, 0x2d, 0xcb, 0x9b, 0x46, 0x6a, 0xfd, 0xfa, 0xbe, 0x3f, - 0xce, 0xbc, 0x08, 0x83, 0xbf, 0xad, 0xa2, 0x8a, 0x6d, 0xb4, 0x87, 0x72, 0x70, 0xd8, 0xaa, 0xa8, 0x8d, 0xb4, 0x86, 0x7a, 0xa9, 0x32, 0xaa, 0xbe, 0xee, 0xc4, 0x8a, 0x93, 0xad, 0x6f, 0x8f, 0xfa, - 0x0f, 0xc5, 0xca, 0x9b, 0xa6, 0xbf, 0x0d, 0x02, 0x50, 0xcd, 0xeb, 0xab, 0xa2, 0xe8, 0x60, 0x98, 0x10, 0xcd, 0xc7, 0x51, 0x5c, 0x56, 0x54, 0x54, 0x49, 0x5a, 0x87, 0x49, 0x9e, 0xaa, 0x28, 0xaa, - 0xaa, 0x62, 0xc7, 0x49, 0x5f, 0xf7, 0xfe, 0x62, 0x49, 0x52, 0xa7, 0x41, 0x8f, 0xd6, 0xaa, 0xea, 0x29, 0x52, 0xa7, 0x41, 0xff, 0x7d, 0xb2, 0x6f, 0x48, 0x52, 0x86, 0x39, 0x9d, 0x7d, 0xcf, 0xab, - 0x89, 0x62, 0xa7, 0x41, 0x2b, 0xbd, 0xdf, 0xb8, 0xaa, 0x6a, 0xa7, 0x49, 0x9a, 0x02, 0xb2, 0xbf, 0xc9, 0x6a, 0x28, 0x5a, 0xd7, 0x36, 0xad, 0xeb, 0xa9, 0x62, 0xc7, 0x41, 0xc0, 0x76, 0x6a, 0x8a, - 0x89, 0x5a, 0x67, 0x39, 0xf7, 0xff, 0xd7, 0x2e, 0x89, 0x62, 0x87, 0x41, 0x55, 0xff, 0xff, 0xe0, 0xe8, 0x51, 0x66, 0x39, 0x95, 0x3a, 0x95, 0xee, 0xe8, 0x49, 0x67, 0x39, 0xaa, 0x62, 0x22, 0x22, - 0xe8, 0x49, 0x67, 0x31, 0xed, 0xea, 0xb8, 0x03, 0xc8, 0x41, 0x87, 0x29, 0xef, 0x35, 0xaa, 0xf8, 0xe8, 0x41, 0x87, 0x39, 0x0d, 0xa5, 0xae, 0xaa, 0x49, 0x52, 0xc8, 0x41, 0x6b, 0xc1, 0xe5, 0xa5, - 0x08, 0x4a, 0x87, 0x39, 0xb2, 0xfc, 0xef, 0x50, 0xe8, 0x49, 0xa7, 0x39, 0xed, 0x4b, 0xa3, 0x23, 0x08, 0x4a, 0x87, 0x31, 0xf2, 0xbb, 0xda, 0xb6, 0xe8, 0x41, 0x66, 0x29, 0xa7, 0x0a, 0xa2, 0xfa, - 0xe8, 0x41, 0x86, 0x39, 0xad, 0x9a, 0x0a, 0xfb, 0x08, 0x42, 0x67, 0x39, 0xf6, 0xda, 0xdf, 0x27, 0xc8, 0x49, 0x86, 0x39, 0x95, 0xb7, 0x0a, 0x8f, 0x08, 0x42, 0x87, 0x39, 0x0f, 0xff, 0xb5, 0xed, - 0x08, 0x4a, 0xa7, 0x41, 0x7e, 0xcb, 0xad, 0xef, 0xe8, 0x41, 0x67, 0x39, 0xaf, 0xb7, 0xaa, 0x8a, 0x49, 0x4a, 0xa7, 0x41, 0x2d, 0xb5, 0xfd, 0xfe, 0x69, 0x52, 0xe8, 0x41, 0x2e, 0xaa, 0xff, 0x6b, - 0xe9, 0x41, 0x67, 0x31, 0xb7, 0xf3, 0xab, 0xaa, 0xe8, 0x39, 0x87, 0x31, 0xe8, 0xaa, 0x5b, 0xde, 0x29, 0x42, 0xa8, 0x31, 0x77, 0xc3, 0xe9, 0x7e, 0x29, 0x4a, 0xa8, 0x31, 0xfa, 0x0b, 0xd5, 0x55, - 0x29, 0x4a, 0xc8, 0x39, 0xbf, 0x2a, 0xe8, 0x9d, 0xeb, 0x62, 0xe8, 0x41, 0xfd, 0xde, 0xc9, 0x95, 0x4c, 0x73, 0x09, 0x4a, 0xf7, 0xeb, 0x61, 0x7e, 0xaa, 0x5a, 0xa8, 0x39, 0xd6, 0xfe, 0x62, 0x88, - 0x49, 0x4a, 0x88, 0x39, 0x2f, 0x9e, 0x7d, 0xea, 0x28, 0x42, 0x87, 0x31, 0x7c, 0x78, 0x77, 0xfe, 0xe8, 0x41, 0x87, 0x31, 0xab, 0xba, 0x8d, 0xaa, 0x29, 0x42, 0xa8, 0x39, 0xb2, 0x7f, 0xff, 0x9b, - 0x09, 0x42, 0xa7, 0x39, 0xbb, 0x57, 0x5e, 0xe8, 0x09, 0x42, 0xa8, 0x31, 0x96, 0x7a, 0x2a, 0xaa, 0x29, 0x42, 0xa7, 0x31, 0xbc, 0x79, 0x68, 0xbb, 0x29, 0x42, 0x67, 0x31, 0x8a, 0x2a, 0x6f, 0xaa, - 0x6a, 0x52, 0x87, 0x31, 0xa2, 0xbe, 0xb7, 0x7f, 0x69, 0x5a, 0xc8, 0x39, 0xea, 0x2b, 0xa5, 0x55, 0xaa, 0x5a, 0xc7, 0x41, 0x8b, 0xbe, 0xbe, 0xf7, 0xea, 0x6a, 0xa7, 0x41, 0xcb, 0xfa, 0xeb, 0xd7, - 0x49, 0x4a, 0xc8, 0x41, 0xf0, 0x83, 0xc0, 0xdd, 0xaa, 0x52, 0xe8, 0x39, 0xd7, 0x0f, 0xfd, 0x5d, 0x8a, 0x52, 0xa7, 0x39, 0xef, 0xa8, 0xaa, 0x7e, 0x49, 0x4a, 0xa8, 0x39, 0xde, 0xde, 0xdc, 0xff, - 0x29, 0x4a, 0xc8, 0x39, 0x6f, 0x9d, 0xbb, 0x2f, 0x29, 0x42, 0x87, 0x31, 0xdf, 0xfb, 0x6a, 0xa8, 0x09, 0x42, 0x67, 0x31, 0x2a, 0x02, 0xf5, 0xbe, 0xc6, 0x59, 0xe8, 0x39, 0x2f, 0x2b, 0x3d, 0xd5, - 0x26, 0x6a, 0x83, 0x59, 0x5f, 0xff, 0xfa, 0xf8, 0xe4, 0x59, 0x43, 0x51, 0x7f, 0xef, 0xfe, 0xf8, 0xa3, 0x59, 0x22, 0x49, 0xef, 0x68, 0x7b, 0x7e, 0x64, 0x51, 0x03, 0x49, 0xbf, 0xfb, 0xb7, 0xff, - 0x64, 0x59, 0x23, 0x49, 0xab, 0xea, 0x27, 0xf5, 0x63, 0x51, 0xe2, 0x48, 0xfe, 0xfa, 0xd8, 0xe0, 0x23, 0x49, 0xe2, 0x40, 0xbe, 0xba, 0xaa, 0xf8, 0x04, 0x51, 0x02, 0x41, 0x55, 0xff, 0xa2, 0xd7, - 0xe3, 0x48, 0x23, 0x41, 0x77, 0xad, 0xdb, 0xfa, 0x44, 0x49, 0xe2, 0x40, 0xf2, 0x28, 0x7e, 0xd2, 0x24, 0x51, 0xe3, 0x38, 0x5f, 0xaf, 0xb7, 0x0e, 0x64, 0x51, 0x02, 0x41, 0x8d, 0xb5, 0xa5, 0xb8, - 0xc8, 0x7a, 0xe3, 0x48, 0xf7, 0xf5, 0xf5, 0x35, 0xb0, 0xbc, 0x85, 0x49, 0xc5, 0x49, 0x73, 0x5c, 0x29, 0x4a, 0xe7, 0x41, 0x5f, 0xe1, 0xa5, 0xe5, 0x29, 0x4a, 0xa7, 0x39, 0x8a, 0x8a, 0xaa, 0x9a, - 0x29, 0x4a, 0xc7, 0x39, 0xa8, 0x0b, 0xa2, 0x79, 0x29, 0x4a, 0xa7, 0x39, 0xb6, 0xe0, 0x26, 0xcd, 0x49, 0x4a, 0xc7, 0x39, 0xe3, 0x79, 0xf6, 0x5e, 0xe8, 0x41, 0x87, 0x31, 0xae, 0xfe, 0x0e, 0x24, - 0x08, 0x42, 0xa7, 0x31, 0xe9, 0xa9, 0xa7, 0xa8, 0x09, 0x42, 0x87, 0x39, 0x42, 0x2f, 0x3a, 0xac, 0x28, 0x4a, 0xc7, 0x41, 0x2d, 0xb2, 0x48, 0xf8, 0xaa, 0x62, 0xc7, 0x39, 0x5f, 0x2a, 0xbd, 0xfd, - 0xaa, 0x5a, 0xe7, 0x41, 0xff, 0x2e, 0xeb, 0xfd, 0xca, 0x62, 0xa7, 0x39, 0xe2, 0xf8, 0xfa, 0x57, 0x49, 0x52, 0xc7, 0x39, 0xba, 0xb9, 0xe8, 0xfd, 0x29, 0x4a, 0xc7, 0x39, 0xff, 0xd5, 0xea, 0x8a, - 0x49, 0x4a, 0xa7, 0x39, 0x7f, 0xb5, 0x9f, 0x3e, 0x08, 0x4a, 0xa7, 0x39, 0xf6, 0x2a, 0xea, 0xae, 0x08, 0x4a, 0xa7, 0x31, 0xf4, 0xfa, 0x3e, 0x2b, 0x08, 0x4a, 0x87, 0x41, 0x8b, 0x32, 0xd3, 0xe0, - 0x08, 0x42, 0xa7, 0x39, 0x2e, 0xba, 0x7b, 0xb2, 0x28, 0x4a, 0xc7, 0x41, 0xfa, 0xeb, 0xb7, 0xf5, 0x08, 0x4a, 0xa7, 0x41, 0x5e, 0xeb, 0xeb, 0xcb, 0x08, 0x42, 0x87, 0x39, 0x82, 0xad, 0x3b, 0x8a, - 0x28, 0x4a, 0xa7, 0x39, 0xba, 0x6b, 0x54, 0x77, 0xe8, 0x41, 0x47, 0x31, 0xaa, 0x28, 0xe2, 0x6a, 0xe8, 0x41, 0x67, 0x31, 0xa0, 0xfe, 0xfd, 0xa9, 0xe8, 0x41, 0x67, 0x39, 0xbe, 0x2a, 0xaf, 0xf5, - 0xe8, 0x41, 0x67, 0x39, 0xff, 0xbe, 0x7b, 0xc2, 0xe8, 0x41, 0x87, 0x39, 0xed, 0xa3, 0xea, 0x4f, 0x08, 0x4a, 0x66, 0x31, 0x79, 0x0e, 0xba, 0x8a, 0x08, 0x4a, 0xa7, 0x41, 0x9f, 0x5f, 0xe0, 0xeb, - 0x84, 0x51, 0x23, 0x49, 0x5c, 0x56, 0xbc, 0xe8, 0x44, 0x59, 0x23, 0x41, 0xef, 0x8d, 0x7e, 0xee, 0x44, 0x51, 0x03, 0x41, 0x2a, 0xae, 0x67, 0xf8, 0x44, 0x51, 0x03, 0x41, 0xae, 0x0c, 0xf7, 0xf8, - 0x44, 0x51, 0xe2, 0x40, 0x0a, 0xa2, 0x2a, 0x2d, 0x44, 0x59, 0x23, 0x49, 0x99, 0x2a, 0xfe, 0xff, 0x64, 0x59, 0x23, 0x51, 0xdd, 0xdc, 0x5d, 0xf7, 0x24, 0x51, 0x03, 0x49, 0xfe, 0x7c, 0xda, 0x62, - 0xc5, 0x61, 0x02, 0x49, 0x7f, 0xfd, 0xdd, 0x2d, 0x25, 0x6a, 0x23, 0x51, 0x2d, 0x09, 0x8a, 0x80, 0x25, 0x6a, 0xa4, 0x61, 0xce, 0xbe, 0xbf, 0x79, 0x25, 0x6a, 0xa4, 0x61, 0x62, 0xea, 0x2f, 0xaf, - 0x86, 0x72, 0xa4, 0x59, 0xf5, 0xfd, 0x3f, 0xef, 0xe8, 0x7a, 0x05, 0x62, 0x5d, 0xd4, 0xbf, 0x2d, 0xeb, 0x9b, 0x25, 0x6a, 0x2d, 0xab, 0xa8, 0xf9, 0x69, 0x8b, 0x25, 0x6a, 0xe2, 0xe3, 0x74, 0x55, - 0x86, 0x6a, 0xe4, 0x61, 0xe8, 0xaf, 0xe0, 0xf7, 0x46, 0x6a, 0xe4, 0x61, 0xcf, 0x27, 0x07, 0x7a, 0xe8, 0x7a, 0xc4, 0x61, 0x2f, 0x2f, 0x2f, 0xf5, 0x4b, 0xa4, 0x83, 0x59, 0x2b, 0x02, 0xfe, 0x55, - 0x8d, 0xbc, 0xc3, 0x61, 0xa2, 0xfc, 0x5f, 0x55, 0xaa, 0xa3, 0xe3, 0x69, 0xbe, 0x8e, 0xbd, 0x25, 0x4c, 0xac, 0x66, 0x7a, 0xaf, 0x02, 0x32, 0x56, 0x0e, 0xc5, 0x65, 0x7a, 0x0a, 0xea, 0xda, 0xbb, - 0xad, 0xc4, 0x69, 0x93, 0x28, 0x95, 0xbd, 0xaf, 0x2f, 0xcd, 0x49, 0x93, 0x0a, 0xaa, 0x1a, 0xfa, 0x6a, 0x93, 0xa7, 0x41, 0x5c, 0x56, 0x57, 0x55, 0x48, 0x62, 0xa7, 0x41, 0x8a, 0x7f, 0xdf, 0xfd, - 0x08, 0x52, 0xa7, 0x41, 0xe8, 0x2d, 0x7e, 0xf7, 0x08, 0x4a, 0x87, 0x41, 0xa2, 0xeb, 0x57, 0x7f, 0x28, 0x4a, 0xa7, 0x41, 0x2f, 0xff, 0x55, 0x5f, 0x28, 0x4a, 0xa7, 0x39, 0xb6, 0x2b, 0xa7, 0xb5, - 0x49, 0x5a, 0xa7, 0x41, 0xea, 0xf2, 0xe3, 0xbd, 0x8a, 0x6a, 0xa6, 0x49, 0x33, 0xab, 0x02, 0xde, 0xca, 0x6a, 0xa6, 0x41, 0x22, 0xa2, 0x7a, 0x5f, 0xaa, 0x72, 0x86, 0x39, 0xc0, 0xe0, 0x7b, 0x77, - 0x49, 0x5a, 0xa7, 0x39, 0x8a, 0x0d, 0xbd, 0xb5, 0x28, 0x5a, 0xa7, 0x39, 0xa0, 0xb8, 0xfe, 0x7d, 0x08, 0x4a, 0xa7, 0x41, 0x4f, 0xad, 0xa8, 0xdd, 0x28, 0x4a, 0xa7, 0x41, 0x3d, 0xaf, 0xfe, 0xff, - 0x08, 0x4a, 0x67, 0x39, 0xa0, 0xb8, 0x7b, 0xfe, 0xc8, 0x41, 0x67, 0x31, 0x68, 0x8b, 0xa1, 0x8b, 0x08, 0x42, 0x87, 0x39, 0x7b, 0xef, 0x0b, 0xdf, 0x08, 0x42, 0x87, 0x39, 0x03, 0xf2, 0xe2, 0x7a, - 0x09, 0x4a, 0xa7, 0x39, 0x9a, 0x2b, 0x2e, 0xea, 0x29, 0x4a, 0xa7, 0x41, 0xea, 0x7a, 0x0f, 0x6b, 0xe8, 0x41, 0x67, 0x39, 0xca, 0xc0, 0x70, 0xff, 0xc7, 0x39, 0x46, 0x31, 0x78, 0xaa, 0x8a, 0xae, - 0xc8, 0x41, 0x66, 0x31, 0xae, 0xae, 0x7a, 0xea, 0x08, 0x4a, 0x67, 0x39, 0x2d, 0xff, 0xfd, 0xbf, 0xe8, 0x49, 0x66, 0x39, 0x3f, 0xff, 0x5f, 0xff, 0xe7, 0x41, 0x66, 0x39, 0x8b, 0xae, 0x2d, 0x5b, - 0xe8, 0x41, 0x87, 0x39, 0x8a, 0x08, 0xae, 0xa7, 0xe8, 0x49, 0x87, 0x41, 0xfa, 0x88, 0xea, 0x55, 0xe8, 0x41, 0x87, 0x39, 0x00, 0x2a, 0x2f, 0xf5, 0x08, 0x42, 0x87, 0x39, 0xa2, 0x8b, 0xad, 0xb7, - 0x29, 0x42, 0xa7, 0x39, 0x7d, 0xaa, 0x2a, 0x7c, 0x09, 0x42, 0xa8, 0x31, 0x5f, 0xee, 0xb7, 0x3b, 0x09, 0x4a, 0x66, 0x29, 0xaa, 0x80, 0x22, 0x7e, 0x29, 0x4a, 0xa8, 0x39, 0xff, 0xee, 0x98, 0x7e, - 0x29, 0x4a, 0x88, 0x39, 0xbf, 0x3f, 0xaa, 0xdf, 0xaa, 0x5a, 0xe8, 0x41, 0x5f, 0x80, 0xdf, 0x75, 0x69, 0x52, 0xc8, 0x41, 0x38, 0x3e, 0xfa, 0x97, 0x0b, 0x6b, 0x08, 0x4a, 0xef, 0xb2, 0xe9, 0xd5, - 0x8a, 0x5a, 0xe8, 0x41, 0xde, 0x82, 0x6a, 0xb5, 0x29, 0x4a, 0xa8, 0x39, 0xbb, 0x5c, 0x5e, 0x28, 0x08, 0x42, 0x87, 0x39, 0x28, 0xdd, 0xf5, 0xaa, 0x09, 0x42, 0xa8, 0x39, 0xb2, 0xbf, 0xdd, 0xca, - 0xe9, 0x41, 0xa7, 0x31, 0xab, 0x6a, 0xc2, 0xca, 0x29, 0x42, 0xa8, 0x39, 0xa2, 0xe5, 0xff, 0xe5, 0x09, 0x42, 0xa7, 0x39, 0xd8, 0x1e, 0xfa, 0xe3, 0x09, 0x42, 0xa7, 0x39, 0xc2, 0xca, 0x22, 0xbd, - 0x49, 0x4a, 0xa8, 0x39, 0xaf, 0xa9, 0xde, 0xa8, 0x09, 0x42, 0xa8, 0x39, 0x02, 0xe8, 0xe2, 0x24, 0x49, 0x52, 0xa8, 0x41, 0xa9, 0xaa, 0xfd, 0x8a, 0xaa, 0x62, 0xe8, 0x41, 0x70, 0x2b, 0x2f, 0x75, - 0x69, 0x52, 0x87, 0x31, 0xff, 0x5e, 0xfc, 0xfe, 0x09, 0x42, 0x87, 0x31, 0xfb, 0x0a, 0xad, 0xae, 0xe9, 0x41, 0xa7, 0x39, 0xf2, 0xa0, 0x30, 0x63, 0x29, 0x42, 0xa7, 0x39, 0xbd, 0xff, 0x6b, 0xf8, - 0x29, 0x4a, 0xa7, 0x39, 0xa0, 0x55, 0xfd, 0xbe, 0x09, 0x42, 0xa7, 0x39, 0xea, 0xed, 0xe8, 0x1f, 0xe8, 0x41, 0x87, 0x31, 0xd4, 0x82, 0xed, 0xa2, 0x06, 0x5a, 0x88, 0x31, 0x3f, 0x37, 0xb5, 0xd7, - 0x26, 0x6a, 0xe4, 0x61, 0xd2, 0xc8, 0x2e, 0x7b, 0x05, 0x6a, 0xa4, 0x61, 0x5e, 0x56, 0x7a, 0x68, 0xa4, 0x61, 0x43, 0x51, 0x7a, 0x7a, 0x58, 0xe8, 0x44, 0x51, 0x03, 0x49, 0xbe, 0xc0, 0x88, 0xc8, - 0x64, 0x51, 0x02, 0x41, 0x2b, 0x2a, 0x22, 0xa7, 0x84, 0x59, 0x03, 0x41, 0xba, 0xe2, 0x8b, 0xa9, 0x44, 0x51, 0x02, 0x49, 0xdf, 0xb9, 0x5f, 0xb7, 0x43, 0x49, 0xe2, 0x40, 0x83, 0x2b, 0xff, 0x7f, - 0x44, 0x51, 0x03, 0x41, 0x87, 0xff, 0x55, 0xd5, 0x63, 0x51, 0xe3, 0x38, 0x00, 0xfe, 0xdf, 0x7f, 0x23, 0x51, 0xc2, 0x30, 0x80, 0xfb, 0xfd, 0xda, 0x24, 0x41, 0xc2, 0x30, 0x0a, 0xeb, 0xda, 0x3d, - 0x6c, 0x8b, 0x03, 0x39, 0x25, 0xad, 0xcd, 0xe3, 0x28, 0x52, 0x87, 0x39, 0xaa, 0xca, 0x2b, 0x7d, 0x29, 0x4a, 0xa7, 0x41, 0xfb, 0xa9, 0xef, 0x73, 0x29, 0x4a, 0xa7, 0x39, 0xea, 0xa5, 0xaa, 0xa2, - 0x28, 0x42, 0xa7, 0x39, 0xe3, 0xb7, 0xde, 0xba, 0x49, 0x4a, 0x67, 0x39, 0xab, 0xba, 0x8a, 0x5e, 0xe8, 0x49, 0xa7, 0x31, 0xed, 0x83, 0x0a, 0x2c, 0x29, 0x52, 0xa8, 0x39, 0x75, 0x64, 0xff, 0x7a, - 0x08, 0x42, 0x87, 0x39, 0x2f, 0xb5, 0xbb, 0xab, 0x29, 0x4a, 0xa7, 0x41, 0xad, 0xff, 0xaf, 0x8b, 0x28, 0x4a, 0xa7, 0x31, 0x02, 0xa7, 0xfb, 0xbe, 0x29, 0x4a, 0xa7, 0x39, 0x88, 0xb6, 0xeb, 0x2a, - 0x49, 0x52, 0xa7, 0x39, 0xe9, 0x23, 0xbc, 0xef, 0x8a, 0x5a, 0xa7, 0x39, 0xa7, 0xcb, 0x7f, 0xff, 0x49, 0x4a, 0xa7, 0x41, 0xf4, 0x0b, 0xa7, 0xea, 0x49, 0x4a, 0xa7, 0x41, 0xaf, 0xf8, 0xaa, 0xad, - 0x29, 0x4a, 0xc7, 0x41, 0xa2, 0x7b, 0xae, 0x9e, 0x29, 0x4a, 0xc7, 0x41, 0xfa, 0xb7, 0xee, 0xcf, 0x09, 0x4a, 0xc7, 0x41, 0xb6, 0x95, 0xb1, 0x6c, 0x29, 0x4a, 0xa8, 0x41, 0x62, 0xeb, 0x8e, 0xbe, - 0x29, 0x4a, 0xc7, 0x41, 0xfb, 0xff, 0x26, 0xb7, 0x49, 0x52, 0xe8, 0x41, 0x66, 0x8b, 0xfe, 0xdd, 0x8a, 0x5a, 0xe7, 0x41, 0xfd, 0xca, 0xaf, 0xff, 0x69, 0x52, 0xa7, 0x41, 0xf7, 0xea, 0xf4, 0x5e, - 0x08, 0x4a, 0x87, 0x39, 0xf6, 0x2a, 0xaf, 0xff, 0x08, 0x4a, 0x86, 0x31, 0xea, 0xc8, 0xfe, 0x57, 0x09, 0x42, 0xa7, 0x39, 0xad, 0xaf, 0xa0, 0xee, 0x08, 0x42, 0x87, 0x39, 0xd6, 0xdf, 0xb2, 0xa6, - 0x08, 0x52, 0x87, 0x39, 0xdd, 0xed, 0x0f, 0xae, 0xe8, 0x41, 0x87, 0x39, 0xac, 0xba, 0xf6, 0x5e, 0xe8, 0x49, 0x87, 0x39, 0xd5, 0xeb, 0xaa, 0x0b, 0x09, 0x4a, 0xa7, 0x41, 0xf9, 0x2d, 0x6f, 0x9f, - 0x23, 0x51, 0x08, 0x4a, 0x02, 0x8b, 0xad, 0xb5, 0x64, 0x59, 0x23, 0x51, 0x55, 0xfd, 0xbe, 0xa4, 0xe6, 0x61, 0x03, 0x49, 0x5d, 0x57, 0xff, 0x3f, 0xe5, 0x69, 0xe3, 0x38, 0x5f, 0x5f, 0x7a, 0xe0, - 0xe5, 0x59, 0xe3, 0x38, 0x5f, 0xfd, 0xfd, 0x2b, 0xc5, 0x61, 0x03, 0x49, 0xf5, 0xdf, 0xff, 0xa8, 0xa4, 0x59, 0x23, 0x51, 0x75, 0x5f, 0xf6, 0xbc, 0xa4, 0x61, 0x23, 0x49, 0xf5, 0xf5, 0x2f, 0x0a, - 0x05, 0x6a, 0x44, 0x51, 0x2d, 0x0b, 0x7f, 0xff, 0x66, 0x72, 0xa4, 0x59, 0xfe, 0xcb, 0xab, 0xed, 0x25, 0x62, 0x83, 0x59, 0x7b, 0xeb, 0xa2, 0x22, 0x66, 0x6a, 0xa4, 0x61, 0xd7, 0xff, 0xe0, 0xda, - 0x05, 0x6a, 0xa4, 0x59, 0xaf, 0xb8, 0x28, 0x7c, 0x67, 0x6a, 0x83, 0x59, 0x82, 0xe2, 0xfe, 0x7b, 0x66, 0x72, 0x43, 0x51, 0x82, 0xaa, 0xff, 0x55, 0x05, 0x6a, 0x43, 0x51, 0x02, 0xaa, 0xeb, 0xfd, - 0x05, 0x6a, 0x63, 0x51, 0x80, 0x88, 0xfd, 0xfd, 0x05, 0x62, 0x43, 0x51, 0x82, 0xea, 0x7f, 0xe2, 0xc7, 0x7a, 0x83, 0x51, 0xff, 0xd7, 0xb5, 0x0b, 0x28, 0x8b, 0xe4, 0x61, 0xfd, 0x2d, 0x0a, 0x02, - 0x69, 0x8b, 0x86, 0x72, 0xad, 0xef, 0x0b, 0x82, 0xca, 0xa3, 0x66, 0x72, 0x8b, 0xe9, 0xaa, 0xaa, 0x2c, 0xb4, 0xc7, 0x7a, 0xd4, 0xff, 0xbf, 0xaa, 0x0b, 0xac, 0x49, 0x93, 0x82, 0x23, 0x8b, 0x09, - 0x8c, 0xbc, 0xea, 0xab, 0x3d, 0xa7, 0x25, 0x95, 0xef, 0xcc, 0xc6, 0x51, 0x48, 0x68, 0x50, 0x50, 0x49, 0x52, 0xc8, 0x41, 0x7f, 0xf8, 0x79, 0x7a, 0x29, 0x4a, 0xc8, 0x41, 0xed, 0xc8, 0x79, 0x57, - 0x29, 0x4a, 0xa7, 0x41, 0x5f, 0x2b, 0x3f, 0x24, 0x28, 0x4a, 0xc7, 0x41, 0x5c, 0x56, 0x7d, 0xfa, 0x8a, 0x52, 0xa7, 0x41, 0x5f, 0xfd, 0x7f, 0x8f, 0x49, 0x52, 0xa7, 0x41, 0x57, 0xff, 0xe9, 0x8a, - 0x69, 0x52, 0xc8, 0x49, 0x5d, 0xf5, 0xfb, 0xa8, 0x8a, 0x5a, 0xc7, 0x49, 0x5f, 0xb3, 0x77, 0x7e, 0x49, 0x52, 0x87, 0x41, 0xfd, 0x88, 0xfa, 0xea, 0x29, 0x52, 0x87, 0x39, 0x6a, 0xe0, 0xff, 0x22, - 0x29, 0x52, 0x87, 0x39, 0xb5, 0xef, 0xef, 0x0a, 0x08, 0x4a, 0xc7, 0x39, 0xbb, 0x62, 0xeb, 0xe3, 0x28, 0x4a, 0xc7, 0x41, 0xeb, 0xfd, 0xeb, 0xb1, 0x29, 0x4a, 0xa7, 0x41, 0xfd, 0xfe, 0xba, 0x2a, - 0x08, 0x4a, 0xa7, 0x39, 0x5e, 0x5b, 0x8c, 0xf8, 0x08, 0x4a, 0x67, 0x39, 0xfd, 0xaf, 0xea, 0x78, 0xc8, 0x41, 0x87, 0x39, 0xff, 0x8e, 0x0a, 0x79, 0x08, 0x42, 0x46, 0x31, 0xaa, 0x9a, 0x02, 0x0b, - 0x09, 0x4a, 0xc7, 0x41, 0x5a, 0xdb, 0xbc, 0xa0, 0x29, 0x4a, 0xa7, 0x39, 0x7b, 0xeb, 0xfe, 0xa8, 0xc8, 0x41, 0x66, 0x31, 0xa8, 0x6c, 0xb8, 0xfa, 0xe8, 0x41, 0x67, 0x39, 0xea, 0xa9, 0x1f, 0xaf, - 0x08, 0x42, 0x67, 0x39, 0xff, 0x7a, 0x2e, 0xbe, 0xe8, 0x49, 0x86, 0x39, 0xca, 0xfd, 0xba, 0xbf, 0xa8, 0x49, 0xe7, 0x39, 0xee, 0xa2, 0xfe, 0x5f, 0xc8, 0x49, 0xa6, 0x31, 0xa8, 0xfa, 0xaa, 0xd7, - 0xe8, 0x49, 0x86, 0x39, 0x2b, 0xdb, 0x7e, 0x3f, 0xe8, 0x49, 0x87, 0x39, 0xdf, 0xb7, 0xe7, 0x2e, 0xe8, 0x41, 0x86, 0x39, 0x9d, 0xdf, 0xeb, 0x88, 0xc8, 0x41, 0x86, 0x39, 0xf5, 0xe8, 0x95, 0x8b, - 0x6d, 0x6b, 0x87, 0x39, 0x5f, 0xea, 0x5f, 0xa2, 0x4d, 0x73, 0xc8, 0x39, 0x55, 0x7f, 0x7d, 0xe0, 0x49, 0x4a, 0xc8, 0x39, 0xbc, 0xff, 0xdf, 0x5b, 0x29, 0x4a, 0xc8, 0x39, 0x35, 0x8a, 0x5f, 0xfd, - 0x29, 0x4a, 0xc8, 0x39, 0x2a, 0xfe, 0xde, 0xde, 0xcb, 0x5a, 0x87, 0x31, 0x8a, 0xdf, 0xf7, 0xaa, 0x49, 0x52, 0x46, 0x31, 0xaa, 0xfe, 0xed, 0xa8, 0x29, 0x52, 0x87, 0x31, 0xae, 0xd7, 0xbd, 0x29, - 0xaa, 0x62, 0x87, 0x31, 0x4e, 0xd7, 0xae, 0x20, 0x0b, 0x73, 0xa8, 0x39, 0xf5, 0x95, 0x2f, 0xa2, 0x4b, 0x7b, 0x67, 0x31, 0x57, 0xea, 0xaa, 0xa0, 0xea, 0x6a, 0x88, 0x31, 0xf5, 0xf5, 0xea, 0xa8, - 0x2b, 0x6b, 0xc8, 0x41, 0x55, 0x7d, 0x0f, 0xab, 0xca, 0x5a, 0xa7, 0x31, 0xd5, 0xfd, 0x2a, 0x80, 0x6c, 0x73, 0xc8, 0x41, 0x75, 0xd5, 0x0b, 0xaa, 0xaa, 0x5a, 0xc8, 0x39, 0x55, 0xdd, 0xf8, 0xa8, - 0x49, 0x52, 0xa8, 0x39, 0xef, 0x55, 0x77, 0xe8, 0x29, 0x4a, 0xa8, 0x39, 0xfe, 0x3d, 0x37, 0x8a, 0x49, 0x52, 0x87, 0x39, 0xbf, 0xde, 0x0a, 0xfa, 0xea, 0x62, 0xa8, 0x39, 0xd7, 0x35, 0xff, 0x83, - 0x2b, 0x7b, 0xc8, 0x39, 0x77, 0x70, 0xaa, 0xbb, 0xaa, 0x5a, 0x67, 0x29, 0xfd, 0xff, 0xdf, 0x88, 0x09, 0x42, 0xa8, 0x39, 0xbc, 0xaa, 0x9f, 0x5a, 0x8b, 0x5a, 0xc8, 0x39, 0xf5, 0xd5, 0xdd, 0x2d, - 0xab, 0x5a, 0xc8, 0x39, 0x5d, 0x57, 0xfd, 0x2b, 0x89, 0x5a, 0xa8, 0x39, 0x25, 0x8d, 0xff, 0xbe, 0x49, 0x52, 0xe8, 0x41, 0x57, 0x94, 0xdd, 0xd8, 0x29, 0x4a, 0xa7, 0x39, 0xdb, 0xb8, 0xea, 0xe8, - 0x26, 0x62, 0x02, 0x49, 0xd8, 0xda, 0xba, 0x0a, 0xe5, 0x69, 0xa3, 0x61, 0x6f, 0x7e, 0x72, 0xe0, 0xc4, 0x61, 0x23, 0x51, 0xfe, 0xde, 0xde, 0xfc, 0x84, 0x59, 0x23, 0x49, 0xef, 0xff, 0x75, 0xfb, - 0x44, 0x49, 0x03, 0x41, 0x8e, 0xe7, 0xbe, 0xfc, 0xc4, 0x61, 0x03, 0x41, 0xaa, 0x0d, 0x2d, 0xbd, 0x84, 0x59, 0x02, 0x41, 0x7f, 0x5e, 0x58, 0x78, 0x24, 0x51, 0xe2, 0x38, 0xff, 0xfe, 0xff, 0xfd, - 0x24, 0x49, 0xe2, 0x38, 0x2b, 0xbe, 0xae, 0xbf, 0x23, 0x41, 0xe2, 0x38, 0x5a, 0x7a, 0x77, 0x7f, 0x03, 0x39, 0xc2, 0x30, 0xcb, 0xa8, 0xd8, 0xaa, 0x0d, 0xac, 0xe3, 0x38, 0x55, 0x55, 0xd5, 0x35, - 0x52, 0xd5, 0x86, 0x41, 0x73, 0x5a, 0x5c, 0x56, 0x08, 0x42, 0x86, 0x31, 0xaa, 0xae, 0xe0, 0x1b, 0x08, 0x42, 0xa7, 0x39, 0x40, 0x8d, 0x27, 0x20, 0x29, 0x4a, 0xe8, 0x41, 0x29, 0x52, 0x06, 0x28, - 0x49, 0x4a, 0xa7, 0x39, 0x8e, 0xde, 0xaf, 0xab, 0x69, 0x52, 0xa7, 0x39, 0x8f, 0x7a, 0xef, 0x88, 0x28, 0x42, 0x87, 0x39, 0xae, 0xab, 0xa7, 0xa0, 0x49, 0x4a, 0x66, 0x29, 0xa7, 0xaa, 0x0a, 0xae, - 0x49, 0x52, 0x87, 0x31, 0xb5, 0xab, 0xa8, 0xeb, 0x29, 0x4a, 0xc7, 0x39, 0xd7, 0xb6, 0xb4, 0xfb, 0x28, 0x4a, 0x87, 0x39, 0xae, 0xa7, 0xfa, 0xb0, 0x49, 0x5a, 0xc7, 0x41, 0xdd, 0xfd, 0xad, 0xcf, - 0xaa, 0x62, 0xc7, 0x41, 0xdf, 0xff, 0xeb, 0xa2, 0xca, 0x62, 0xc8, 0x41, 0xf7, 0x5f, 0x5f, 0xf2, 0x28, 0x4a, 0xa7, 0x39, 0xfa, 0xdf, 0xad, 0x2e, 0x28, 0x4a, 0x87, 0x39, 0x29, 0xaf, 0x7e, 0x02, - 0x49, 0x52, 0xa7, 0x39, 0x7a, 0xaf, 0xf5, 0xc8, 0x29, 0x4a, 0x87, 0x39, 0x25, 0xab, 0x83, 0x8a, 0x29, 0x4a, 0xa7, 0x39, 0xf8, 0xaa, 0xad, 0xa8, 0x28, 0x4a, 0xc7, 0x41, 0xeb, 0xa9, 0x03, 0xba, - 0x29, 0x52, 0xe8, 0x49, 0xb5, 0x0f, 0x43, 0x6e, 0x69, 0x52, 0xa7, 0x41, 0x7f, 0xfb, 0xfb, 0xb2, 0xaa, 0x62, 0x87, 0x31, 0xb5, 0xbf, 0xbf, 0x2a, 0x89, 0x52, 0xa7, 0x41, 0x55, 0xff, 0xae, 0x3a, - 0x69, 0x5a, 0x87, 0x39, 0xff, 0xff, 0x7a, 0xf4, 0xe8, 0x41, 0x87, 0x31, 0xdc, 0x6f, 0xfe, 0x96, 0x08, 0x42, 0x87, 0x39, 0xaf, 0x2a, 0x9a, 0xbf, 0x08, 0x42, 0x87, 0x39, 0x7a, 0xa4, 0x2a, 0xeb, - 0xe8, 0x49, 0xa7, 0x39, 0xc9, 0x7e, 0xff, 0x57, 0xe8, 0x41, 0x67, 0x39, 0x78, 0xfa, 0x0c, 0xf2, 0x08, 0x4a, 0x67, 0x39, 0x2a, 0xad, 0xaa, 0x0b, 0xe8, 0x49, 0xa7, 0x39, 0xf4, 0xee, 0xfa, 0xef, - 0x85, 0x51, 0x08, 0x4a, 0x37, 0xb7, 0xb5, 0xfd, 0xa5, 0x59, 0x63, 0x51, 0x6e, 0xfc, 0xc7, 0x86, 0xa5, 0x61, 0x43, 0x51, 0x17, 0xb6, 0xef, 0xef, 0xe5, 0x61, 0x63, 0x51, 0x80, 0x2a, 0xf5, 0xfd, - 0xc5, 0x61, 0x43, 0x51, 0x28, 0xf7, 0xff, 0xfb, 0xa4, 0x59, 0x23, 0x49, 0x5c, 0xff, 0xbf, 0xa3, 0x84, 0x59, 0x23, 0x51, 0x29, 0x2e, 0x9e, 0xbf, 0xc4, 0x61, 0x43, 0x51, 0x00, 0xff, 0xeb, 0xad, - 0xc4, 0x61, 0x63, 0x51, 0xbe, 0x3b, 0x6d, 0x5a, 0xc5, 0x61, 0x83, 0x51, 0xe8, 0x57, 0xe5, 0xfd, 0xe4, 0x61, 0x63, 0x49, 0xe2, 0x5f, 0xfe, 0xbe, 0x05, 0x5a, 0x63, 0x51, 0x7d, 0xdd, 0xb3, 0xab, - 0xc5, 0x59, 0x63, 0x49, 0xff, 0x6f, 0xb8, 0xa0, 0xc4, 0x61, 0x43, 0x49, 0xc2, 0xf7, 0xbb, 0x8a, 0xc4, 0x61, 0x43, 0x49, 0xff, 0xa7, 0xba, 0x0a, 0xe5, 0x69, 0x43, 0x49, 0x7d, 0xfe, 0xef, 0x2a, - 0xe4, 0x61, 0x83, 0x51, 0x2d, 0xeb, 0x2c, 0x02, 0xc8, 0x7a, 0xc4, 0x61, 0x7f, 0x0f, 0xf5, 0x55, 0x29, 0x8b, 0xc3, 0x69, 0x8b, 0xee, 0xf5, 0x55, 0xca, 0x9b, 0xa3, 0x61, 0x0a, 0x57, 0xff, 0x55, - 0xa9, 0xa3, 0xc3, 0x69, 0x80, 0xf5, 0x55, 0x55, 0x48, 0x9b, 0xe4, 0x69, 0x2a, 0xab, 0xff, 0xd5, 0x8a, 0x9b, 0x25, 0x72, 0x02, 0x2e, 0x3f, 0x35, 0x2b, 0xb4, 0x69, 0x9b, 0xe9, 0xeb, 0xaa, 0x2a, - 0x71, 0xd5, 0xc6, 0x82, 0x9b, 0xaf, 0xa6, 0x29, 0x8d, 0xbc, 0xa6, 0x41, 0x58, 0x5c, 0x56, 0x55, 0x29, 0x4a, 0xa7, 0x41, 0x2b, 0xbf, 0xfa, 0x5c, 0x8a, 0x5a, 0xc7, 0x41, 0xfe, 0x2f, 0x95, 0x79, - 0x6a, 0x52, 0xc7, 0x41, 0xea, 0xdc, 0xf7, 0xd7, 0x69, 0x52, 0x66, 0x39, 0xec, 0xae, 0xf7, 0xaa, 0x49, 0x52, 0xc7, 0x41, 0xbf, 0x8a, 0xed, 0xfe, 0x69, 0x52, 0xc8, 0x39, 0x8a, 0x2a, 0xd7, 0xd7, - 0x8a, 0x5a, 0xc7, 0x41, 0xef, 0x88, 0xbd, 0xfd, 0x49, 0x52, 0xe8, 0x49, 0x77, 0x2b, 0x30, 0x37, 0xca, 0x62, 0x87, 0x41, 0x87, 0x08, 0x2e, 0xa0, 0xaa, 0x5a, 0xa7, 0x41, 0xd6, 0x88, 0xee, 0x7a, - 0x69, 0x52, 0x86, 0x39, 0xf7, 0xaa, 0x02, 0xc3, 0x28, 0x4a, 0xa7, 0x39, 0xbf, 0xec, 0xb9, 0xdd, 0x08, 0x4a, 0xa7, 0x39, 0xaf, 0xab, 0xb8, 0xb6, 0x08, 0x4a, 0x87, 0x39, 0xbc, 0x7e, 0xfe, 0x7e, - 0xe8, 0x41, 0x46, 0x39, 0x82, 0xea, 0xae, 0xb6, 0x29, 0x4a, 0x86, 0x39, 0x57, 0xfd, 0x2a, 0xff, 0x08, 0x4a, 0x67, 0x31, 0x7b, 0xfa, 0xc8, 0x7a, 0x08, 0x42, 0x87, 0x31, 0x9d, 0xaa, 0x8a, 0xbd, - 0xc8, 0x49, 0xa7, 0x31, 0xa8, 0x2e, 0xef, 0x3d, 0x29, 0x52, 0x87, 0x39, 0xff, 0x57, 0xd5, 0xe8, 0xc8, 0x41, 0x46, 0x39, 0x5e, 0xaf, 0x88, 0x8a, 0x87, 0x41, 0xc8, 0x39, 0xb0, 0xc0, 0x55, 0xaf, - 0xe8, 0x41, 0xa7, 0x39, 0xd5, 0xfb, 0xd5, 0x5a, 0xe8, 0x41, 0x87, 0x31, 0x0f, 0xa3, 0x95, 0x9f, 0xe8, 0x41, 0x87, 0x39, 0x88, 0x06, 0xaa, 0xde, 0xe8, 0x41, 0xa7, 0x39, 0xa6, 0x72, 0x56, 0xf5, - 0x08, 0x42, 0xa7, 0x39, 0x9a, 0x3a, 0xff, 0x55, 0x08, 0x42, 0xa7, 0x39, 0xba, 0x3f, 0xef, 0xf7, 0x87, 0x41, 0xe8, 0x39, 0xab, 0x55, 0x2b, 0xff, 0x28, 0x4a, 0xa7, 0x39, 0x7d, 0xf2, 0xbf, 0xb7, - 0x8a, 0x52, 0xe8, 0x49, 0x22, 0x55, 0x88, 0x7f, 0x8a, 0x5a, 0x08, 0x4a, 0x5a, 0x3d, 0xaa, 0x66, 0xeb, 0x62, 0xa8, 0x39, 0x5f, 0xfc, 0xff, 0xd7, 0x49, 0x42, 0xa8, 0x39, 0x27, 0x2e, 0x0a, 0xeb, - 0xcb, 0x5a, 0xc8, 0x39, 0xd7, 0x8b, 0xbf, 0xd6, 0x0c, 0x63, 0xe8, 0x39, 0xb3, 0xf6, 0xff, 0xf5, 0x8a, 0x5a, 0xe8, 0x41, 0xfe, 0xd7, 0xef, 0x2d, 0xeb, 0x62, 0x08, 0x42, 0x0b, 0x5f, 0x3e, 0xa2, - 0x0b, 0x6b, 0x09, 0x4a, 0xa8, 0x2a, 0xd6, 0xa0, 0x4b, 0x7b, 0x49, 0x52, 0xfa, 0x7e, 0xef, 0x25, 0x4b, 0x73, 0x69, 0x5a, 0xed, 0x55, 0x2a, 0x82, 0x6c, 0x7b, 0x28, 0x4a, 0xbd, 0xfe, 0x28, 0xa8, - 0x2b, 0x73, 0x28, 0x4a, 0x57, 0xf0, 0xf0, 0x7a, 0x0b, 0x6b, 0x29, 0x4a, 0xfd, 0x3f, 0xaf, 0xf5, 0xeb, 0x6a, 0x69, 0x5a, 0x5f, 0x82, 0x37, 0xfd, 0x0b, 0x6b, 0x29, 0x4a, 0xef, 0x7a, 0x00, 0x08, - 0x2b, 0x73, 0x8a, 0x52, 0x7f, 0x29, 0xf8, 0xfa, 0x2b, 0x6b, 0xc8, 0x41, 0xfd, 0x5e, 0x20, 0x22, 0x8c, 0x7b, 0x69, 0x5a, 0xb5, 0xfd, 0xfc, 0xfe, 0x2b, 0x73, 0xaa, 0x5a, 0x7b, 0xff, 0x9e, 0xa2, - 0x2b, 0x73, 0x69, 0x52, 0xad, 0xff, 0xbf, 0xb0, 0x0c, 0x73, 0x69, 0x52, 0xdf, 0xf7, 0xff, 0xf2, 0x6d, 0x6b, 0x69, 0x52, 0x3f, 0xff, 0xdf, 0xff, 0xab, 0x5a, 0x49, 0x4a, 0x99, 0x20, 0x6a, 0x68, - 0x0c, 0x6b, 0x29, 0x4a, 0x5d, 0x7f, 0x7b, 0x3f, 0x4c, 0x7b, 0x49, 0x4a, 0xf7, 0x55, 0xf5, 0xfc, 0x0b, 0x6b, 0x29, 0x4a, 0xf0, 0xbd, 0xdf, 0xea, 0x2c, 0x73, 0xe8, 0x41, 0x56, 0x7f, 0xf8, 0xfe, - 0xe5, 0x69, 0x68, 0x52, 0x8b, 0x0b, 0x0b, 0x29, 0x25, 0x6a, 0xa4, 0x61, 0x7f, 0xfe, 0xb6, 0xf3, 0xe4, 0x69, 0x43, 0x51, 0xfa, 0x7e, 0xf8, 0xfa, 0xa5, 0x59, 0x22, 0x49, 0x7e, 0xff, 0xfa, 0xa8, - 0x64, 0x51, 0x23, 0x41, 0xf7, 0xd9, 0xbf, 0x2a, 0x64, 0x59, 0x03, 0x49, 0x2f, 0xeb, 0xf8, 0x76, 0xa4, 0x61, 0x03, 0x49, 0xfa, 0x8f, 0xbd, 0xd5, 0x44, 0x51, 0xe2, 0x38, 0xde, 0xfe, 0xf8, 0xe8, - 0x23, 0x41, 0xe2, 0x38, 0xad, 0x88, 0xe8, 0x8b, 0xe2, 0x40, 0x04, 0x39, 0xfe, 0xbf, 0x55, 0x5e, 0xe7, 0x59, 0xe3, 0x38, 0x55, 0xd5, 0xb5, 0x37, 0x51, 0xcd, 0x25, 0x41, 0x25, 0x0d, 0x03, 0x82, - 0x2a, 0x83, 0xe8, 0x49, 0x54, 0x57, 0x75, 0x57, 0x08, 0x4a, 0xa7, 0x31, 0x9f, 0xfe, 0xc8, 0xe8, 0x49, 0x4a, 0xa7, 0x39, 0xea, 0xdb, 0xbf, 0x8b, 0x29, 0x42, 0x87, 0x31, 0xa5, 0xae, 0xe6, 0xe0, - 0x29, 0x42, 0xc8, 0x39, 0x9b, 0x38, 0x2b, 0xff, 0x69, 0x52, 0x08, 0x42, 0x3b, 0xfd, 0xbb, 0xdf, 0x69, 0x52, 0xc8, 0x41, 0xf8, 0x5e, 0xa2, 0xfd, 0x49, 0x52, 0x87, 0x31, 0xb6, 0xab, 0x2a, 0xfa, - 0x49, 0x4a, 0xa7, 0x31, 0xf7, 0xaf, 0xaa, 0x8a, 0x29, 0x4a, 0xa7, 0x31, 0xda, 0xfa, 0x2f, 0xbf, 0x49, 0x4a, 0xc8, 0x41, 0xbe, 0xd5, 0xac, 0xbf, 0x29, 0x42, 0xc8, 0x39, 0x28, 0x52, 0x24, 0xb7, - 0x29, 0x4a, 0xe8, 0x41, 0x0b, 0xab, 0xb9, 0xf3, 0x6a, 0x5a, 0xe8, 0x41, 0xe3, 0xa2, 0xff, 0xdf, 0x69, 0x52, 0x08, 0x42, 0x25, 0xdf, 0xae, 0xad, 0xea, 0x62, 0xc7, 0x41, 0xe8, 0x5f, 0xdf, 0xff, - 0xaa, 0x62, 0x08, 0x4a, 0xec, 0xd5, 0x5a, 0x7f, 0x8a, 0x5a, 0xe8, 0x41, 0x5f, 0xe8, 0xf9, 0xfe, 0x69, 0x52, 0xc7, 0x39, 0xab, 0xff, 0x35, 0xbf, 0x2c, 0x73, 0xe8, 0x41, 0xd7, 0xfd, 0x8d, 0xeb, - 0x8a, 0x62, 0x09, 0x4a, 0x7b, 0xda, 0x8a, 0xfa, 0xaa, 0x62, 0xe8, 0x41, 0x9f, 0x10, 0xeb, 0xac, 0xea, 0x6a, 0x08, 0x52, 0x7f, 0x28, 0x85, 0xfa, 0x89, 0x5a, 0xc7, 0x49, 0xaa, 0x60, 0xfe, 0xfb, - 0x29, 0x52, 0xc8, 0x41, 0xb4, 0xfe, 0xbe, 0xae, 0x69, 0x52, 0xa8, 0x41, 0xd5, 0xe5, 0xfe, 0xa2, 0x28, 0x4a, 0xa7, 0x39, 0xbf, 0xad, 0xba, 0xa0, 0x09, 0x52, 0xa7, 0x39, 0xeb, 0xff, 0xa7, 0x2a, - 0xe8, 0x49, 0x87, 0x39, 0x7a, 0x0b, 0x02, 0xa8, 0x09, 0x4a, 0xa7, 0x41, 0x5a, 0xd6, 0x83, 0x7f, 0xe8, 0x49, 0x67, 0x31, 0xaa, 0xea, 0xe8, 0x09, 0xe8, 0x49, 0x87, 0x39, 0x8f, 0xaa, 0xc8, 0x2a, - 0x29, 0x4a, 0xa7, 0x41, 0xdf, 0x6f, 0xfa, 0x2e, 0x26, 0x62, 0x64, 0x59, 0x5f, 0x7f, 0xaa, 0xa2, 0xe5, 0x69, 0x23, 0x51, 0xf9, 0xbf, 0xaa, 0xa8, 0x05, 0x6a, 0x83, 0x59, 0xed, 0x7f, 0xef, 0x0f, - 0xe5, 0x69, 0x84, 0x59, 0x57, 0xa2, 0xaa, 0x28, 0xe5, 0x69, 0x63, 0x59, 0xd5, 0xaf, 0xe0, 0xa0, 0xc5, 0x69, 0x43, 0x51, 0xd7, 0xfe, 0xe0, 0xea, 0x84, 0x61, 0x23, 0x51, 0x03, 0xbf, 0xb7, 0xbe, - 0xa4, 0x61, 0x43, 0x51, 0xf7, 0x2f, 0x3f, 0x3e, 0xe5, 0x69, 0x83, 0x59, 0x77, 0xad, 0x3a, 0xa8, 0xe5, 0x69, 0x84, 0x59, 0x5d, 0xbe, 0x2a, 0x00, 0x05, 0x6a, 0x83, 0x59, 0xfd, 0x2e, 0x2a, 0x8b, - 0xe5, 0x69, 0xa4, 0x61, 0xb7, 0xa0, 0xdc, 0xec, 0x05, 0x72, 0xa4, 0x61, 0xdf, 0xaa, 0xfe, 0xba, 0x05, 0x72, 0xc4, 0x61, 0xff, 0xae, 0xfe, 0xfa, 0x04, 0x6a, 0xa3, 0x61, 0x2b, 0xae, 0x3e, 0xbf, - 0x04, 0x72, 0xc3, 0x61, 0xca, 0xd7, 0xf7, 0xfa, 0x04, 0x72, 0x83, 0x61, 0xfa, 0x5c, 0x7b, 0xea, 0xe4, 0x69, 0x83, 0x61, 0xdf, 0xdd, 0xbe, 0x22, 0x86, 0x7a, 0xa3, 0x61, 0xf5, 0xf5, 0xbd, 0x0b, - 0x86, 0x7a, 0xc3, 0x69, 0x55, 0xff, 0xab, 0xa0, 0x45, 0x72, 0xe3, 0x69, 0x55, 0xff, 0xda, 0x38, 0x0b, 0xa4, 0x04, 0x6a, 0x35, 0x15, 0x2d, 0x0b, 0xce, 0xc4, 0x07, 0x8b, 0x0a, 0x84, 0x2e, 0x0a, - 0x70, 0xd5, 0x27, 0x62, 0xab, 0x42, 0x42, 0x4a, 0x89, 0x62, 0x88, 0x39, 0xdf, 0x82, 0xaa, 0xfe, 0x8a, 0x5a, 0xa7, 0x39, 0x52, 0xaa, 0xfe, 0xff, 0x49, 0x52, 0xa7, 0x39, 0xf9, 0xfe, 0xaf, 0x2a, - 0x69, 0x52, 0xc8, 0x41, 0x9f, 0x5f, 0xff, 0xa0, 0x49, 0x52, 0xa7, 0x31, 0x00, 0xf7, 0xfa, 0xa0, 0x8a, 0x52, 0xa7, 0x41, 0x77, 0xc7, 0x57, 0x7f, 0x29, 0x4a, 0xa7, 0x41, 0xf9, 0x39, 0xff, 0x96, - 0x29, 0x4a, 0xa7, 0x41, 0xa7, 0xea, 0x57, 0xa3, 0x08, 0x42, 0x87, 0x39, 0xbf, 0xa2, 0x5f, 0x3c, 0x28, 0x4a, 0xa7, 0x41, 0x23, 0xaf, 0xd5, 0x7a, 0x08, 0x4a, 0x86, 0x39, 0xa0, 0x82, 0x7d, 0x6a, - 0x28, 0x4a, 0xa7, 0x39, 0xda, 0xea, 0x57, 0xdf, 0xe8, 0x49, 0x87, 0x39, 0x3b, 0xeb, 0x8d, 0xbb, 0xe8, 0x49, 0x87, 0x31, 0x8a, 0xa0, 0x56, 0xfe, 0xe8, 0x41, 0x47, 0x31, 0x2a, 0x2a, 0xf7, 0xaa, - 0x09, 0x42, 0x87, 0x31, 0xab, 0xba, 0xbd, 0x88, 0x08, 0x4a, 0x67, 0x31, 0xa2, 0xfa, 0x5f, 0xfe, 0x08, 0x42, 0x67, 0x31, 0xbe, 0xfe, 0x7e, 0x0b, 0xe8, 0x41, 0x47, 0x29, 0xa8, 0x80, 0xf5, 0xa0, - 0x29, 0x52, 0x87, 0x31, 0xbf, 0xb7, 0x15, 0xf5, 0x29, 0x52, 0xa7, 0x39, 0x7f, 0x5a, 0x5c, 0xde, 0xe8, 0x41, 0x67, 0x31, 0xe2, 0x7a, 0xff, 0xa8, 0xe8, 0x41, 0x26, 0x29, 0xaa, 0xe2, 0x6f, 0x2a, - 0x08, 0x4a, 0x67, 0x39, 0xbf, 0x7d, 0xd5, 0x2a, 0x08, 0x42, 0x67, 0x31, 0xff, 0x75, 0xd7, 0x2c, 0xe8, 0x41, 0x66, 0x29, 0xbf, 0xe9, 0xab, 0xa8, 0xc8, 0x41, 0x66, 0x29, 0xaa, 0xf7, 0xdc, 0x00, - 0xe8, 0x39, 0x87, 0x31, 0xff, 0xa2, 0xd7, 0xef, 0xe7, 0x39, 0x68, 0x31, 0x81, 0xaa, 0xea, 0xeb, 0xe8, 0x41, 0x87, 0x31, 0xea, 0x0b, 0xbf, 0x5d, 0xe8, 0x41, 0x87, 0x31, 0xf5, 0x2a, 0xf7, 0x57, - 0x8a, 0x5a, 0xc9, 0x39, 0x9f, 0x0f, 0xab, 0x57, 0xcb, 0x62, 0xe9, 0x41, 0xfe, 0x8f, 0xef, 0x55, 0xcb, 0x5a, 0xc8, 0x41, 0x0a, 0xff, 0x8b, 0x59, 0x69, 0x4a, 0xe8, 0x41, 0xb2, 0x7f, 0x75, 0x5b, - 0x49, 0x4a, 0xc8, 0x39, 0xa0, 0xaa, 0xff, 0x35, 0x8a, 0x52, 0xe8, 0x39, 0x2a, 0xbf, 0xfd, 0xed, 0xaa, 0x5a, 0xc8, 0x39, 0xac, 0xea, 0x5d, 0xff, 0xaa, 0x5a, 0xc9, 0x39, 0x00, 0x02, 0x2b, 0xa5, - 0xce, 0x83, 0xa9, 0x5a, 0x7d, 0xfd, 0x2e, 0xff, 0x4e, 0x9c, 0x48, 0x52, 0xff, 0x7f, 0xf8, 0xff, 0x2b, 0x7b, 0x89, 0x5a, 0xfa, 0x3b, 0x29, 0x2d, 0x4c, 0x73, 0x48, 0x52, 0xd5, 0x8e, 0x8b, 0xac, - 0x0c, 0x6b, 0xa7, 0x39, 0xea, 0x5a, 0xfd, 0xca, 0x8a, 0x52, 0xc9, 0x39, 0x28, 0xff, 0x75, 0x22, 0xeb, 0x62, 0xe9, 0x41, 0xa2, 0xbf, 0xf5, 0xaa, 0xcb, 0x5a, 0x29, 0x42, 0x1e, 0xfc, 0xdd, 0x78, - 0xcb, 0x62, 0x09, 0x4a, 0xa8, 0xaa, 0xae, 0x17, 0x0c, 0x6b, 0x8a, 0x52, 0xab, 0xc1, 0xad, 0xad, 0x2c, 0x6b, 0x8a, 0x5a, 0x0b, 0xfa, 0xbd, 0xdf, 0xee, 0x8b, 0x69, 0x52, 0xfe, 0x7d, 0x8f, 0xef, - 0x6c, 0x7b, 0x8a, 0x5a, 0xbe, 0xfc, 0xb8, 0x57, 0xee, 0x8b, 0x49, 0x52, 0xfe, 0xff, 0x5e, 0xfc, 0x0b, 0x6b, 0xe8, 0x41, 0x00, 0x80, 0xa5, 0xf8, 0x0c, 0x6b, 0x8a, 0x52, 0x7e, 0xea, 0x86, 0xf5, - 0x0b, 0x6b, 0x6a, 0x52, 0x62, 0xf7, 0xde, 0x0e, 0x0b, 0x63, 0x29, 0x4a, 0xb6, 0xee, 0xeb, 0xa8, 0xaa, 0x5a, 0x08, 0x42, 0x00, 0x7f, 0xdf, 0xa0, 0xea, 0x5a, 0x29, 0x4a, 0x3a, 0xbd, 0x75, 0xfb, - 0xc8, 0x72, 0xe7, 0x51, 0xec, 0xbe, 0xf5, 0xff, 0x46, 0x6a, 0xc4, 0x61, 0xdf, 0xbe, 0x7f, 0xd4, 0xe5, 0x69, 0xa4, 0x59, 0xa0, 0xfe, 0xfe, 0x6a, 0xa5, 0x61, 0x43, 0x51, 0x5c, 0xd6, 0xba, 0xfe, - 0x84, 0x59, 0x23, 0x49, 0xee, 0xdf, 0x7c, 0xfa, 0x63, 0x49, 0xe4, 0x40, 0xb7, 0xfb, 0xab, 0x2a, 0x64, 0x51, 0x03, 0x49, 0xdd, 0xdd, 0x9f, 0x20, 0xa4, 0x59, 0x03, 0x49, 0xff, 0x75, 0xef, 0xe8, - 0x64, 0x51, 0x23, 0x41, 0xdd, 0xd5, 0x7e, 0xf2, 0xa5, 0x59, 0x03, 0x41, 0x55, 0xd5, 0xf5, 0x2f, 0x0c, 0xa4, 0xe3, 0x40, 0xb5, 0xbd, 0x2d, 0x2f, 0x50, 0xd5, 0x85, 0x49, 0xc0, 0xea, 0x72, 0x52, - 0x29, 0x52, 0xc8, 0x39, 0x90, 0xb6, 0xae, 0xff, 0x69, 0x4a, 0xc8, 0x41, 0x7e, 0xae, 0xa8, 0xef, 0x49, 0x52, 0x87, 0x31, 0x6f, 0xeb, 0x28, 0x9a, 0x49, 0x4a, 0xa8, 0x39, 0xa9, 0xbd, 0x8a, 0x37, - 0x6a, 0x5a, 0xc8, 0x39, 0xf5, 0xaf, 0x8a, 0xbf, 0x8a, 0x5a, 0x08, 0x42, 0xf5, 0xf9, 0x2b, 0xaa, 0x8a, 0x52, 0xa7, 0x39, 0x7e, 0xa8, 0x80, 0x98, 0x69, 0x52, 0xc7, 0x39, 0x2b, 0xbb, 0x78, 0xd8, - 0x69, 0x52, 0xe8, 0x41, 0x0b, 0xdf, 0xa9, 0xe0, 0x09, 0x4a, 0xc7, 0x39, 0x76, 0xff, 0xfa, 0xe8, 0x29, 0x4a, 0xa7, 0x31, 0xff, 0x79, 0xff, 0xc2, 0x29, 0x4a, 0x87, 0x31, 0xaf, 0xfd, 0x27, 0x27, - 0x29, 0x4a, 0xc8, 0x41, 0x2d, 0xab, 0x7f, 0xfb, 0x28, 0x42, 0xa7, 0x39, 0x8a, 0x88, 0xe9, 0xaa, 0x8a, 0x5a, 0x87, 0x31, 0xfa, 0x82, 0xaf, 0xdf, 0x49, 0x52, 0x87, 0x39, 0x22, 0x8b, 0xe2, 0xed, - 0x49, 0x4a, 0xa7, 0x39, 0x80, 0x2a, 0xeb, 0xed, 0x29, 0x4a, 0xc7, 0x39, 0x68, 0x8a, 0xcb, 0x0b, 0x89, 0x52, 0xa7, 0x39, 0xed, 0xfb, 0x22, 0x2a, 0xcb, 0x62, 0x08, 0x4a, 0xd5, 0xbd, 0x95, 0xb0, - 0xaa, 0x62, 0x08, 0x4a, 0x7b, 0xaa, 0xb2, 0xc2, 0x0b, 0x73, 0x28, 0x52, 0x8d, 0xbd, 0x73, 0xfd, 0xeb, 0x6a, 0xe8, 0x49, 0xff, 0xf0, 0xed, 0xfa, 0xaa, 0x62, 0xe7, 0x49, 0xc7, 0xaa, 0xf7, 0xa0, - 0x6a, 0x52, 0xe8, 0x49, 0xea, 0x20, 0xfd, 0x2a, 0xeb, 0x5a, 0xa7, 0x41, 0xfd, 0xfa, 0x75, 0x8a, 0x49, 0x52, 0xa8, 0x41, 0x8b, 0xba, 0xa9, 0x00, 0x09, 0x4a, 0xc8, 0x41, 0x07, 0xf7, 0x26, 0xe0, - 0x69, 0x4a, 0xc8, 0x41, 0x5d, 0x5d, 0xe3, 0x5f, 0x09, 0x52, 0xa7, 0x39, 0xaf, 0xe2, 0xda, 0x55, 0x28, 0x4a, 0x67, 0x39, 0xff, 0x5e, 0xaa, 0x0f, 0x08, 0x4a, 0xc7, 0x39, 0xff, 0xed, 0x8a, 0xdf, - 0x06, 0x5a, 0xc8, 0x39, 0xde, 0xff, 0xf6, 0x27, 0x04, 0x72, 0xc6, 0x51, 0xa9, 0x0b, 0xab, 0x02, 0xe4, 0x69, 0x63, 0x61, 0xaa, 0xf8, 0xdc, 0x70, 0x05, 0x72, 0x63, 0x61, 0x8b, 0xfa, 0xdf, 0xbf, - 0xe3, 0x69, 0x84, 0x61, 0x20, 0xbf, 0xda, 0xbe, 0xe4, 0x69, 0x83, 0x61, 0xa2, 0xfb, 0xd7, 0x5a, 0xc4, 0x69, 0x63, 0x61, 0xb8, 0xf9, 0xbb, 0xa8, 0xe4, 0x69, 0x63, 0x59, 0x5f, 0xbf, 0x2a, 0xab, - 0xe4, 0x69, 0x83, 0x59, 0xbd, 0xaf, 0x8a, 0x0a, 0x05, 0x6a, 0x84, 0x61, 0xff, 0xde, 0xbf, 0x2e, 0x24, 0x6a, 0xa3, 0x61, 0x77, 0xfb, 0xeb, 0x8a, 0x04, 0x6a, 0xa3, 0x61, 0xf9, 0xdf, 0x88, 0x80, - 0x05, 0x72, 0xa4, 0x61, 0xfe, 0xe3, 0xae, 0xf7, 0x26, 0x72, 0xc4, 0x61, 0xfd, 0xab, 0xbd, 0xf5, 0x05, 0x6a, 0xc4, 0x61, 0x38, 0xfb, 0xb9, 0xf8, 0x05, 0x72, 0xc4, 0x61, 0xe8, 0xff, 0xdf, 0x5f, - 0x88, 0x6a, 0xc4, 0x61, 0xd7, 0xdd, 0xbd, 0x0f, 0x49, 0x83, 0xe5, 0x69, 0x55, 0xad, 0x3b, 0xaa, 0x2b, 0xa4, 0xc5, 0x61, 0x55, 0x2b, 0xa8, 0xab, 0xaa, 0xa3, 0x05, 0x6a, 0xfb, 0x58, 0xd6, 0xd7, - 0xaa, 0x93, 0x46, 0x72, 0x57, 0x5f, 0xf7, 0x2f, 0x0b, 0xa4, 0x05, 0x6a, 0x37, 0xaf, 0x02, 0x00, 0x6c, 0xac, 0xcb, 0xa3, 0xb1, 0xbd, 0xfe, 0x3e, 0xee, 0xc4, 0x4c, 0xb4, 0xb5, 0x8b, 0xab, 0x2b, - 0x50, 0xd5, 0x08, 0x5a, 0x70, 0x52, 0x50, 0x58, 0x29, 0x52, 0xc8, 0x41, 0x77, 0xe8, 0xa0, 0x20, 0x49, 0x52, 0xa7, 0x41, 0x75, 0xaf, 0x2a, 0xf8, 0x09, 0x52, 0xe8, 0x41, 0x2d, 0x57, 0xee, 0xad, - 0x29, 0x4a, 0xe7, 0x41, 0x36, 0x7b, 0x7b, 0x78, 0x09, 0x52, 0xa7, 0x39, 0xa0, 0xd7, 0x09, 0x02, 0x49, 0x5a, 0xc7, 0x41, 0xfd, 0x8b, 0x77, 0xf7, 0xca, 0x62, 0xc7, 0x39, 0xba, 0xac, 0x7f, 0xf5, - 0x6a, 0x52, 0xa7, 0x39, 0xea, 0xc8, 0xdd, 0xda, 0x29, 0x4a, 0xa8, 0x39, 0x20, 0x0f, 0x7f, 0xa2, 0x89, 0x5a, 0xc7, 0x39, 0x22, 0xfe, 0x55, 0xfd, 0x89, 0x5a, 0xc8, 0x41, 0xa8, 0xdb, 0x65, 0x5f, - 0x8a, 0x5a, 0xc8, 0x41, 0xf8, 0xb9, 0x7b, 0xd5, 0xca, 0x62, 0xe8, 0x41, 0x5d, 0xf5, 0x75, 0x4b, 0x49, 0x4a, 0xc8, 0x41, 0xe8, 0x76, 0xff, 0x57, 0x29, 0x4a, 0x87, 0x39, 0xe8, 0x97, 0xfe, 0xed, - 0x08, 0x4a, 0xa7, 0x39, 0xac, 0xde, 0xae, 0xaf, 0xe8, 0x41, 0xa7, 0x31, 0x02, 0x72, 0xfe, 0x80, 0xe8, 0x41, 0xa7, 0x39, 0x22, 0x1d, 0x8a, 0x7a, 0x08, 0x42, 0xa7, 0x39, 0x3a, 0x8e, 0x39, 0xa1, - 0x08, 0x4a, 0xa7, 0x39, 0xea, 0x6a, 0x2e, 0x28, 0x29, 0x4a, 0xa7, 0x39, 0xed, 0xf9, 0xbe, 0xca, 0x09, 0x4a, 0xa7, 0x39, 0x0a, 0x17, 0xfb, 0x7a, 0x08, 0x42, 0xa7, 0x39, 0xa2, 0xaa, 0x17, 0xbb, - 0x08, 0x4a, 0xa8, 0x39, 0xab, 0x6b, 0xe8, 0xde, 0xc8, 0x41, 0xa7, 0x31, 0x27, 0x9b, 0x2a, 0x00, 0x08, 0x4a, 0xa7, 0x39, 0x1d, 0xff, 0xfe, 0xba, 0xe8, 0x49, 0xa7, 0x39, 0x8b, 0x77, 0x0a, 0x28, - 0x08, 0x4a, 0x87, 0x41, 0xee, 0x57, 0x2e, 0xa8, 0x08, 0x4a, 0x87, 0x39, 0xef, 0xa9, 0x2a, 0x2a, 0x29, 0x4a, 0x87, 0x39, 0xab, 0x0b, 0xea, 0x7a, 0x09, 0x4a, 0xa7, 0x41, 0x0a, 0xae, 0x75, 0x63, - 0x53, 0x7c, 0xa7, 0x41, 0xd5, 0xff, 0xbf, 0xa8, 0x33, 0x7c, 0x69, 0x5a, 0xf5, 0xef, 0x57, 0x02, 0x73, 0x7c, 0x69, 0x5a, 0xf5, 0xff, 0x7f, 0x80, 0x6e, 0x73, 0x49, 0x4a, 0x7f, 0xaa, 0xa2, 0x3a, - 0x90, 0x73, 0x49, 0x4a, 0x5f, 0xae, 0xae, 0x28, 0xf2, 0x73, 0x69, 0x52, 0xfd, 0xbf, 0xfd, 0x80, 0x33, 0x7c, 0xaa, 0x5a, 0x55, 0xf5, 0x5f, 0x80, 0xf2, 0x7b, 0xe7, 0x41, 0x57, 0xae, 0xeb, 0x00, - 0x33, 0x7c, 0x89, 0x5a, 0x7d, 0xff, 0xff, 0x20, 0x12, 0x74, 0xaa, 0x5a, 0xdd, 0xff, 0xff, 0x00, 0x13, 0x74, 0x89, 0x5a, 0xde, 0xdf, 0xf5, 0x00, 0x32, 0x74, 0xca, 0x62, 0x59, 0xff, 0xf5, 0x00, - 0xf1, 0x73, 0x69, 0x52, 0x77, 0xfe, 0xfb, 0x00, 0x4e, 0x73, 0x4a, 0x4a, 0xf5, 0x0a, 0xa7, 0xa8, 0x6f, 0x73, 0x49, 0x52, 0x7d, 0x8a, 0xba, 0xaa, 0x8d, 0x7b, 0x4a, 0x4a, 0xd5, 0xaa, 0x80, 0xaa, - 0x4d, 0x73, 0xab, 0x5a, 0xf7, 0x8a, 0xaa, 0xb6, 0x6f, 0x73, 0x69, 0x52, 0x0f, 0xff, 0x7a, 0x00, 0x90, 0x73, 0xaa, 0x62, 0xff, 0xfd, 0xff, 0x03, 0x8f, 0x73, 0xcb, 0x6a, 0x5f, 0x97, 0xff, 0xe8, - 0xae, 0x8b, 0x8a, 0x5a, 0x7d, 0xea, 0x3a, 0x7a, 0x0f, 0x94, 0xaa, 0x6a, 0x7f, 0xfc, 0xb9, 0xad, 0x4c, 0x7b, 0xaa, 0x5a, 0x9d, 0xaa, 0x2a, 0xe0, 0x6c, 0x73, 0xcb, 0x62, 0x64, 0xb3, 0xb2, 0xfd, - 0x4c, 0x7b, 0x49, 0x4a, 0x95, 0xae, 0x60, 0x80, 0x4c, 0x7b, 0xab, 0x62, 0x7f, 0x8a, 0xaa, 0x81, 0x50, 0x8c, 0x29, 0x52, 0xd5, 0xff, 0x37, 0xff, 0x0c, 0x6b, 0xc8, 0x41, 0xaf, 0x7a, 0xa8, 0x2a, - 0xeb, 0x6a, 0x09, 0x4a, 0xea, 0xa9, 0x57, 0x80, 0x4d, 0x7b, 0xc5, 0x59, 0x5f, 0x5e, 0xfd, 0xf8, 0x46, 0x6a, 0xa4, 0x59, 0xdb, 0x7f, 0xe2, 0xfa, 0xe5, 0x61, 0x84, 0x59, 0x5a, 0x77, 0xf0, 0x80, - 0xa5, 0x61, 0x23, 0x49, 0xdf, 0xfa, 0xfe, 0xa8, 0xe5, 0x59, 0x23, 0x49, 0xd5, 0xdf, 0xbf, 0x2f, 0xe5, 0x61, 0x43, 0x51, 0xd5, 0xf5, 0x28, 0xa0, 0xe5, 0x61, 0x84, 0x51, 0x7a, 0x80, 0x2a, 0x88, - 0x05, 0x6a, 0x63, 0x51, 0x55, 0xe8, 0xea, 0xaa, 0x26, 0x72, 0x64, 0x51, 0x2d, 0x0b, 0x0b, 0x0a, 0x4c, 0xbc, 0x46, 0x72, 0x35, 0xb5, 0x2d, 0xad, 0xae, 0xc4, 0xe7, 0x49, 0x50, 0x5c, 0x5c, 0xd4, - 0xaa, 0x5a, 0xe8, 0x41, 0x55, 0x55, 0x5d, 0x30, 0xaa, 0x52, 0x68, 0x31, 0xff, 0xdf, 0xfe, 0xe8, 0x8a, 0x5a, 0xe8, 0x41, 0x55, 0x55, 0xfd, 0x29, 0x6a, 0x52, 0xe8, 0x41, 0xf7, 0xe5, 0x5e, 0x7c, - 0x49, 0x4a, 0xe8, 0x41, 0xd8, 0x0b, 0xa5, 0x9b, 0xaa, 0x5a, 0xc8, 0x39, 0x2b, 0xbe, 0xba, 0xf5, 0xaa, 0x5a, 0x29, 0x4a, 0x6a, 0xf2, 0xff, 0x99, 0x6a, 0x52, 0xe8, 0x49, 0x12, 0xef, 0x9a, 0xc9, - 0x49, 0x52, 0xe8, 0x41, 0xfc, 0xac, 0xac, 0xd7, 0x69, 0x52, 0xe8, 0x41, 0xed, 0xf5, 0x2a, 0xff, 0x49, 0x52, 0x88, 0x39, 0x2a, 0x3f, 0x5a, 0xba, 0x49, 0x52, 0xa8, 0x39, 0x20, 0xaa, 0xdf, 0xae, - 0x69, 0x52, 0xc8, 0x41, 0xe0, 0xa3, 0xa5, 0xa2, 0x6a, 0x52, 0xe8, 0x49, 0x7d, 0xea, 0x52, 0x2a, 0x49, 0x52, 0xe8, 0x41, 0xd7, 0x80, 0xef, 0xb8, 0x29, 0x52, 0x87, 0x31, 0x0a, 0xa6, 0xa8, 0x08, - 0x49, 0x52, 0x08, 0x4a, 0x57, 0xcb, 0xae, 0xec, 0x29, 0x4a, 0xa8, 0x41, 0xae, 0xa8, 0x6b, 0xbb, 0x29, 0x4a, 0xc8, 0x39, 0x25, 0xfe, 0xa2, 0xa3, 0x49, 0x52, 0xe8, 0x41, 0xa8, 0xf9, 0xf7, 0xbd, - 0xea, 0x62, 0xe8, 0x49, 0x3f, 0x77, 0x57, 0xff, 0x4b, 0x7b, 0xc8, 0x49, 0xbe, 0xd5, 0xb5, 0x8f, 0x69, 0x5a, 0xe7, 0x39, 0x20, 0x27, 0xdc, 0x5c, 0x2b, 0x73, 0xe7, 0x41, 0x89, 0x7f, 0xfd, 0xdd, - 0xcb, 0x6a, 0xe8, 0x49, 0xba, 0x8d, 0x73, 0xff, 0x89, 0x5a, 0xe8, 0x41, 0xe2, 0xf7, 0xf9, 0xf0, 0x49, 0x4a, 0xe8, 0x41, 0xdb, 0xbf, 0xfa, 0x2e, 0x49, 0x52, 0xe8, 0x41, 0x5d, 0xfd, 0xfe, 0x0a, - 0x49, 0x52, 0xa7, 0x39, 0xf7, 0xef, 0x7f, 0xe2, 0x09, 0x42, 0x87, 0x39, 0x5f, 0xf0, 0xfa, 0x00, 0x29, 0x4a, 0x68, 0x39, 0xb5, 0xff, 0xaf, 0xa0, 0x07, 0x52, 0xc9, 0x39, 0xfe, 0x6b, 0xfd, 0x2a, - 0x04, 0x72, 0xc7, 0x41, 0x35, 0x2f, 0x2b, 0x0a, 0x45, 0x72, 0xa4, 0x61, 0xe8, 0x5e, 0xf8, 0xe8, 0xa4, 0x69, 0x63, 0x51, 0x88, 0xaa, 0x3e, 0x56, 0xa3, 0x69, 0xe4, 0x61, 0x00, 0xa2, 0xac, 0xbe, - 0xc4, 0x71, 0xa3, 0x61, 0xff, 0x9a, 0xf2, 0xe7, 0xe5, 0x69, 0xa3, 0x61, 0xfd, 0xff, 0x2e, 0xc0, 0x04, 0x6a, 0x83, 0x61, 0xff, 0xf0, 0xa8, 0x6a, 0xc4, 0x69, 0x83, 0x59, 0x62, 0x7a, 0xff, 0xa9, - 0x05, 0x6a, 0x63, 0x59, 0x8b, 0xa5, 0x2d, 0xdf, 0x04, 0x6a, 0xc5, 0x61, 0x8a, 0xb9, 0xaa, 0xa3, 0x05, 0x6a, 0xc4, 0x61, 0xfb, 0xe2, 0xfa, 0xed, 0x05, 0x6a, 0xc4, 0x59, 0xbb, 0xee, 0xef, 0x7a, - 0x06, 0x6a, 0xc4, 0x59, 0x6f, 0xca, 0xab, 0xab, 0x26, 0x6a, 0xc5, 0x59, 0x0f, 0x2b, 0xae, 0xaf, 0x46, 0x6a, 0xe5, 0x61, 0x5a, 0x7e, 0xfc, 0xb0, 0x06, 0x62, 0xc4, 0x59, 0xa1, 0xb9, 0x68, 0xd7, - 0xe8, 0x82, 0xe4, 0x61, 0xad, 0xad, 0xad, 0x2d, 0x08, 0x83, 0x46, 0x72, 0x27, 0x7e, 0x56, 0xac, 0xc8, 0x7a, 0x46, 0x6a, 0x82, 0x59, 0xdf, 0x5c, 0xc8, 0x7a, 0x25, 0x6a, 0xd5, 0x95, 0xaf, 0x2a, - 0x4d, 0xac, 0x87, 0x72, 0x0d, 0x0f, 0x0d, 0x0b, 0x2c, 0xac, 0xcb, 0x9b, 0x37, 0xb7, 0xa0, 0xff, 0xce, 0xbc, 0xcb, 0xa3, 0xd7, 0x25, 0x29, 0xa5, 0x0f, 0xcd, 0xea, 0x82, 0x0a, 0x00, 0x00, 0x42, - 0xb2, 0xdd, 0xc7, 0x41, 0x5c, 0x54, 0x55, 0x55, 0x49, 0x52, 0xc8, 0x41, 0xab, 0xb7, 0xad, 0x35, 0x69, 0x5a, 0xe8, 0x41, 0x8b, 0xf6, 0xff, 0xfe, 0x6a, 0x5a, 0xe8, 0x41, 0x2b, 0xf7, 0xad, 0xdf, - 0x69, 0x5a, 0xc8, 0x39, 0xe8, 0xa0, 0xea, 0x5f, 0x8a, 0x5a, 0xc7, 0x41, 0xfd, 0xca, 0xfd, 0xf9, 0xaa, 0x5a, 0xc8, 0x41, 0xfe, 0xa3, 0xd7, 0xf7, 0x4a, 0x52, 0xc7, 0x39, 0xbf, 0x0a, 0x6b, 0x9f, - 0xaa, 0x62, 0xe8, 0x41, 0xff, 0xbb, 0x2b, 0xf5, 0xeb, 0x62, 0xa7, 0x39, 0xb2, 0xba, 0xfe, 0xd7, 0xaa, 0x62, 0xe7, 0x41, 0x7e, 0x22, 0xfb, 0xd5, 0xcb, 0x6a, 0xa7, 0x39, 0xde, 0xb8, 0xba, 0xff, - 0x8a, 0x5a, 0xc7, 0x41, 0x97, 0x80, 0xfa, 0x57, 0x09, 0x52, 0xa7, 0x39, 0xfa, 0x82, 0x50, 0xfb, 0x49, 0x4a, 0xa8, 0x41, 0x7e, 0x2e, 0x6a, 0xff, 0x29, 0x4a, 0x87, 0x39, 0x7f, 0xba, 0xab, 0x8b, - 0x28, 0x4a, 0x67, 0x39, 0xaa, 0xe2, 0xf6, 0xaa, 0x29, 0x52, 0xa7, 0x31, 0xef, 0x3a, 0x7f, 0x77, 0x29, 0x4a, 0xa7, 0x39, 0xad, 0x28, 0xbb, 0xaa, 0x09, 0x4a, 0xc8, 0x41, 0x57, 0xbc, 0x8f, 0x89, - 0x08, 0x4a, 0xa7, 0x39, 0xb9, 0x5a, 0xf6, 0x88, 0x09, 0x4a, 0xc7, 0x39, 0xfb, 0xba, 0xa7, 0xeb, 0x09, 0x52, 0xa7, 0x39, 0xef, 0x8e, 0xee, 0x7b, 0xe8, 0x41, 0xa7, 0x39, 0x87, 0x23, 0xbb, 0x1a, - 0x08, 0x42, 0x87, 0x39, 0x7f, 0xab, 0x0f, 0x2c, 0x08, 0x42, 0xa7, 0x39, 0x67, 0xa8, 0xa8, 0x2b, 0x28, 0x42, 0xa7, 0x39, 0xbd, 0x8b, 0xaa, 0xf7, 0x09, 0x42, 0xc7, 0x39, 0x6c, 0xb6, 0xff, 0xae, - 0x09, 0x4a, 0xa8, 0x39, 0x7f, 0xaa, 0xea, 0xaa, 0x08, 0x42, 0xa7, 0x41, 0xaa, 0xa6, 0x9e, 0xe8, 0x08, 0x4a, 0xa7, 0x41, 0xbb, 0xae, 0x18, 0xe8, 0x49, 0x5a, 0xc7, 0x41, 0x55, 0xff, 0x82, 0xae, - 0x94, 0x8c, 0x34, 0x74, 0x55, 0xff, 0xff, 0xa0, 0xb5, 0x94, 0x33, 0x74, 0x5d, 0xe5, 0xd7, 0x80, 0x75, 0x84, 0x13, 0x6c, 0xde, 0xff, 0xfa, 0x08, 0xb5, 0x84, 0x13, 0x74, 0x57, 0x5e, 0x7f, 0x82, - 0x94, 0x84, 0xf3, 0x73, 0xfd, 0x7f, 0xeb, 0x80, 0x74, 0x84, 0xf3, 0x73, 0x57, 0xfd, 0xff, 0x0a, 0x74, 0x84, 0xf3, 0x6b, 0xfd, 0xff, 0xaf, 0x28, 0x74, 0x84, 0xf3, 0x6b, 0xdf, 0xff, 0x88, 0xaa, - 0x74, 0x7c, 0xf3, 0x73, 0x55, 0xff, 0xa0, 0xaa, 0x74, 0x84, 0xf3, 0x73, 0x5d, 0xee, 0xba, 0xa8, 0x54, 0x7c, 0xf3, 0x73, 0x75, 0xa2, 0x00, 0x02, 0xf5, 0x9c, 0xf3, 0x6b, 0x55, 0x55, 0xff, 0x2b, - 0x15, 0xad, 0xf2, 0x6b, 0x55, 0x55, 0x5f, 0x8b, 0x74, 0x8c, 0xf2, 0x6b, 0x5d, 0x55, 0xd5, 0x82, 0xb4, 0x8c, 0xd2, 0x6b, 0x55, 0x55, 0xfd, 0x0b, 0xd5, 0x94, 0xb2, 0x6b, 0xdd, 0x55, 0xff, 0x88, - 0xd5, 0x94, 0xb2, 0x6b, 0x55, 0x57, 0x7f, 0x7c, 0xb2, 0x73, 0xf3, 0x6b, 0xbf, 0x0b, 0xae, 0xdf, 0xd3, 0x73, 0xb2, 0x6b, 0x5b, 0xf2, 0xa8, 0x3e, 0xf3, 0x73, 0xb1, 0x6b, 0x5d, 0x5f, 0xeb, 0xab, - 0xf2, 0x73, 0x91, 0x6b, 0xaa, 0xde, 0xae, 0x8e, 0xd2, 0x83, 0xb1, 0x6b, 0xbf, 0xbd, 0xb5, 0xbf, 0xf2, 0x73, 0x70, 0x6b, 0xf5, 0xba, 0xb8, 0xa8, 0xd2, 0x73, 0x0d, 0x63, 0x63, 0x0a, 0x02, 0x00, - 0x34, 0x7c, 0xcb, 0x62, 0xbd, 0xaa, 0xaa, 0x2a, 0x33, 0x7c, 0x2e, 0x6b, 0x5e, 0xaf, 0xee, 0xa8, 0xf2, 0x73, 0x2e, 0x6b, 0xfd, 0xaa, 0x88, 0x00, 0xb2, 0x73, 0x2d, 0x6b, 0x6f, 0x2a, 0x02, 0x80, - 0xb2, 0x73, 0x49, 0x52, 0xb7, 0x20, 0x00, 0x00, 0xb2, 0x73, 0xa9, 0x5a, 0xf7, 0xaa, 0x20, 0xa0, 0x91, 0x6b, 0xa6, 0x59, 0x57, 0x78, 0x00, 0x00, 0xb1, 0x73, 0xa4, 0x59, 0x55, 0x55, 0x58, 0x60, - 0xe5, 0x69, 0x84, 0x59, 0x5f, 0xa0, 0xab, 0xaa, 0xe4, 0x61, 0x43, 0x49, 0x0a, 0x82, 0xe2, 0x70, 0xe4, 0x69, 0x43, 0x51, 0x20, 0xaa, 0x2d, 0x25, 0xe5, 0x69, 0xc4, 0x61, 0x8a, 0xef, 0x8d, 0x4a, - 0x04, 0x6a, 0x83, 0x61, 0x8b, 0xef, 0x6a, 0xfd, 0x45, 0x72, 0x02, 0x51, 0x2a, 0x2a, 0xef, 0xd7, 0x2b, 0xac, 0x02, 0x49, 0x0a, 0x83, 0xbd, 0xf5, 0x6b, 0x83, 0xc7, 0x41, 0x74, 0xfa, 0xfb, 0xe7, - 0xab, 0x5a, 0xa7, 0x39, 0x3f, 0xdd, 0xf7, 0xfa, 0xea, 0x62, 0xc8, 0x31, 0x0a, 0xff, 0x5d, 0x55, 0x8a, 0x5a, 0xc8, 0x31, 0x00, 0xbf, 0x75, 0x57, 0xeb, 0x62, 0xc8, 0x39, 0xba, 0xe3, 0x7d, 0x55, - 0x8a, 0x52, 0xa8, 0x39, 0xa2, 0xba, 0xb5, 0xff, 0xca, 0x62, 0xe8, 0x39, 0xd7, 0x8a, 0x0b, 0x7d, 0xea, 0x62, 0xe9, 0x41, 0x5f, 0xfa, 0x2a, 0xbf, 0xaa, 0x5a, 0xa8, 0x41, 0xfb, 0x5f, 0xa0, 0x8b, - 0xaa, 0x5a, 0xe8, 0x41, 0x7e, 0xd5, 0x2e, 0xaa, 0x0a, 0x63, 0x28, 0x4a, 0x55, 0x57, 0xfd, 0x2a, 0x0b, 0x6b, 0xa7, 0x39, 0xff, 0xeb, 0x7f, 0xa0, 0x6a, 0x52, 0xc8, 0x41, 0x79, 0xba, 0xfd, 0xa0, - 0x49, 0x52, 0x08, 0x42, 0xf6, 0xf7, 0xe8, 0x78, 0x69, 0x52, 0xc8, 0x41, 0x7b, 0xd7, 0xab, 0x0e, 0x0c, 0x63, 0xc7, 0x41, 0x7f, 0xff, 0xf7, 0x2f, 0xcb, 0x6a, 0xe8, 0x49, 0xad, 0xdf, 0xfa, 0x2c, - 0xad, 0x83, 0x08, 0x4a, 0x7d, 0x7d, 0x7d, 0xc8, 0x0b, 0x6b, 0xa7, 0x39, 0xff, 0xdf, 0xfb, 0x00, 0x2b, 0x6b, 0xe7, 0x41, 0x57, 0x57, 0xff, 0x80, 0xaa, 0x5a, 0x09, 0x4a, 0xff, 0xf5, 0x27, 0x30, - 0xeb, 0x62, 0x28, 0x52, 0x5d, 0x7d, 0xaa, 0x88, 0x0b, 0x6b, 0x49, 0x5a, 0x69, 0x7d, 0xcf, 0xba, 0xeb, 0x62, 0x08, 0x4a, 0x5e, 0x79, 0x28, 0x28, 0xcb, 0x62, 0x29, 0x4a, 0xf9, 0xbd, 0x20, 0xa8, - 0xea, 0x6a, 0x08, 0x4a, 0xb7, 0x7f, 0xea, 0xe2, 0x2c, 0x73, 0x08, 0x42, 0x9c, 0xff, 0xff, 0xf5, 0x49, 0x52, 0xc8, 0x41, 0x20, 0x00, 0xe8, 0x7e, 0xcb, 0x62, 0xc7, 0x39, 0xab, 0x2b, 0xbb, 0xd5, - 0xeb, 0x62, 0xe8, 0x41, 0xfb, 0x2e, 0x57, 0xbd, 0x8a, 0x5a, 0xe8, 0x41, 0x57, 0xff, 0x7c, 0xf4, 0x29, 0x4a, 0x87, 0x41, 0xba, 0x22, 0x70, 0xa0, 0xa4, 0x69, 0xe8, 0x41, 0xb5, 0xad, 0x0b, 0x0b, - 0x45, 0x72, 0x83, 0x61, 0x8f, 0xab, 0x57, 0xab, 0x24, 0x72, 0xa3, 0x61, 0xa8, 0x70, 0x6b, 0xeb, 0xc4, 0x61, 0x63, 0x51, 0xfc, 0x5c, 0x78, 0x9a, 0x04, 0x6a, 0x63, 0x59, 0xab, 0xad, 0x2b, 0xef, - 0x05, 0x6a, 0xc4, 0x61, 0xab, 0x83, 0x7b, 0x6f, 0x05, 0x6a, 0xa4, 0x61, 0xaa, 0x8e, 0xb7, 0xff, 0x05, 0x6a, 0x63, 0x59, 0xfa, 0xa0, 0xf8, 0xd7, 0xe4, 0x61, 0x63, 0x59, 0xea, 0x8f, 0xb5, 0xeb, - 0xc5, 0x61, 0x63, 0x51, 0xff, 0xfa, 0x27, 0xf7, 0x05, 0x62, 0xa4, 0x59, 0x0b, 0xdd, 0xbb, 0x29, 0x05, 0x6a, 0xc4, 0x61, 0xdc, 0x89, 0xcf, 0x7f, 0x04, 0x62, 0xa5, 0x59, 0xef, 0xaa, 0x22, 0x28, - 0x05, 0x6a, 0xc4, 0x61, 0xa9, 0x9a, 0xba, 0xff, 0x25, 0x6a, 0xc4, 0x61, 0xbe, 0x2a, 0x2a, 0xed, 0x26, 0x6a, 0xc5, 0x61, 0xc8, 0x60, 0x78, 0xd6, 0x05, 0x62, 0xa4, 0x59, 0xde, 0xbe, 0x02, 0x8a, - 0xc7, 0x7a, 0x05, 0x62, 0x6d, 0x0b, 0xab, 0x2b, 0x29, 0x8b, 0xe5, 0x61, 0xad, 0x0a, 0x0f, 0x0a, 0xea, 0x9b, 0x26, 0x62, 0xf7, 0xf5, 0x0a, 0xaa, 0xeb, 0x9b, 0xa7, 0x72, 0x3d, 0xa1, 0x60, 0xbe, - 0x2c, 0xa4, 0x28, 0x83, 0xdf, 0xe3, 0xa9, 0xbf, 0x6d, 0xb4, 0xaa, 0x93, 0xf5, 0xad, 0xad, 0x8b, 0x0f, 0xcd, 0x69, 0x93, 0x2f, 0xab, 0x42, 0x0a, 0x30, 0xd5, 0xa6, 0x49, 0x42, 0x72, 0x50, 0x5c, - 0x29, 0x4a, 0xa7, 0x41, 0x2b, 0x8a, 0xed, 0xff, 0x29, 0x4a, 0xa6, 0x39, 0xe8, 0xa0, 0xc9, 0x2f, 0x29, 0x4a, 0xa7, 0x41, 0xe2, 0xea, 0xab, 0xb7, 0x29, 0x52, 0xe8, 0x41, 0xda, 0x7f, 0xfb, 0xcb, - 0x49, 0x4a, 0xe8, 0x41, 0xbd, 0x52, 0xaf, 0xe2, 0x69, 0x4a, 0xc8, 0x41, 0xfe, 0x2b, 0xbf, 0xf7, 0x69, 0x52, 0xc8, 0x41, 0xee, 0x2a, 0xff, 0xdf, 0x49, 0x4a, 0xe8, 0x41, 0xbf, 0xbe, 0x2b, 0xdf, - 0x09, 0x4a, 0xe8, 0x39, 0x00, 0xf8, 0xaf, 0x02, 0x29, 0x4a, 0xc7, 0x41, 0xb5, 0xe0, 0xb3, 0x9b, 0x49, 0x4a, 0xc8, 0x41, 0xa7, 0x3f, 0xed, 0x7e, 0x29, 0x4a, 0xa7, 0x39, 0xea, 0xe0, 0x6e, 0xeb, - 0x29, 0x4a, 0xa7, 0x39, 0x0b, 0x77, 0xaf, 0x9d, 0x29, 0x4a, 0x88, 0x39, 0xaa, 0xa9, 0x2b, 0xac, 0x29, 0x52, 0xc8, 0x41, 0xae, 0xfe, 0x68, 0xbe, 0x09, 0x4a, 0xa7, 0x39, 0x28, 0xee, 0xbb, 0xaf, - 0x09, 0x42, 0xc7, 0x39, 0x68, 0x1f, 0xa8, 0xcf, 0x28, 0x42, 0xa7, 0x39, 0x7a, 0xfe, 0xa0, 0x35, 0x28, 0x4a, 0xa7, 0x39, 0xff, 0xfb, 0x87, 0xee, 0x08, 0x4a, 0xa7, 0x39, 0xde, 0x9b, 0xa2, 0xee, - 0x08, 0x42, 0xc7, 0x39, 0x0c, 0x7e, 0x6b, 0xbd, 0x08, 0x4a, 0xc7, 0x39, 0x2f, 0x6a, 0x65, 0x2a, 0x08, 0x4a, 0xa7, 0x39, 0xeb, 0xfb, 0xeb, 0xaa, 0xe8, 0x41, 0xa7, 0x39, 0x2a, 0x9d, 0xb7, 0x78, - 0xe8, 0x49, 0x87, 0x31, 0x02, 0x96, 0xff, 0xaa, 0xe8, 0x41, 0xa7, 0x39, 0xbb, 0xcf, 0xda, 0x58, 0x08, 0x4a, 0xa7, 0x31, 0xaa, 0xfb, 0xca, 0xf7, 0xe8, 0x41, 0xa7, 0x39, 0x8a, 0xfa, 0x02, 0xa0, - 0x08, 0x4a, 0xc7, 0x39, 0xbf, 0xf5, 0xda, 0xfa, 0x08, 0x42, 0x87, 0x39, 0x00, 0xbd, 0xad, 0x8a, 0xe9, 0x41, 0xc7, 0x39, 0x0c, 0xc0, 0x2a, 0x62, 0x69, 0x5a, 0xe8, 0x39, 0xb9, 0x2d, 0xbd, 0xff, - 0xd7, 0xb5, 0x54, 0x84, 0x55, 0xff, 0x0a, 0xa8, 0x58, 0xc6, 0x74, 0x8c, 0x57, 0xfd, 0xe0, 0xeb, 0x5a, 0xc6, 0x74, 0x84, 0x55, 0xff, 0xaf, 0x3e, 0x79, 0xce, 0x94, 0x84, 0x55, 0xf7, 0xfe, 0x08, - 0xba, 0xce, 0x94, 0x84, 0x55, 0x57, 0xfd, 0x00, 0xba, 0xce, 0x54, 0x84, 0x55, 0xff, 0xff, 0x88, 0xba, 0xce, 0x74, 0x84, 0x55, 0xff, 0xff, 0x00, 0x38, 0xc6, 0x54, 0x7c, 0x55, 0xff, 0xff, 0xa8, - 0x36, 0xa5, 0x53, 0x7c, 0x55, 0xff, 0xaa, 0x08, 0xb7, 0xad, 0x54, 0x7c, 0x55, 0xff, 0x2b, 0x08, 0x39, 0xbe, 0x54, 0x84, 0xd5, 0x55, 0xbe, 0x8a, 0xd8, 0xb5, 0x54, 0x84, 0x55, 0x55, 0xaa, 0x08, - 0x18, 0xb6, 0x14, 0x84, 0x55, 0xff, 0xaa, 0xa0, 0x76, 0xa5, 0x14, 0x7c, 0x7d, 0xff, 0xaa, 0xa0, 0xf6, 0x94, 0x54, 0x7c, 0xdf, 0xeb, 0xa8, 0x2a, 0x37, 0x9d, 0x33, 0x84, 0xfe, 0xf9, 0xcb, 0xaa, - 0x36, 0x9d, 0x33, 0x84, 0x55, 0xea, 0x3f, 0x0a, 0x57, 0xa5, 0xd2, 0x6b, 0x57, 0xfe, 0xa8, 0x82, 0x97, 0xa5, 0xd3, 0x6b, 0x55, 0xff, 0xaa, 0x0a, 0x36, 0x9d, 0xd3, 0x6b, 0x55, 0xff, 0xa2, 0x00, - 0x16, 0x95, 0xb2, 0x6b, 0x5d, 0xae, 0x80, 0x00, 0x16, 0x95, 0xb2, 0x6b, 0x55, 0xff, 0x02, 0x00, 0x98, 0x9d, 0xb2, 0x6b, 0x55, 0xff, 0x2a, 0xaa, 0xf8, 0xad, 0xd2, 0x6b, 0x55, 0xff, 0xa0, 0xaa, - 0xd8, 0xad, 0xd2, 0x6b, 0x55, 0x7f, 0xaa, 0x00, 0xf8, 0xb5, 0xf2, 0x73, 0x55, 0xf5, 0x00, 0xaa, 0xb8, 0xad, 0x12, 0x7c, 0x55, 0x55, 0x00, 0xfe, 0xb8, 0xad, 0xb2, 0x6b, 0x57, 0xff, 0x0a, 0x00, - 0x19, 0xb6, 0x92, 0x6b, 0x55, 0xff, 0x08, 0xaa, 0xd7, 0xb5, 0x71, 0x6b, 0x57, 0x7f, 0x0a, 0xaa, 0x93, 0x84, 0xc4, 0x61, 0xaa, 0xe2, 0x54, 0x57, 0x8f, 0x6b, 0x84, 0x61, 0xc0, 0x5e, 0x55, 0x55, - 0xa4, 0x69, 0x63, 0x51, 0xde, 0xfa, 0xfe, 0x98, 0xa3, 0x61, 0xc2, 0x40, 0xd8, 0xe2, 0x2a, 0x2a, 0x04, 0x72, 0x03, 0x51, 0xb5, 0x2d, 0xaa, 0xac, 0x04, 0x6a, 0xa3, 0x61, 0x77, 0xaf, 0xb5, 0x05, - 0x04, 0x6a, 0x83, 0x61, 0xdd, 0x78, 0xe8, 0xea, 0xe4, 0x69, 0x63, 0x61, 0x5f, 0xae, 0x29, 0xaa, 0x05, 0x6a, 0x83, 0x61, 0xe5, 0xfa, 0x2a, 0xba, 0x8e, 0x8b, 0x83, 0x61, 0xb5, 0x3f, 0x55, 0x75, - 0x57, 0xa5, 0x09, 0x4a, 0x57, 0x60, 0x02, 0x0b, 0x57, 0x9d, 0x87, 0x31, 0x55, 0x57, 0x7e, 0x00, 0x4e, 0x63, 0xa8, 0x39, 0xd5, 0x55, 0x5d, 0xfc, 0x29, 0x42, 0xc8, 0x39, 0x55, 0x2b, 0x7b, 0xaa, - 0x29, 0x42, 0xa8, 0x39, 0x8e, 0xbf, 0xef, 0x72, 0x2a, 0x4a, 0xc7, 0x39, 0xfd, 0x8e, 0x97, 0xaf, 0x2a, 0x4a, 0xa7, 0x39, 0x3a, 0xe0, 0xd8, 0xf0, 0x49, 0x52, 0x88, 0x39, 0x02, 0xe5, 0xeb, 0xdf, - 0x49, 0x4a, 0xa8, 0x39, 0xa0, 0x2b, 0xab, 0xf6, 0x8a, 0x5a, 0x09, 0x4a, 0x22, 0x3f, 0x85, 0xd7, 0x8a, 0x5a, 0x08, 0x4a, 0x00, 0xb9, 0xf7, 0xff, 0xca, 0x5a, 0x29, 0x4a, 0x33, 0xa5, 0x7f, 0xe2, - 0x4d, 0x6b, 0x49, 0x52, 0x68, 0xff, 0xfd, 0xd5, 0x0c, 0x6b, 0x08, 0x42, 0xfa, 0x2e, 0xf2, 0xdf, 0xcb, 0x62, 0xe8, 0x39, 0xfe, 0xc8, 0xb7, 0xaf, 0x0b, 0x6b, 0xa7, 0x41, 0x0d, 0xaa, 0xa8, 0xfa, - 0xeb, 0x6a, 0xe8, 0x41, 0xa2, 0x8a, 0x7b, 0xef, 0xeb, 0x62, 0xc8, 0x41, 0x00, 0x82, 0xfd, 0xff, 0x2b, 0x6b, 0xe8, 0x41, 0xa8, 0xaa, 0xb5, 0x7e, 0xca, 0x62, 0x69, 0x52, 0xeb, 0xfe, 0xd6, 0x3f, - 0xca, 0x62, 0x29, 0x52, 0x00, 0xaa, 0x62, 0xf4, 0xcb, 0x62, 0x08, 0x42, 0xea, 0xab, 0x5b, 0x7c, 0x0b, 0x6b, 0x08, 0x42, 0x8b, 0xeb, 0xfd, 0x57, 0xeb, 0x62, 0x29, 0x4a, 0xa2, 0xff, 0xfd, 0x55, - 0xca, 0x62, 0xe7, 0x41, 0x00, 0x5f, 0xfb, 0xba, 0x2c, 0x6b, 0xe8, 0x41, 0xe2, 0xb5, 0xab, 0xfe, 0xcb, 0x62, 0xe8, 0x49, 0x4f, 0xab, 0xbb, 0xbe, 0xeb, 0x62, 0x28, 0x4a, 0x65, 0xae, 0x87, 0xbe, - 0x0b, 0x6b, 0x08, 0x4a, 0x35, 0x77, 0xfa, 0xba, 0xca, 0x5a, 0xa7, 0x41, 0xbe, 0xdf, 0x88, 0xa8, 0xca, 0x5a, 0xc7, 0x41, 0x7e, 0x55, 0xf2, 0x20, 0xa3, 0x69, 0x27, 0x5a, 0x8a, 0x09, 0x39, 0xad, - 0x04, 0x72, 0x82, 0x69, 0x2a, 0xef, 0xdf, 0x7a, 0xe5, 0x71, 0xa3, 0x61, 0x88, 0x4a, 0x7f, 0xff, 0xc5, 0x61, 0x44, 0x51, 0x9c, 0x28, 0xba, 0x3c, 0xe5, 0x61, 0x84, 0x59, 0xb5, 0x2a, 0x0b, 0x3d, - 0x05, 0x6a, 0xc4, 0x61, 0x32, 0xdd, 0xa6, 0x79, 0xe5, 0x69, 0xa4, 0x61, 0xee, 0xfa, 0xe2, 0x02, 0x05, 0x6a, 0x84, 0x59, 0xfa, 0xfa, 0x6a, 0x78, 0x05, 0x6a, 0x84, 0x61, 0xff, 0x8b, 0xa2, 0xf5, - 0xc4, 0x61, 0x63, 0x51, 0xbf, 0xb6, 0x0a, 0xaa, 0x05, 0x6a, 0xa4, 0x59, 0xa0, 0x8a, 0x2e, 0x27, 0x25, 0x6a, 0xc4, 0x61, 0xff, 0x57, 0x8b, 0xab, 0xc4, 0x69, 0x06, 0x62, 0xfc, 0xf6, 0x56, 0xdb, - 0x25, 0x6a, 0xc6, 0x61, 0xd7, 0xaf, 0xaa, 0xe2, 0x26, 0x6a, 0xe5, 0x61, 0xd7, 0x37, 0xf6, 0xcf, 0x25, 0x6a, 0xe5, 0x61, 0x99, 0x6e, 0x5d, 0x6f, 0x46, 0x6a, 0xe5, 0x61, 0xff, 0xed, 0xbf, 0x3f, - 0x87, 0x72, 0xe5, 0x61, 0x2a, 0x2f, 0xf7, 0xff, 0x48, 0x8b, 0x25, 0x72, 0xaf, 0x0f, 0xf5, 0x55, 0x89, 0x9b, 0x25, 0x72, 0x0a, 0x0a, 0x5f, 0x55, 0x89, 0x9b, 0x26, 0x72, 0x00, 0xaa, 0x55, 0xf5, - 0xeb, 0xa3, 0x65, 0x72, 0xea, 0x0a, 0x09, 0xd5, 0xce, 0xc4, 0xe3, 0x69, 0x02, 0xa2, 0xba, 0x7f, 0x8d, 0xbc, 0xe3, 0x69, 0x00, 0x08, 0xae, 0x8d, 0xab, 0x9b, 0xc7, 0x49, 0x7c, 0xfc, 0xd7, 0x57, - 0x69, 0x52, 0xc8, 0x41, 0xd7, 0x9f, 0x82, 0xff, 0x69, 0x52, 0xc7, 0x49, 0xf5, 0xea, 0x2e, 0x0f, 0x49, 0x52, 0xe8, 0x49, 0x5f, 0x2d, 0xde, 0xac, 0x0b, 0x6b, 0xc7, 0x41, 0x7d, 0x4f, 0xef, 0xef, - 0x8a, 0x5a, 0xa8, 0x41, 0x7f, 0xbf, 0x7b, 0xe2, 0x09, 0x4a, 0xe8, 0x41, 0x7f, 0x05, 0xcd, 0x0b, 0x09, 0x4a, 0xc8, 0x41, 0x31, 0x52, 0x82, 0xec, 0x29, 0x52, 0xe8, 0x41, 0xe9, 0xfa, 0x6a, 0xd0, - 0x29, 0x52, 0xc8, 0x41, 0x7f, 0xea, 0xf8, 0xfc, 0x29, 0x4a, 0xc8, 0x41, 0x6e, 0x7a, 0x2e, 0xac, 0x6a, 0x52, 0xa7, 0x39, 0xf7, 0x6b, 0xf8, 0xea, 0x29, 0x4a, 0xc7, 0x41, 0x79, 0x75, 0x2a, 0xaf, - 0x29, 0x4a, 0xa7, 0x39, 0x95, 0xbd, 0x80, 0xaa, 0x8a, 0x5a, 0xa7, 0x39, 0xd7, 0xff, 0xfe, 0x3e, 0x49, 0x52, 0xc8, 0x41, 0xd5, 0x5f, 0x7d, 0x80, 0xe9, 0x51, 0xc7, 0x39, 0xf7, 0xe2, 0xfb, 0xfb, - 0x69, 0x5a, 0xc8, 0x41, 0xf7, 0xf7, 0x5f, 0xbc, 0x09, 0x4a, 0xa7, 0x41, 0xa8, 0x78, 0x80, 0x23, 0x09, 0x4a, 0x87, 0x39, 0xdb, 0xae, 0xaa, 0x0a, 0x28, 0x4a, 0xa7, 0x41, 0xaf, 0xff, 0x53, 0x78, - 0x09, 0x4a, 0xa7, 0x39, 0x2e, 0x3a, 0xb7, 0xd7, 0x09, 0x4a, 0xa7, 0x41, 0xca, 0xe8, 0x07, 0xef, 0x09, 0x4a, 0xc7, 0x39, 0x1f, 0xde, 0xea, 0xff, 0x09, 0x4a, 0xc7, 0x39, 0x8b, 0xe9, 0x80, 0x1f, - 0x08, 0x4a, 0xa7, 0x41, 0xfb, 0xfe, 0xcf, 0x63, 0x29, 0x4a, 0xa8, 0x41, 0x99, 0x7d, 0x3a, 0xa6, 0x09, 0x52, 0xc7, 0x41, 0x57, 0x57, 0x6f, 0xfc, 0xe8, 0x49, 0x86, 0x31, 0xa6, 0xab, 0x8a, 0x08, - 0xe8, 0x49, 0xa7, 0x39, 0x2a, 0x6b, 0xfa, 0xa0, 0x08, 0x4a, 0xc7, 0x39, 0xed, 0xdf, 0xbf, 0xbe, 0x08, 0x42, 0x87, 0x39, 0xa2, 0x92, 0xa8, 0x00, 0x29, 0x52, 0xe7, 0x41, 0x0b, 0x3f, 0x5b, 0xfa, - 0x59, 0xce, 0xb5, 0x8c, 0xaa, 0xaa, 0x8a, 0x55, 0x99, 0xd6, 0xd5, 0x8c, 0x2a, 0xbf, 0xff, 0x55, 0x79, 0xce, 0xb5, 0x8c, 0xf8, 0x2a, 0x5f, 0x5d, 0x9a, 0xce, 0x95, 0x84, 0xaa, 0x00, 0x55, 0x55, - 0x78, 0xce, 0xd6, 0x8c, 0xea, 0xb8, 0x55, 0x55, 0x18, 0xbe, 0xd5, 0x8c, 0xfb, 0x80, 0x55, 0x55, 0xb7, 0xb5, 0xd5, 0x8c, 0x2e, 0x7e, 0xff, 0xd5, 0x59, 0xce, 0xd6, 0x8c, 0xf8, 0x0b, 0xd7, 0x55, - 0x39, 0xce, 0xd6, 0x8c, 0xfd, 0xf8, 0x5d, 0x55, 0xf7, 0xbd, 0xd6, 0x8c, 0xaf, 0x8f, 0xff, 0x55, 0x18, 0xc6, 0xb5, 0x8c, 0xea, 0x28, 0xff, 0xdd, 0x38, 0xc6, 0xd5, 0x8c, 0x7f, 0xf8, 0x55, 0xd6, - 0x35, 0xa5, 0xd6, 0x8c, 0x8a, 0xdf, 0x55, 0xe7, 0xf5, 0x9c, 0xd6, 0x84, 0x02, 0x5a, 0xd5, 0xd7, 0x19, 0xbe, 0x95, 0x84, 0xff, 0xd5, 0xf5, 0xfc, 0xd8, 0xb5, 0xd6, 0x8c, 0x0a, 0xf5, 0xfd, 0xfd, - 0x39, 0xbe, 0x16, 0x95, 0xff, 0xf5, 0xfd, 0xcd, 0xb7, 0xb5, 0xd5, 0x8c, 0xaa, 0x2a, 0x78, 0x5a, 0xfa, 0xd6, 0x94, 0x8c, 0xfe, 0x57, 0x80, 0x5d, 0x99, 0xc6, 0xb6, 0x84, 0x57, 0x55, 0x78, 0xff, - 0xd8, 0xad, 0xd6, 0x8c, 0x75, 0x57, 0x83, 0xfe, 0x98, 0x9d, 0xd6, 0x8c, 0xff, 0x75, 0xfe, 0xd3, 0x37, 0x95, 0xf6, 0x8c, 0x76, 0xb5, 0xbe, 0xab, 0x37, 0x95, 0xd6, 0x8c, 0x35, 0xaa, 0xab, 0xaa, - 0x97, 0xa5, 0xf6, 0x8c, 0x70, 0xf5, 0xff, 0xd7, 0x37, 0x95, 0x16, 0x8d, 0x22, 0x09, 0xd5, 0x2f, 0x18, 0xbe, 0x16, 0x95, 0x0b, 0xf9, 0xbd, 0x55, 0xf8, 0xbd, 0x16, 0x95, 0xea, 0xff, 0xfc, 0x5f, - 0x57, 0xa5, 0x16, 0x95, 0xa2, 0xec, 0x5f, 0xe7, 0x98, 0xd6, 0x15, 0x95, 0xfd, 0xd5, 0xd5, 0x29, 0x46, 0x62, 0xa4, 0x59, 0xea, 0x78, 0x7c, 0xfc, 0xc5, 0x61, 0xa4, 0x59, 0x2c, 0x83, 0x96, 0x08, - 0xc4, 0x69, 0xa4, 0x59, 0xea, 0xaf, 0xef, 0xfe, 0xa4, 0x61, 0x63, 0x59, 0xb7, 0x02, 0x00, 0xfa, 0xa4, 0x61, 0x63, 0x59, 0xa4, 0x02, 0x8a, 0x7f, 0x04, 0x6a, 0xa3, 0x59, 0x8d, 0xab, 0xf5, 0xfd, - 0x25, 0x6a, 0xc4, 0x61, 0xeb, 0xdb, 0xaa, 0x78, 0x05, 0x6a, 0xa4, 0x61, 0xd6, 0xe7, 0xff, 0xaa, 0x05, 0x6a, 0xa4, 0x61, 0x82, 0xbe, 0x6f, 0x06, 0x05, 0x6a, 0xc4, 0x61, 0x2f, 0xa7, 0xd9, 0x20, - 0x9a, 0xd6, 0xa4, 0x61, 0x39, 0x35, 0xf5, 0xd5, 0xba, 0xce, 0xd3, 0x9c, 0x60, 0x00, 0xa8, 0xa1, 0x9a, 0xc6, 0xeb, 0x39, 0x7e, 0x2a, 0x00, 0x00, 0xdb, 0xce, 0x09, 0x42, 0x55, 0x55, 0xc0, 0x00, - 0x51, 0x8c, 0xe8, 0x39, 0x55, 0x55, 0x55, 0xdc, 0x4a, 0x4a, 0xe8, 0x41, 0xff, 0x7e, 0x9a, 0x70, 0x29, 0x4a, 0xc8, 0x41, 0xfe, 0xfd, 0xee, 0xbb, 0x49, 0x52, 0xc8, 0x39, 0xff, 0x7b, 0xea, 0x22, - 0x4a, 0x52, 0xa7, 0x31, 0x7f, 0xe9, 0xaf, 0xa8, 0x29, 0x4a, 0xc8, 0x39, 0x0f, 0xf5, 0xb8, 0x80, 0x49, 0x52, 0xc8, 0x39, 0xab, 0xdf, 0x8d, 0x8b, 0x8b, 0x5a, 0x08, 0x42, 0x9d, 0xfb, 0xb5, 0xa3, - 0x8a, 0x5a, 0xc8, 0x41, 0x0e, 0x3e, 0xdf, 0x0b, 0xca, 0x5a, 0xe8, 0x41, 0xff, 0xf0, 0xdf, 0xe7, 0xaa, 0x5a, 0xe8, 0x41, 0x2f, 0xba, 0x7f, 0x75, 0x8a, 0x5a, 0xc8, 0x39, 0x2a, 0xbe, 0xff, 0xb7, - 0xaa, 0x62, 0x08, 0x4a, 0xaf, 0x87, 0x63, 0xb9, 0x69, 0x52, 0xe8, 0x41, 0xf8, 0xf5, 0xa2, 0x78, 0x6a, 0x52, 0xe8, 0x41, 0xfd, 0x25, 0x3f, 0xf5, 0xaa, 0x5a, 0xc8, 0x49, 0xef, 0x8a, 0x78, 0xd7, - 0xeb, 0x62, 0xe9, 0x49, 0x2a, 0xaa, 0xfd, 0x57, 0x0b, 0x6b, 0xe8, 0x41, 0x5e, 0xca, 0xff, 0x6f, 0x69, 0x52, 0xc8, 0x41, 0xaa, 0xfc, 0xfb, 0xd5, 0x8a, 0x52, 0xe8, 0x41, 0xf5, 0xaf, 0xf5, 0x3d, - 0xab, 0x5a, 0xe9, 0x41, 0xd7, 0xaa, 0xfd, 0xf3, 0xea, 0x62, 0x09, 0x4a, 0xdd, 0xef, 0x2b, 0xff, 0xea, 0x6a, 0x29, 0x52, 0xdd, 0xf7, 0xe8, 0xff, 0xeb, 0x6a, 0x29, 0x4a, 0x5d, 0x2f, 0x97, 0xfd, - 0x8a, 0x5a, 0xe8, 0x41, 0x28, 0x70, 0x5f, 0xd7, 0x8a, 0x5a, 0xc8, 0x39, 0xa0, 0xdf, 0xff, 0x7f, 0x89, 0x5a, 0xa6, 0x31, 0xa0, 0x79, 0xaf, 0x5f, 0xe4, 0x69, 0x07, 0x4a, 0x0b, 0xab, 0x0b, 0x09, - 0x25, 0x72, 0xc4, 0x61, 0x7c, 0xff, 0x7b, 0xdf, 0x25, 0x6a, 0xc4, 0x61, 0x7f, 0xdf, 0xfb, 0xa2, 0xe4, 0x69, 0x84, 0x59, 0xee, 0xae, 0x22, 0x22, 0x05, 0x6a, 0xa4, 0x59, 0xfd, 0xfd, 0xba, 0x0d, - 0x05, 0x6a, 0xc4, 0x61, 0xac, 0xb9, 0xaa, 0xa8, 0xe5, 0x69, 0x04, 0x62, 0x6e, 0x97, 0x3a, 0x00, 0x05, 0x6a, 0x84, 0x59, 0x7e, 0x7a, 0xc2, 0xba, 0xe5, 0x61, 0x43, 0x51, 0xdf, 0xab, 0xa2, 0x00, - 0xe5, 0x61, 0xa4, 0x59, 0x9f, 0xbf, 0xfa, 0x00, 0x05, 0x6a, 0xa4, 0x59, 0xad, 0xaa, 0xa2, 0x2b, 0x05, 0x72, 0xc4, 0x69, 0xaf, 0xf6, 0x7b, 0xf0, 0x25, 0x6a, 0xe4, 0x61, 0xab, 0xea, 0xfb, 0x2f, - 0x45, 0x72, 0x05, 0x6a, 0xd5, 0x55, 0x7e, 0xdb, 0x25, 0x72, 0xc4, 0x61, 0xbf, 0xb7, 0xab, 0xea, 0x44, 0x7a, 0xe5, 0x61, 0xd7, 0xef, 0xca, 0xea, 0x44, 0x72, 0xc3, 0x69, 0xfe, 0x7a, 0xbc, 0xde, - 0x05, 0x72, 0xa3, 0x61, 0x0a, 0xbf, 0xaa, 0xda, 0x45, 0x72, 0xa4, 0x69, 0x02, 0x2b, 0xb7, 0xaf, 0x45, 0x72, 0xc4, 0x69, 0xa2, 0xaf, 0xfb, 0x6a, 0xa7, 0x7a, 0xe5, 0x69, 0xab, 0xab, 0x7d, 0x71, - 0xe8, 0x82, 0x02, 0x49, 0xea, 0x5e, 0x2f, 0x02, 0x0b, 0xa4, 0x63, 0x59, 0xf5, 0xbd, 0x32, 0x2a, 0xae, 0xb4, 0x66, 0x72, 0xa9, 0xab, 0xa8, 0x0a, 0xaa, 0x9b, 0xc7, 0x41, 0x7b, 0x5c, 0x57, 0x57, - 0x09, 0x4a, 0xc8, 0x39, 0xaa, 0x08, 0xfa, 0x6c, 0x29, 0x4a, 0x87, 0x39, 0xc2, 0xaa, 0xaf, 0x25, 0x29, 0x4a, 0xa7, 0x31, 0xea, 0xa8, 0xa5, 0x8f, 0x49, 0x4a, 0xa8, 0x39, 0x22, 0x2b, 0xab, 0xb7, - 0xcb, 0x62, 0xc8, 0x41, 0xa2, 0x8a, 0xdf, 0x57, 0x8a, 0x5a, 0xc7, 0x41, 0xeb, 0xe8, 0xde, 0xaf, 0x49, 0x52, 0xe8, 0x41, 0x9f, 0x95, 0xba, 0x20, 0x8a, 0x5a, 0x09, 0x4a, 0xf5, 0x77, 0xd5, 0xf2, - 0x8a, 0x5a, 0xe8, 0x49, 0x33, 0xcf, 0x7d, 0x6e, 0xca, 0x62, 0xe8, 0x49, 0xda, 0xbf, 0x37, 0xa9, 0x89, 0x5a, 0xe8, 0x41, 0x5f, 0x5a, 0xf8, 0x6a, 0x89, 0x52, 0xc8, 0x41, 0xdf, 0xdb, 0x22, 0xdf, - 0x6a, 0x5a, 0xe7, 0x41, 0x6b, 0xda, 0xbc, 0xfc, 0xaa, 0x62, 0xe8, 0x49, 0x8d, 0xeb, 0xbb, 0xf7, 0x69, 0x5a, 0xe8, 0x41, 0x70, 0xee, 0x62, 0x55, 0x6a, 0x52, 0xe8, 0x41, 0xe7, 0x3f, 0xdf, 0xbb, - 0xcb, 0x6a, 0xa7, 0x41, 0xfe, 0xfb, 0xf5, 0xc3, 0x09, 0x52, 0xe8, 0x41, 0x55, 0x55, 0x77, 0xe8, 0xaa, 0x5a, 0xc8, 0x41, 0xfd, 0xbf, 0xbd, 0x2b, 0x69, 0x52, 0xe8, 0x49, 0x55, 0xf8, 0xe8, 0xf8, - 0x69, 0x52, 0xc8, 0x41, 0xd7, 0xff, 0x2b, 0x0f, 0xec, 0x62, 0xc7, 0x41, 0x55, 0x77, 0x3f, 0xff, 0x8b, 0x5a, 0xa7, 0x39, 0xff, 0x7f, 0xa8, 0xaa, 0x6a, 0x52, 0xc8, 0x49, 0x7f, 0xfd, 0x88, 0x7a, - 0x8a, 0x5a, 0xe8, 0x41, 0x5d, 0xe3, 0xfa, 0x89, 0x8a, 0x5a, 0xc8, 0x39, 0xdd, 0xfe, 0xa0, 0xba, 0xaa, 0x62, 0xe8, 0x41, 0x57, 0x55, 0xe2, 0xff, 0x8a, 0x5a, 0xc8, 0x41, 0x55, 0xff, 0x02, 0xfa, - 0xaa, 0x5a, 0xc8, 0x41, 0x5d, 0xf4, 0x8a, 0xae, 0xaa, 0x5a, 0xc7, 0x41, 0x55, 0xff, 0x00, 0x8a, 0x8a, 0x52, 0xc8, 0x41, 0xdd, 0xf5, 0x88, 0x08, 0xaa, 0x5a, 0xe8, 0x41, 0xfd, 0xfd, 0x0a, 0x00, - 0x59, 0xbe, 0xb6, 0x84, 0x55, 0x55, 0x70, 0xc0, 0xd6, 0x8c, 0xf7, 0x84, 0xe5, 0xa8, 0x02, 0x8b, 0x17, 0x8d, 0xd6, 0x84, 0xff, 0xef, 0xb9, 0x2b, 0x17, 0x8d, 0xd6, 0x84, 0x9f, 0xfe, 0xbe, 0xab, - 0x37, 0x95, 0xd6, 0x8c, 0xe7, 0x3d, 0xaf, 0x76, 0x3c, 0xdf, 0x75, 0x7c, 0x57, 0xff, 0x57, 0x03, 0x99, 0xc6, 0xb6, 0x84, 0xf5, 0x75, 0xbd, 0x80, 0xba, 0xce, 0xb6, 0x8c, 0x55, 0x57, 0x2c, 0x2a, - 0xda, 0xd6, 0xd6, 0x8c, 0x55, 0xfd, 0x82, 0x00, 0xfa, 0xd6, 0xf6, 0x8c, 0xd5, 0x5f, 0xf9, 0xe0, 0x39, 0xbe, 0xd6, 0x8c, 0x75, 0x37, 0xff, 0xfe, 0x5a, 0xbe, 0xb5, 0x84, 0x7d, 0x23, 0x9e, 0x62, - 0xf9, 0xb5, 0xf6, 0x8c, 0x0a, 0xca, 0x26, 0x9f, 0x7a, 0xc6, 0xd5, 0x8c, 0x50, 0x0a, 0xaa, 0x2a, 0xdb, 0xd6, 0xb5, 0x84, 0x55, 0x62, 0x5a, 0xa0, 0x77, 0x9d, 0xd6, 0x8c, 0xfd, 0xbf, 0xf2, 0xaa, - 0x37, 0x9d, 0xf6, 0x84, 0xf8, 0xf9, 0xff, 0xff, 0x77, 0x9d, 0xd6, 0x8c, 0x50, 0x5a, 0xdf, 0x5f, 0x3a, 0xb6, 0xf6, 0x8c, 0x71, 0x5d, 0xdd, 0x55, 0x59, 0xbe, 0xf6, 0x8c, 0xdd, 0x95, 0x35, 0x89, - 0x7a, 0xc6, 0x16, 0x95, 0x55, 0x26, 0x23, 0x0a, 0x59, 0xc6, 0x39, 0xb6, 0xc1, 0x2a, 0xaa, 0xef, 0x9a, 0xce, 0xf6, 0x8c, 0x57, 0x50, 0x82, 0xaa, 0x39, 0xbe, 0x17, 0x8d, 0x55, 0x5f, 0xeb, 0xf0, - 0xdb, 0xce, 0x16, 0x95, 0x4d, 0x7b, 0x55, 0x55, 0x7a, 0xc6, 0x17, 0x95, 0x55, 0xd5, 0xf3, 0xbf, 0x9a, 0xc6, 0xf6, 0x94, 0xd5, 0xf5, 0xe0, 0xfe, 0x5a, 0xbe, 0xf6, 0x8c, 0xe4, 0x7b, 0xfa, 0xea, - 0x7a, 0xc6, 0x37, 0x95, 0xd5, 0x35, 0xf7, 0xab, 0xfa, 0xde, 0xf7, 0xb5, 0xb3, 0x8b, 0x9f, 0x55, 0x49, 0x73, 0xc5, 0x59, 0x57, 0x5f, 0x7f, 0x74, 0xe5, 0x61, 0xa4, 0x59, 0x56, 0x3e, 0xe7, 0x7a, - 0xe5, 0x61, 0xa4, 0x59, 0xf6, 0xf5, 0xbd, 0xf9, 0xe5, 0x61, 0x84, 0x59, 0x77, 0x00, 0x42, 0xaa, 0xa5, 0x61, 0x63, 0x51, 0xe7, 0x9f, 0x1f, 0x3f, 0xe5, 0x61, 0x84, 0x59, 0xbd, 0x9e, 0x16, 0xa2, - 0x05, 0x6a, 0xc4, 0x59, 0xaf, 0xbf, 0xdb, 0xba, 0x04, 0x6a, 0xc5, 0x61, 0xaf, 0xf5, 0xfb, 0xf7, 0x05, 0x6a, 0xc4, 0x61, 0xf9, 0x2a, 0x2a, 0xf7, 0x05, 0x6a, 0xe4, 0x61, 0xec, 0x24, 0xa8, 0xef, - 0x67, 0x7a, 0x05, 0x6a, 0x15, 0x15, 0xd5, 0xd5, 0x9a, 0xd6, 0xe5, 0x71, 0x0b, 0x2d, 0xbf, 0xf5, 0x9a, 0xce, 0xf4, 0xac, 0x00, 0x00, 0x00, 0x21, 0x7a, 0xce, 0x58, 0xc6, 0x4a, 0xa2, 0x8a, 0xed, - 0xdb, 0xd6, 0x6a, 0x4a, 0x60, 0x00, 0x00, 0x00, 0xfb, 0xd6, 0x29, 0x42, 0x55, 0x55, 0x5c, 0xc0, 0x93, 0x8c, 0x08, 0x4a, 0x5f, 0xf7, 0xff, 0xa2, 0xec, 0x62, 0xe8, 0x39, 0xfd, 0xde, 0xa2, 0xf8, - 0x4d, 0x6b, 0xc8, 0x39, 0x5f, 0xff, 0xff, 0x8a, 0xab, 0x52, 0xe8, 0x41, 0xf7, 0xbf, 0x73, 0xac, 0x6a, 0x52, 0xe9, 0x49, 0xeb, 0x02, 0xbd, 0xa8, 0xca, 0x5a, 0xe9, 0x41, 0xdd, 0xf8, 0x2a, 0xef, - 0x8a, 0x5a, 0x09, 0x42, 0xbd, 0x2b, 0x57, 0x0b, 0xab, 0x62, 0x09, 0x42, 0x5f, 0xfe, 0xff, 0x0e, 0xab, 0x5a, 0x09, 0x42, 0xd9, 0xfe, 0xea, 0x82, 0xcb, 0x5a, 0x09, 0x42, 0xde, 0x7d, 0xf5, 0x0f, - 0x0b, 0x63, 0xe8, 0x41, 0xfd, 0xb0, 0xbf, 0x8a, 0xeb, 0x62, 0x29, 0x4a, 0x57, 0x7f, 0xad, 0xa3, 0xaa, 0x62, 0x09, 0x42, 0xdf, 0x7f, 0xa0, 0xec, 0x8a, 0x52, 0x09, 0x4a, 0xe7, 0xa3, 0xe4, 0xa7, - 0xcb, 0x62, 0xe9, 0x49, 0x55, 0xc3, 0x3e, 0x2a, 0xeb, 0x62, 0xe8, 0x49, 0x5f, 0xbb, 0xaa, 0xe2, 0xab, 0x5a, 0xe8, 0x41, 0x5d, 0xc8, 0x3a, 0x7d, 0xaa, 0x5a, 0xc8, 0x41, 0x57, 0xb7, 0xa8, 0xef, - 0xab, 0x62, 0xc8, 0x41, 0xa9, 0x28, 0xaa, 0xaf, 0x0c, 0x6b, 0x08, 0x4a, 0x57, 0xf7, 0xae, 0xa3, 0xeb, 0x62, 0x08, 0x4a, 0xcd, 0xaa, 0x07, 0xe0, 0xab, 0x62, 0xe8, 0x41, 0xfd, 0xa2, 0xed, 0x7f, - 0x8a, 0x52, 0xe9, 0x41, 0xd7, 0x88, 0xda, 0xfe, 0x6a, 0x5a, 0xa7, 0x39, 0x5f, 0x00, 0x8b, 0xbf, 0x6a, 0x5a, 0x09, 0x42, 0x75, 0x2a, 0xaa, 0xbf, 0xe4, 0x69, 0x48, 0x52, 0x0b, 0x29, 0x09, 0x8b, - 0x26, 0x6a, 0xc4, 0x61, 0xf7, 0xaf, 0xaf, 0xf8, 0x45, 0x72, 0xc4, 0x61, 0xab, 0xdf, 0xeb, 0xe2, 0x05, 0x6a, 0xa4, 0x61, 0x7a, 0xaf, 0x20, 0xa3, 0x26, 0x72, 0xc4, 0x69, 0x35, 0xd7, 0x17, 0xae, - 0x46, 0x72, 0xe4, 0x69, 0x7f, 0xb5, 0xa8, 0xef, 0x25, 0x72, 0xe4, 0x69, 0x5d, 0x77, 0x68, 0x7f, 0xe5, 0x69, 0xa3, 0x61, 0x6f, 0xe8, 0x7c, 0x5e, 0x05, 0x6a, 0x83, 0x59, 0xbb, 0x3b, 0x2e, 0xa7, - 0x05, 0x6a, 0xa3, 0x61, 0x68, 0xee, 0xd8, 0x5c, 0x05, 0x6a, 0xa3, 0x61, 0xae, 0x09, 0x87, 0xa5, 0x04, 0x72, 0xa5, 0x61, 0x72, 0xea, 0xab, 0xea, 0x05, 0x6a, 0xc4, 0x61, 0x8a, 0xba, 0x25, 0xaf, - 0x05, 0x72, 0xc4, 0x69, 0x20, 0xa2, 0xf7, 0x95, 0x06, 0x72, 0xe4, 0x61, 0x82, 0x81, 0xbe, 0xdf, 0x05, 0x72, 0xe4, 0x61, 0xaa, 0x82, 0x5a, 0xfb, 0x04, 0x72, 0xc5, 0x61, 0x28, 0xa2, 0xaf, 0x5e, - 0x25, 0x6a, 0x63, 0x49, 0x80, 0xe2, 0xda, 0x52, 0x29, 0x83, 0x83, 0x51, 0x5f, 0x35, 0x35, 0xb5, 0x49, 0x83, 0x63, 0x51, 0xf5, 0x8c, 0xea, 0x3e, 0x0c, 0x94, 0x05, 0x62, 0x7b, 0x7b, 0xba, 0x02, - 0x6c, 0xa4, 0x86, 0x72, 0xd9, 0xf5, 0xbf, 0x88, 0x30, 0xc5, 0x44, 0x6a, 0xff, 0xab, 0xda, 0x0a, 0xef, 0xc4, 0xe8, 0x51, 0x0a, 0x60, 0x70, 0x50, 0x49, 0x52, 0xc7, 0x49, 0xe9, 0xd5, 0x82, 0xfa, - 0x29, 0x52, 0xe8, 0x41, 0x4a, 0x3a, 0xc3, 0xff, 0x29, 0x4a, 0xc8, 0x41, 0x95, 0xf8, 0x82, 0x0b, 0x6a, 0x52, 0xc8, 0x41, 0x7f, 0xeb, 0xb9, 0xa2, 0x29, 0x52, 0xc8, 0x39, 0xde, 0xaa, 0xb8, 0xfa, - 0x49, 0x52, 0xe8, 0x41, 0x56, 0xfb, 0x3b, 0xb6, 0x29, 0x5a, 0xc8, 0x41, 0xfd, 0xff, 0xaa, 0xf0, 0x29, 0x52, 0xc7, 0x39, 0xee, 0xa6, 0xa8, 0xaa, 0x49, 0x52, 0xe8, 0x41, 0x0f, 0xbd, 0x7a, 0x57, - 0x8a, 0x5a, 0xe8, 0x41, 0xad, 0x2f, 0x5d, 0xd5, 0xaa, 0x62, 0xe8, 0x49, 0xa2, 0x20, 0x75, 0xdf, 0xeb, 0x6a, 0x08, 0x4a, 0xca, 0xea, 0xf5, 0x54, 0x69, 0x52, 0xe8, 0x49, 0xba, 0xf8, 0xb7, 0x55, - 0x69, 0x5a, 0xe8, 0x41, 0xb8, 0x0a, 0x9f, 0xf7, 0x29, 0x4a, 0xe8, 0x41, 0x50, 0xc0, 0x20, 0x57, 0x0c, 0x6b, 0xc8, 0x41, 0x57, 0xcb, 0x57, 0xd5, 0x49, 0x52, 0xc8, 0x31, 0x38, 0xfd, 0xd5, 0xae, - 0x69, 0x5a, 0xc8, 0x41, 0xbe, 0x0a, 0x55, 0xd5, 0x69, 0x52, 0xc8, 0x41, 0xf7, 0xe2, 0xa7, 0xff, 0xea, 0x5a, 0xe8, 0x49, 0x5d, 0xdd, 0xf3, 0xef, 0x69, 0x52, 0xa7, 0x41, 0x9f, 0x08, 0x00, 0xba, - 0xaa, 0x62, 0x08, 0x42, 0xfd, 0x6f, 0xeb, 0x70, 0x89, 0x5a, 0x08, 0x42, 0xe0, 0xed, 0xaf, 0x97, 0xaa, 0x62, 0xe8, 0x49, 0xf7, 0xba, 0x8b, 0xe0, 0x4c, 0x73, 0xe7, 0x41, 0xcf, 0x7f, 0xf5, 0xfb, - 0x8a, 0x5a, 0xe8, 0x41, 0xca, 0xab, 0x02, 0x45, 0x8a, 0x5a, 0xc7, 0x41, 0xba, 0xaf, 0xbf, 0xe1, 0xeb, 0x6a, 0x08, 0x42, 0xdf, 0xf9, 0xff, 0x0d, 0xaa, 0x62, 0x09, 0x4a, 0x23, 0xb5, 0x7f, 0xf8, - 0x69, 0x52, 0xc8, 0x49, 0xc0, 0xa0, 0x02, 0x37, 0x8a, 0x5a, 0xe8, 0x49, 0x0a, 0xb6, 0xba, 0x34, 0xaa, 0x62, 0x28, 0x4a, 0xea, 0xfb, 0xea, 0x78, 0xeb, 0x6a, 0x09, 0x4a, 0x5a, 0xfb, 0x58, 0xb7, - 0x79, 0xc6, 0x97, 0xad, 0x2a, 0xda, 0x6a, 0x02, 0x39, 0xbe, 0xb5, 0x84, 0x57, 0x58, 0x0a, 0x28, 0xda, 0xd6, 0xb6, 0x84, 0x55, 0x5d, 0x20, 0x00, 0x1a, 0xdf, 0xd6, 0x84, 0x55, 0x3d, 0xf8, 0xea, - 0x3b, 0xdf, 0xf5, 0x94, 0x95, 0x0a, 0xff, 0xea, 0x3b, 0xe7, 0x76, 0xa5, 0xa0, 0xaa, 0xb5, 0x77, 0xfa, 0xde, 0x56, 0xa5, 0xa0, 0xeb, 0xea, 0x97, 0xbb, 0xce, 0x15, 0x9d, 0x1a, 0xaa, 0xab, 0xfc, - 0x3b, 0xe7, 0xd7, 0xb5, 0x02, 0xa7, 0x7e, 0xf9, 0x1b, 0xdf, 0x18, 0xbe, 0xfe, 0x62, 0xfd, 0x6d, 0x79, 0xc6, 0x16, 0x95, 0xd7, 0xb0, 0x08, 0xa2, 0x7a, 0xce, 0xb7, 0xad, 0x7b, 0xc0, 0x2c, 0xcb, - 0x19, 0xb6, 0x16, 0x8d, 0x57, 0xfc, 0x50, 0x40, 0xdb, 0xce, 0x16, 0x95, 0xf0, 0xdd, 0xdd, 0xc2, 0x7a, 0xc6, 0x74, 0x84, 0xbf, 0x22, 0xa0, 0x5d, 0x1c, 0xd7, 0xb5, 0x84, 0xff, 0xea, 0x5f, 0x2d, - 0xfa, 0xde, 0xf6, 0x8c, 0x55, 0xd5, 0xe9, 0xe8, 0x79, 0xc6, 0xd6, 0x8c, 0x55, 0xbe, 0x2a, 0x02, 0x5a, 0xc6, 0x16, 0x95, 0xd4, 0x2e, 0x00, 0x00, 0x5a, 0xbe, 0x18, 0xb6, 0xad, 0xbf, 0xff, 0x62, - 0x59, 0xc6, 0x18, 0xb6, 0xaa, 0xae, 0xeb, 0xfb, 0x38, 0xc6, 0x59, 0xbe, 0xba, 0x8f, 0xfe, 0x9e, 0x5a, 0xc6, 0x38, 0xbe, 0xfd, 0x7d, 0xfa, 0xea, 0x7a, 0xc6, 0x18, 0xbe, 0xbf, 0xff, 0x2b, 0xaa, - 0x7a, 0xc6, 0xf8, 0xb5, 0x27, 0xba, 0xaa, 0xaa, 0x59, 0xc6, 0xd8, 0xad, 0x5e, 0x88, 0x88, 0x00, 0x59, 0xc6, 0xf8, 0xb5, 0xd3, 0x6f, 0xfe, 0x00, 0x9a, 0xce, 0xd8, 0xad, 0x9e, 0x2f, 0x97, 0x8a, - 0xda, 0xd6, 0x38, 0xbe, 0x70, 0xaa, 0xff, 0xff, 0xda, 0xd6, 0xd7, 0xad, 0x89, 0xba, 0xaf, 0xba, 0xb8, 0xd6, 0xc5, 0x59, 0x56, 0x56, 0x54, 0x54, 0x46, 0x6a, 0xa5, 0x59, 0xfa, 0x73, 0xf2, 0x7b, - 0xe5, 0x61, 0x84, 0x51, 0xea, 0xef, 0x28, 0x7f, 0xc5, 0x61, 0x84, 0x51, 0x0a, 0xb2, 0x0a, 0xb7, 0x05, 0x62, 0x84, 0x59, 0xef, 0x57, 0xe8, 0x7f, 0x05, 0x62, 0xa4, 0x59, 0x09, 0x39, 0xab, 0xbf, - 0x25, 0x6a, 0xc4, 0x61, 0xfa, 0x7f, 0x7e, 0xfd, 0x05, 0x6a, 0xa4, 0x61, 0xa2, 0xff, 0xab, 0xf6, 0xe5, 0x69, 0xa4, 0x61, 0x6a, 0xe0, 0xe6, 0x57, 0xe5, 0x69, 0xa4, 0x61, 0x3f, 0xe5, 0x8f, 0xa9, - 0x05, 0x6a, 0xa3, 0x61, 0xec, 0xbe, 0xef, 0x6f, 0x4b, 0x93, 0xc4, 0x69, 0x15, 0x55, 0x55, 0x55, 0xba, 0xd6, 0xc5, 0x69, 0x0b, 0x0f, 0x3d, 0x75, 0x9a, 0xd6, 0x59, 0xc6, 0xff, 0xff, 0xff, 0xf4, - 0x7a, 0xce, 0x59, 0xc6, 0x7f, 0xae, 0x2a, 0xbf, 0x9a, 0xce, 0x58, 0xc6, 0x95, 0xeb, 0xfa, 0x7f, 0xbb, 0xce, 0x59, 0xc6, 0x3c, 0x7d, 0xff, 0xfd, 0x99, 0xce, 0xd5, 0x94, 0x7f, 0x00, 0x00, 0x00, - 0x9a, 0xce, 0x50, 0x6b, 0xde, 0x00, 0x00, 0x00, 0xda, 0xd6, 0x70, 0x6b, 0x77, 0x00, 0x00, 0x00, 0xdb, 0xce, 0x6a, 0x52, 0x55, 0x50, 0x00, 0x00, 0xfc, 0xd6, 0x4a, 0x52, 0x55, 0x55, 0xe8, 0x00, - 0xbb, 0xc6, 0x29, 0x4a, 0x7d, 0xff, 0x55, 0x80, 0xaf, 0x73, 0x29, 0x4a, 0xff, 0xae, 0xed, 0xfc, 0x2c, 0x6b, 0x6a, 0x52, 0x6f, 0xb8, 0x00, 0xf7, 0x2c, 0x6b, 0x8a, 0x52, 0x5d, 0xec, 0xe0, 0xa2, - 0x4d, 0x6b, 0xaa, 0x5a, 0xdd, 0x35, 0x98, 0x5f, 0x0b, 0x63, 0x6a, 0x5a, 0x6e, 0xaf, 0x20, 0x8a, 0x0b, 0x63, 0x09, 0x4a, 0xdd, 0xaa, 0x00, 0x2a, 0x2c, 0x6b, 0x28, 0x4a, 0xef, 0x00, 0xd6, 0xbe, - 0xeb, 0x62, 0xe8, 0x41, 0x2a, 0xf8, 0xde, 0xaa, 0xab, 0x5a, 0x29, 0x4a, 0xff, 0x8f, 0x15, 0x20, 0x0b, 0x63, 0x09, 0x4a, 0xd7, 0xdf, 0x2a, 0xfe, 0xeb, 0x5a, 0x09, 0x4a, 0xdf, 0xe7, 0x7c, 0x7d, - 0xcb, 0x62, 0xe9, 0x41, 0xab, 0x2a, 0x7f, 0xff, 0xeb, 0x6a, 0xe8, 0x41, 0xee, 0x3a, 0xf7, 0xaa, 0x2d, 0x73, 0xe8, 0x41, 0x55, 0x2a, 0xff, 0xfa, 0xeb, 0x6a, 0xe8, 0x41, 0xd5, 0x2b, 0xdc, 0xea, - 0x8a, 0x62, 0xe8, 0x41, 0x7d, 0x2f, 0x57, 0xbf, 0x69, 0x5a, 0xc8, 0x41, 0x95, 0x2c, 0xfb, 0xa0, 0x49, 0x52, 0xc7, 0x41, 0x5f, 0xf8, 0x4e, 0xaa, 0x05, 0x72, 0xe7, 0x49, 0x09, 0x0b, 0x29, 0x2b, - 0x26, 0x72, 0xe4, 0x69, 0xbf, 0xb9, 0x8f, 0xaa, 0x46, 0x72, 0xe5, 0x69, 0x5f, 0xfb, 0x8a, 0xeb, 0x26, 0x72, 0xc5, 0x61, 0xee, 0xa8, 0xab, 0xbf, 0x46, 0x72, 0x05, 0x6a, 0x7f, 0xfb, 0x5f, 0xed, - 0x45, 0x72, 0xa4, 0x59, 0xba, 0xba, 0xf2, 0x56, 0x04, 0x6a, 0x83, 0x59, 0xf0, 0xee, 0x57, 0xf7, 0xe5, 0x61, 0x83, 0x59, 0xf3, 0xfd, 0xfd, 0xe9, 0xe5, 0x69, 0x83, 0x51, 0x2a, 0x2f, 0xae, 0x57, - 0xe5, 0x69, 0x84, 0x51, 0xa8, 0xe0, 0x55, 0xdf, 0xe5, 0x61, 0xa4, 0x59, 0x0d, 0x82, 0x95, 0x2f, 0x05, 0x62, 0x84, 0x51, 0x7e, 0x7a, 0xea, 0x88, 0xe5, 0x61, 0x64, 0x49, 0xe2, 0xab, 0xee, 0x78, - 0xe5, 0x61, 0xa4, 0x59, 0x36, 0xaa, 0x75, 0xad, 0xa7, 0x6a, 0xa4, 0x59, 0xdf, 0xb7, 0xd5, 0x0a, 0x29, 0x7b, 0xc4, 0x59, 0x5f, 0xdf, 0xcd, 0x7f, 0x87, 0x6a, 0xc4, 0x59, 0xd5, 0x97, 0x2a, 0x4f, - 0xeb, 0x93, 0xc4, 0x51, 0x5f, 0xdd, 0xfe, 0x78, 0x6c, 0xa4, 0x85, 0x49, 0xb5, 0xeb, 0x2a, 0x8a, 0x8d, 0xac, 0x86, 0x6a, 0x8f, 0x0a, 0xaa, 0x7b, 0xf0, 0xb4, 0xaa, 0x93, 0xfb, 0xbf, 0xfd, 0x9c, - 0xce, 0xb4, 0x08, 0x7b, 0xa7, 0xaa, 0x8e, 0x00, 0xae, 0xb4, 0x4a, 0x8b, 0x82, 0xb2, 0x2b, 0x68, 0xcf, 0xbc, 0xc7, 0x41, 0xd8, 0x5c, 0x56, 0x55, 0x29, 0x4a, 0xa8, 0x39, 0x2a, 0xfb, 0x78, 0x0a, - 0x69, 0x52, 0xc8, 0x39, 0xa2, 0x0b, 0x5d, 0xea, 0x69, 0x52, 0xa8, 0x39, 0xab, 0x82, 0xff, 0x77, 0x49, 0x52, 0xa8, 0x41, 0xea, 0xaa, 0x8a, 0x55, 0x09, 0x52, 0xe8, 0x41, 0xbd, 0x8b, 0xae, 0x7d, - 0x29, 0x52, 0xe8, 0x41, 0x83, 0x8f, 0x82, 0x55, 0x4a, 0x52, 0xc7, 0x39, 0x08, 0x82, 0xae, 0xdf, 0x69, 0x5a, 0xa7, 0x41, 0xba, 0x7f, 0xc3, 0xd7, 0xaa, 0x62, 0xe8, 0x49, 0xf7, 0x39, 0x95, 0x97, - 0x49, 0x52, 0xe8, 0x49, 0xd7, 0xa8, 0xbf, 0xb8, 0xaa, 0x5a, 0xe8, 0x41, 0xff, 0x7e, 0xd5, 0xcf, 0x8a, 0x5a, 0x08, 0x4a, 0x7f, 0x55, 0x75, 0x15, 0x49, 0x52, 0xc8, 0x41, 0x75, 0xfb, 0x2b, 0xab, - 0x49, 0x52, 0xa8, 0x39, 0x62, 0xaa, 0xe8, 0x80, 0x29, 0x4a, 0xc8, 0x41, 0x01, 0x08, 0xac, 0x4e, 0x49, 0x4a, 0xe8, 0x41, 0x62, 0xfd, 0xab, 0x7d, 0x29, 0x4a, 0xc8, 0x39, 0x7e, 0xeb, 0x83, 0x83, - 0x29, 0x4a, 0xc7, 0x39, 0x2e, 0x2b, 0xe2, 0x2d, 0x49, 0x4a, 0xe8, 0x41, 0xcf, 0x57, 0xbf, 0x7b, 0x29, 0x52, 0xe8, 0x39, 0xbe, 0x5e, 0x17, 0xaf, 0xaa, 0x62, 0xc8, 0x41, 0xd7, 0x8b, 0xf7, 0x7f, - 0xaa, 0x62, 0xe8, 0x41, 0xbd, 0xa8, 0xaf, 0xad, 0x69, 0x5a, 0x08, 0x4a, 0x25, 0x8f, 0xa0, 0xaf, 0x6a, 0x5a, 0xc8, 0x49, 0x56, 0xaa, 0x08, 0x2e, 0x6a, 0x52, 0xc8, 0x41, 0xd5, 0x27, 0x88, 0xaa, - 0x69, 0x52, 0xe8, 0x49, 0x6b, 0xa8, 0xa8, 0x7e, 0x69, 0x52, 0xe8, 0x49, 0x2b, 0x7b, 0x2f, 0x8d, 0x69, 0x52, 0xe8, 0x49, 0xd4, 0xd5, 0x2a, 0xa3, 0x8a, 0x52, 0xc8, 0x49, 0x7d, 0xff, 0xa8, 0xaa, - 0x8a, 0x5a, 0xc8, 0x41, 0xdf, 0x6f, 0x2a, 0x23, 0x4c, 0x7b, 0x87, 0x39, 0xd7, 0xeb, 0x3e, 0xab, 0x8a, 0x62, 0xc8, 0x49, 0x6a, 0xa3, 0xde, 0xa0, 0xab, 0x62, 0x28, 0x52, 0xd6, 0xa9, 0x37, 0xd8, - 0xda, 0xde, 0x97, 0xad, 0x2a, 0xaa, 0xd5, 0xaa, 0xda, 0xd6, 0xd8, 0xb5, 0xc0, 0xab, 0x5d, 0xbe, 0x9a, 0xce, 0x97, 0xad, 0xaa, 0xa0, 0xfd, 0x2a, 0xba, 0xd6, 0xf8, 0xad, 0x8a, 0x20, 0xad, 0xaa, - 0xda, 0xd6, 0x79, 0xce, 0x0a, 0x55, 0x55, 0x55, 0x1b, 0xdf, 0x79, 0xc6, 0xe0, 0x5d, 0x57, 0x55, 0x9a, 0xce, 0x79, 0xc6, 0xfd, 0x9b, 0x2e, 0x8b, 0x9a, 0xce, 0x59, 0xc6, 0xce, 0xbe, 0xaa, 0x8a, - 0x99, 0xce, 0x97, 0xad, 0x7a, 0x00, 0x00, 0x00, 0xfa, 0xde, 0x97, 0xad, 0x2d, 0xaa, 0xaa, 0xaa, 0x99, 0xce, 0x76, 0xa5, 0xde, 0x80, 0x00, 0x00, 0x99, 0xce, 0xd8, 0xad, 0xfd, 0xe5, 0x80, 0x00, - 0xfb, 0xd6, 0x56, 0xa5, 0x27, 0xeb, 0x7f, 0xfa, 0xda, 0xde, 0x77, 0xa5, 0x00, 0xaa, 0xa5, 0xf8, 0x3b, 0xdf, 0xf7, 0xbd, 0x88, 0xff, 0x57, 0xf5, 0xda, 0xd6, 0xd7, 0xb5, 0x0f, 0x49, 0xbb, 0xae, - 0x9a, 0xce, 0xb7, 0xb5, 0xb7, 0x2a, 0x02, 0x00, 0x9a, 0xce, 0x58, 0xc6, 0xf5, 0x7b, 0xaa, 0xaa, 0x7a, 0xce, 0x59, 0xc6, 0x55, 0xea, 0xa0, 0x00, 0x7a, 0xce, 0x58, 0xbe, 0xff, 0xaa, 0x00, 0x00, - 0x9a, 0xce, 0x59, 0xbe, 0x7d, 0xaa, 0xaa, 0xa8, 0x9a, 0xce, 0x59, 0xc6, 0x55, 0xee, 0xaa, 0x8a, 0x7a, 0xce, 0x58, 0xc6, 0x55, 0xfb, 0x80, 0x00, 0x9a, 0xce, 0x59, 0xc6, 0xdf, 0xfa, 0xea, 0x8a, - 0x9a, 0xce, 0x58, 0xc6, 0xd5, 0x7f, 0xba, 0xaa, 0x9a, 0xce, 0x79, 0xc6, 0x55, 0x55, 0x7e, 0xe8, 0x9a, 0xce, 0x59, 0xc6, 0x55, 0xd7, 0xd5, 0xaa, 0x9a, 0xce, 0x59, 0xc6, 0xfd, 0x57, 0xfa, 0xaa, - 0x7a, 0xce, 0x59, 0xc6, 0x55, 0xd5, 0xb7, 0x8d, 0x7a, 0xce, 0x38, 0xbe, 0xee, 0xaa, 0x08, 0x7e, 0xda, 0xd6, 0xc5, 0x59, 0x5c, 0x50, 0x70, 0x70, 0x05, 0x62, 0xc4, 0x59, 0x58, 0x7e, 0xb6, 0xdc, - 0xe4, 0x59, 0x43, 0x51, 0xf2, 0xaa, 0xfe, 0x56, 0xc5, 0x61, 0x84, 0x59, 0x3b, 0x2a, 0xa9, 0x05, 0x05, 0x6a, 0xa4, 0x59, 0x7f, 0xcf, 0xff, 0xbd, 0x05, 0x6a, 0xa4, 0x61, 0x23, 0xeb, 0x7f, 0xaa, - 0x05, 0x6a, 0xa4, 0x61, 0x8e, 0x7b, 0xeb, 0xae, 0xe5, 0x69, 0xa3, 0x61, 0xff, 0xbb, 0x38, 0x2e, 0xc5, 0x69, 0xa4, 0x61, 0x93, 0xee, 0xb3, 0x39, 0xe4, 0x69, 0xa4, 0x61, 0xfd, 0x22, 0xf0, 0x2b, - 0xe5, 0x71, 0xc4, 0x61, 0xff, 0xcd, 0xae, 0x8a, 0x25, 0x72, 0xa3, 0x61, 0x29, 0xef, 0xff, 0xde, 0x2b, 0x83, 0xc4, 0x69, 0x3f, 0xd5, 0x55, 0x55, 0x9a, 0xce, 0xc7, 0x61, 0x03, 0x03, 0x03, 0x0d, - 0x7a, 0xce, 0x59, 0xbe, 0xfa, 0xaa, 0xaa, 0xeb, 0x7a, 0xce, 0x59, 0xc6, 0xdd, 0xff, 0xaa, 0xff, 0x7a, 0xce, 0x39, 0xbe, 0xab, 0xa8, 0x0a, 0xaa, 0x9a, 0xce, 0x59, 0xc6, 0xdf, 0xaf, 0xef, 0xaf, - 0x9a, 0xce, 0x59, 0xc6, 0xdf, 0xbf, 0xab, 0xae, 0x9a, 0xce, 0x59, 0xc6, 0xff, 0xef, 0xea, 0xaa, 0x7a, 0xce, 0x59, 0xc6, 0xff, 0xaa, 0x02, 0x00, 0x9a, 0xce, 0x59, 0xc6, 0xdf, 0xbe, 0xaa, 0xa8, - 0x9a, 0xce, 0x58, 0xc6, 0xfa, 0xfb, 0xae, 0xa8, 0xda, 0xd6, 0x79, 0xc6, 0x2b, 0x55, 0xfd, 0xdf, 0xfb, 0xd6, 0x79, 0xc6, 0x8b, 0x55, 0xfd, 0xf5, 0xdb, 0xd6, 0xed, 0x5a, 0x58, 0x00, 0x00, 0x00, - 0xfb, 0xd6, 0x8b, 0x52, 0x55, 0x00, 0x00, 0x00, 0xfb, 0xd6, 0x8b, 0x52, 0x55, 0xf0, 0x00, 0x00, 0xdb, 0xd6, 0x8a, 0x52, 0x55, 0x55, 0x30, 0x00, 0xdb, 0xd6, 0xcb, 0x5a, 0x55, 0x55, 0x7e, 0x00, - 0x1c, 0xdf, 0x6a, 0x52, 0x55, 0x55, 0x55, 0x00, 0xfb, 0xce, 0x49, 0x52, 0x55, 0x55, 0x55, 0xf0, 0xb3, 0x8c, 0x29, 0x4a, 0x55, 0xff, 0x7f, 0xf8, 0xec, 0x62, 0x49, 0x4a, 0xf5, 0xeb, 0xa5, 0x82, - 0xec, 0x62, 0xe8, 0x41, 0x7f, 0xaa, 0xae, 0xa0, 0xeb, 0x62, 0x09, 0x42, 0xff, 0x56, 0x02, 0xaa, 0x0b, 0x63, 0x29, 0x4a, 0xbd, 0xd5, 0x80, 0x7e, 0xeb, 0x62, 0x6a, 0x52, 0x7f, 0xfd, 0xe2, 0xb5, - 0xeb, 0x62, 0x09, 0x4a, 0xfe, 0xb9, 0xe0, 0xfa, 0xeb, 0x62, 0x08, 0x4a, 0xfe, 0x83, 0xaa, 0x5f, 0xaa, 0x62, 0x28, 0x52, 0xf7, 0xb8, 0x5e, 0xea, 0x25, 0x72, 0x67, 0x6a, 0x2a, 0x0b, 0xa9, 0x0a, - 0x46, 0x72, 0x05, 0x6a, 0xb5, 0x7e, 0x52, 0xff, 0x25, 0x72, 0xe4, 0x61, 0xa0, 0xc3, 0xf2, 0xe7, 0x25, 0x6a, 0xc4, 0x61, 0xef, 0xa9, 0x80, 0xe2, 0x25, 0x72, 0xc4, 0x61, 0xba, 0xa2, 0xd8, 0xf7, - 0x25, 0x6a, 0xa4, 0x59, 0xe8, 0x7a, 0x5f, 0xfa, 0xc5, 0x61, 0x84, 0x59, 0xb0, 0xbe, 0x2e, 0xd2, 0xc5, 0x59, 0x43, 0x49, 0xef, 0x5c, 0xf0, 0xd8, 0x05, 0x6a, 0x84, 0x51, 0xf5, 0x7f, 0xdd, 0x2f, - 0x25, 0x6a, 0x84, 0x59, 0x5f, 0xbf, 0xea, 0x28, 0x67, 0x6a, 0xc5, 0x59, 0x55, 0xb5, 0xfb, 0x02, 0x46, 0x6a, 0xa5, 0x51, 0xb5, 0x82, 0x03, 0x00, 0x66, 0x6a, 0xe5, 0x59, 0xfd, 0xff, 0xbf, 0xbf, - 0x87, 0x72, 0x06, 0x62, 0xc5, 0xf5, 0x57, 0xdd, 0x87, 0x72, 0x05, 0x62, 0x68, 0x55, 0xf7, 0xab, 0xc8, 0x72, 0xc4, 0x59, 0xf7, 0xfd, 0xdf, 0x2e, 0x4c, 0xa4, 0x06, 0x5a, 0xf5, 0xff, 0x2d, 0x2a, - 0x8d, 0xac, 0x05, 0x62, 0xfe, 0xd6, 0xba, 0x00, 0xad, 0xb4, 0x87, 0x72, 0xf7, 0xbb, 0x0a, 0x02, 0x0f, 0xc5, 0x4a, 0x83, 0x3d, 0x0a, 0x02, 0x00, 0x6f, 0xcd, 0x0c, 0x9c, 0xf7, 0xa5, 0xe2, 0xaa, - 0xb2, 0xd5, 0x45, 0x6a, 0xaa, 0xb6, 0xb7, 0x27, 0x30, 0xc5, 0x49, 0x52, 0x78, 0x58, 0x54, 0x57, 0xcb, 0x62, 0xe8, 0x41, 0xfb, 0x7e, 0x38, 0xeb, 0x0c, 0x63, 0xe8, 0x41, 0xdf, 0x55, 0x0f, 0xfb, - 0x8a, 0x52, 0xa8, 0x39, 0xbf, 0xe9, 0x00, 0xaa, 0x8a, 0x5a, 0xe8, 0x41, 0xdf, 0x75, 0xf8, 0x00, 0x8a, 0x52, 0x88, 0x39, 0x5f, 0xaf, 0xbe, 0xac, 0x4a, 0x4a, 0xa7, 0x39, 0x75, 0xb7, 0xff, 0x3f, - 0x8a, 0x52, 0xa8, 0x39, 0x7d, 0xef, 0xeb, 0x74, 0x09, 0x42, 0x68, 0x31, 0xa9, 0xab, 0x00, 0x0a, 0x4a, 0x4a, 0xa8, 0x39, 0xd8, 0xdf, 0xaa, 0x0e, 0x49, 0x4a, 0xc8, 0x39, 0xd7, 0x79, 0xbf, 0x8f, - 0xab, 0x62, 0xc8, 0x41, 0xff, 0x7f, 0x7b, 0xf2, 0x49, 0x52, 0x88, 0x39, 0xa0, 0xde, 0xda, 0x22, 0x6a, 0x5a, 0xa8, 0x39, 0xbe, 0x55, 0xfb, 0xa0, 0x49, 0x52, 0xa8, 0x41, 0x8c, 0xac, 0xa7, 0xe8, - 0x29, 0x4a, 0xa8, 0x39, 0x05, 0xb8, 0xae, 0x02, 0x4a, 0x52, 0xc8, 0x39, 0x86, 0xef, 0x57, 0xee, 0x69, 0x5a, 0xc8, 0x39, 0x8a, 0xff, 0x7f, 0xfb, 0x6a, 0x4a, 0xa8, 0x39, 0xa2, 0x0f, 0x75, 0xf6, - 0x49, 0x4a, 0xc8, 0x39, 0xaf, 0x7a, 0x75, 0x2a, 0x49, 0x4a, 0xc8, 0x39, 0xee, 0xbd, 0xa9, 0x08, 0x6a, 0x52, 0xc8, 0x41, 0xab, 0xa9, 0xf7, 0x00, 0xcb, 0x62, 0xe8, 0x41, 0x7f, 0xfb, 0x97, 0x1e, - 0xab, 0x62, 0xe8, 0x49, 0xf5, 0x2e, 0xa1, 0xb6, 0x2c, 0x73, 0x08, 0x4a, 0x77, 0x2c, 0xff, 0xcf, 0x8a, 0x52, 0xc8, 0x41, 0xff, 0xf6, 0xc8, 0xbd, 0xec, 0x62, 0xe8, 0x41, 0xd5, 0xcd, 0xff, 0x77, - 0xca, 0x5a, 0xa8, 0x39, 0xbf, 0x57, 0xe2, 0xd5, 0x6a, 0x52, 0xe8, 0x41, 0xaa, 0x7d, 0x2d, 0xb2, 0x6a, 0x5a, 0x08, 0x42, 0x82, 0xfb, 0x9e, 0xfd, 0x6a, 0x52, 0x09, 0x4a, 0xbe, 0x55, 0x78, 0xb7, - 0xcb, 0x62, 0x28, 0x4a, 0xba, 0xfd, 0x7b, 0x0e, 0xca, 0x62, 0xa8, 0x41, 0xaa, 0x2a, 0x7a, 0xa8, 0x2b, 0x6b, 0xc8, 0x41, 0xff, 0xff, 0xf5, 0xe2, 0x8a, 0x5a, 0x08, 0x4a, 0x5a, 0x22, 0x9f, 0x7d, - 0x7a, 0xce, 0x58, 0xc6, 0x55, 0x5d, 0xef, 0x20, 0x9a, 0xce, 0x59, 0xc6, 0xdf, 0xf5, 0xfa, 0xaa, 0x9a, 0xce, 0x59, 0xc6, 0xfb, 0x7d, 0xff, 0xaa, 0x7a, 0xce, 0x59, 0xbe, 0xaa, 0xfb, 0xea, 0xaa, - 0x9a, 0xce, 0x59, 0xc6, 0xae, 0xfd, 0xdd, 0xdf, 0x9a, 0xce, 0x59, 0xc6, 0xaa, 0xff, 0xff, 0xff, 0x7a, 0xce, 0x59, 0xc6, 0x28, 0xaa, 0x22, 0xef, 0x9a, 0xce, 0x79, 0xc6, 0xbf, 0xff, 0x5f, 0xdd, - 0x9a, 0xce, 0x79, 0xc6, 0xaa, 0xef, 0xfd, 0xd5, 0x9a, 0xce, 0x79, 0xc6, 0xba, 0xbf, 0xff, 0xff, 0x7a, 0xce, 0x99, 0xc6, 0x0b, 0x8a, 0xbf, 0xfe, 0x9a, 0xce, 0x79, 0xc6, 0xa2, 0xba, 0xfe, 0xfd, - 0x99, 0xce, 0x18, 0xbe, 0x40, 0x00, 0x28, 0xaa, 0xda, 0xd6, 0xd7, 0xb5, 0x8b, 0xa6, 0xaa, 0xaa, 0xfb, 0xd6, 0xf8, 0xb5, 0xcf, 0xa7, 0xaa, 0xab, 0x9a, 0xce, 0x79, 0xc6, 0xab, 0xba, 0xef, 0xef, - 0x9a, 0xce, 0x79, 0xce, 0xb6, 0x6d, 0xad, 0xae, 0x99, 0xce, 0x7a, 0xce, 0xb8, 0xeb, 0x68, 0xfe, 0x9a, 0xce, 0x79, 0xc6, 0xa0, 0xaa, 0xae, 0xea, 0x9a, 0xce, 0x79, 0xce, 0xa8, 0xbe, 0x2f, 0x8b, - 0x9a, 0xce, 0x79, 0xc6, 0x2a, 0xa0, 0xaa, 0xaa, 0x9a, 0xce, 0x79, 0xce, 0x87, 0xfb, 0xf0, 0xfa, 0x9a, 0xce, 0x79, 0xce, 0xea, 0xe8, 0x3a, 0x3f, 0x7a, 0xd6, 0x99, 0xc6, 0xea, 0xff, 0xeb, 0xbe, - 0x9a, 0xd6, 0x79, 0xc6, 0xba, 0xaf, 0xbe, 0xfa, 0x9a, 0xd6, 0x79, 0xc6, 0xaa, 0xba, 0xea, 0xff, 0x9a, 0xd6, 0x79, 0xc6, 0xea, 0xaa, 0xfa, 0xff, 0x9a, 0xd6, 0x79, 0xce, 0xff, 0xbe, 0xff, 0x5f, - 0x9a, 0xce, 0x79, 0xce, 0xaa, 0xa2, 0xf8, 0xf5, 0x9a, 0xce, 0x59, 0xbe, 0x5e, 0xa0, 0x80, 0x08, 0xd9, 0xd6, 0xe4, 0x61, 0x70, 0x70, 0x70, 0x50, 0x05, 0x62, 0xa4, 0x59, 0x72, 0xb2, 0xfb, 0xca, - 0xe4, 0x61, 0x03, 0x49, 0xda, 0xd8, 0xa8, 0xe0, 0xe5, 0x69, 0x64, 0x59, 0x27, 0xad, 0x2b, 0x79, 0x05, 0x62, 0x43, 0x51, 0xaa, 0xaf, 0x2a, 0xb9, 0x05, 0x6a, 0x64, 0x51, 0x02, 0x80, 0xa2, 0xd6, - 0x05, 0x6a, 0xc5, 0x59, 0xaa, 0xab, 0xa8, 0x55, 0x05, 0x6a, 0xc4, 0x61, 0xf7, 0xec, 0xec, 0x4c, 0x25, 0x6a, 0xa4, 0x61, 0xd7, 0x15, 0xfd, 0x2f, 0x25, 0x6a, 0xa4, 0x61, 0xdf, 0xef, 0xb5, 0x8a, - 0x05, 0x6a, 0xa4, 0x61, 0x83, 0x78, 0xfa, 0xab, 0x05, 0x6a, 0xa4, 0x59, 0x5e, 0x55, 0xef, 0x2a, 0x46, 0x6a, 0xa4, 0x59, 0xf7, 0x57, 0xb7, 0x2a, 0xdc, 0xde, 0xe6, 0x59, 0x05, 0x35, 0x15, 0x95, - 0x9a, 0xce, 0x59, 0xc6, 0x75, 0xfb, 0xaa, 0xa8, 0x9a, 0xce, 0x79, 0xc6, 0xd5, 0x5e, 0xbe, 0xaa, 0x9a, 0xce, 0x59, 0xc6, 0x7f, 0xf6, 0xaa, 0xaa, 0x9a, 0xce, 0x59, 0xc6, 0xff, 0xff, 0xaa, 0xaa, - 0x7a, 0xce, 0x59, 0xc6, 0x00, 0xea, 0x20, 0x00, 0x9a, 0xce, 0x59, 0xc6, 0xea, 0xba, 0xaf, 0xae, 0x9a, 0xce, 0x79, 0xc6, 0xaa, 0xfe, 0xff, 0xff, 0x9a, 0xce, 0x59, 0xc6, 0xaa, 0xaa, 0xff, 0xea, - 0x9a, 0xce, 0x59, 0xc6, 0x80, 0xaa, 0xff, 0xff, 0x9a, 0xce, 0x79, 0xc6, 0x20, 0xa0, 0xff, 0xff, 0x9a, 0xce, 0x79, 0xc6, 0xaa, 0xaa, 0xff, 0x7f, 0x9a, 0xce, 0x59, 0xc6, 0x80, 0x2a, 0xba, 0xff, - 0x9a, 0xce, 0x59, 0xc6, 0x0a, 0xaa, 0xfa, 0xdd, 0x9a, 0xce, 0x59, 0xc6, 0x00, 0x82, 0xaa, 0xd7, 0x9a, 0xce, 0x59, 0xc6, 0x28, 0x08, 0xaa, 0xff, 0x9a, 0xce, 0x59, 0xc6, 0x80, 0x82, 0xae, 0xbe, - 0x9a, 0xce, 0x79, 0xc6, 0x08, 0x0a, 0xfa, 0xff, 0xba, 0xd6, 0x79, 0xce, 0x2f, 0xff, 0x55, 0x55, 0xfb, 0xde, 0x18, 0xbe, 0x4a, 0xaa, 0xff, 0xff, 0xfb, 0xd6, 0xac, 0x52, 0x5b, 0x00, 0x00, 0x00, - 0x1c, 0xdf, 0x8b, 0x52, 0x55, 0x00, 0x00, 0x00, 0x1c, 0xdf, 0x29, 0x4a, 0x55, 0x80, 0x00, 0x00, 0xdb, 0xd6, 0xab, 0x52, 0x55, 0x5f, 0x00, 0x00, 0xdb, 0xd6, 0x8a, 0x52, 0x55, 0x55, 0x80, 0x00, - 0xfc, 0xd6, 0x4a, 0x52, 0x55, 0xd5, 0x0b, 0x00, 0xfb, 0xd6, 0xcb, 0x62, 0x55, 0x0b, 0x00, 0x00, 0xda, 0xd6, 0x47, 0x62, 0x77, 0x60, 0x70, 0x50, 0x87, 0x72, 0x05, 0x6a, 0x57, 0x57, 0x54, 0xd4, - 0x25, 0x6a, 0xc4, 0x61, 0xf2, 0xf0, 0x5b, 0xef, 0x05, 0x6a, 0xc4, 0x61, 0xdf, 0xa6, 0x0a, 0xe2, 0x66, 0x6a, 0xc5, 0x61, 0x7f, 0xee, 0xff, 0x2f, 0x46, 0x6a, 0xe5, 0x59, 0xeb, 0x7f, 0xbf, 0x02, - 0x87, 0x72, 0xa4, 0x51, 0xfb, 0xed, 0xaa, 0x80, 0x25, 0x6a, 0x84, 0x51, 0x5f, 0xad, 0xbe, 0xa8, 0xe5, 0x61, 0xa3, 0x59, 0xad, 0x22, 0x22, 0x27, 0x46, 0x6a, 0xc4, 0x61, 0xff, 0xb5, 0xb7, 0x2b, - 0x66, 0x72, 0xe5, 0x61, 0x8d, 0xfb, 0x2a, 0x02, 0x87, 0x72, 0x26, 0x6a, 0xb7, 0xab, 0x82, 0x8a, 0x87, 0x72, 0x46, 0x6a, 0x7d, 0xea, 0x6e, 0x0a, 0x87, 0x72, 0x25, 0x6a, 0xdf, 0x8b, 0xfb, 0xa2, - 0x67, 0x72, 0x26, 0x62, 0x36, 0x82, 0x20, 0xa8, 0xa7, 0x7a, 0x45, 0x6a, 0xaa, 0xaa, 0xad, 0xb7, 0x29, 0x83, 0x26, 0x6a, 0x3f, 0xbf, 0xbf, 0xb5, 0x8d, 0xac, 0x65, 0x72, 0x2f, 0x2f, 0x2b, 0x27, - 0xad, 0xb4, 0x0b, 0x9c, 0x94, 0x8f, 0x0a, 0x83, 0x0f, 0xbd, 0x2c, 0xa4, 0x6d, 0x83, 0xfa, 0xfa, 0x0f, 0xc5, 0x6c, 0xac, 0x88, 0xca, 0xdd, 0xd5, 0x4f, 0xcd, 0xa3, 0x59, 0xc0, 0x7c, 0x5c, 0x5e, - 0xaf, 0xac, 0xc4, 0x51, 0x8f, 0xf5, 0x75, 0x7b, 0xaa, 0x5a, 0x29, 0x4a, 0x3c, 0xfb, 0xea, 0x79, 0xcb, 0x62, 0x29, 0x4a, 0xa8, 0xd7, 0xea, 0x55, 0xaa, 0x5a, 0x29, 0x4a, 0xa0, 0x7a, 0x5f, 0x7d, - 0xca, 0x5a, 0xe9, 0x41, 0xa0, 0xaa, 0xff, 0x5f, 0x8a, 0x5a, 0x09, 0x42, 0xa0, 0x02, 0xf7, 0x75, 0xaa, 0x52, 0x09, 0x42, 0xfa, 0xae, 0x0a, 0xdd, 0xcb, 0x5a, 0x29, 0x4a, 0xee, 0x6b, 0xef, 0x39, - 0xcb, 0x62, 0xe9, 0x41, 0x5b, 0x2a, 0x7a, 0x2a, 0xcb, 0x62, 0x29, 0x4a, 0xbe, 0x82, 0xf5, 0xf6, 0xeb, 0x62, 0x08, 0x4a, 0xaf, 0x2a, 0xb9, 0xaf, 0xeb, 0x62, 0xc9, 0x41, 0x7a, 0xb8, 0xaa, 0xaa, - 0xeb, 0x62, 0x2a, 0x52, 0x55, 0x0a, 0x02, 0xaa, 0x2c, 0x6b, 0x09, 0x4a, 0x5d, 0xe8, 0xab, 0xaa, 0xeb, 0x62, 0xe8, 0x49, 0x57, 0x32, 0xb8, 0x2a, 0x4d, 0x6b, 0xe8, 0x41, 0xd7, 0xec, 0xae, 0xfa, - 0xeb, 0x62, 0x87, 0x31, 0xff, 0x55, 0x02, 0xaa, 0x8d, 0x73, 0xe9, 0x41, 0x57, 0x5f, 0x0a, 0xff, 0x2b, 0x6b, 0xe8, 0x41, 0xd5, 0x55, 0xa8, 0xaa, 0xee, 0x7b, 0xc8, 0x39, 0x55, 0x55, 0x2a, 0xff, - 0x2f, 0x8c, 0xa7, 0x39, 0xd5, 0x55, 0x38, 0xff, 0x4f, 0x8c, 0x08, 0x42, 0x55, 0x55, 0xec, 0xfd, 0x2c, 0x6b, 0xc7, 0x41, 0x1e, 0xba, 0xab, 0xaa, 0x6c, 0x7b, 0x29, 0x4a, 0x57, 0x7e, 0xaa, 0x0b, - 0x0c, 0x6b, 0x09, 0x4a, 0x55, 0xaf, 0xbc, 0x88, 0xab, 0x5a, 0xc8, 0x41, 0x6a, 0x00, 0x28, 0x8a, 0x0c, 0x63, 0xc8, 0x41, 0x55, 0xfc, 0xaa, 0xfa, 0xaa, 0x5a, 0x08, 0x42, 0x75, 0xab, 0x0b, 0xef, - 0x8a, 0x52, 0xc8, 0x39, 0x55, 0xa8, 0xe8, 0xeb, 0x8a, 0x52, 0xc8, 0x39, 0xff, 0x6a, 0x0e, 0x8a, 0x6a, 0x52, 0xa8, 0x39, 0xff, 0x5d, 0x0a, 0x20, 0x8b, 0x5a, 0xe8, 0x41, 0xcf, 0xd9, 0xea, 0xae, - 0xab, 0x62, 0x28, 0x4a, 0x2d, 0xa5, 0xfd, 0xbf, 0xca, 0x62, 0x08, 0x42, 0x8a, 0xe0, 0x7f, 0x7e, 0x8a, 0x5a, 0xc8, 0x39, 0xa0, 0xfe, 0xff, 0x57, 0xaa, 0x5a, 0xc8, 0x39, 0xa0, 0x7f, 0xff, 0x8f, - 0x79, 0xce, 0x9a, 0xc6, 0xaa, 0xf2, 0xaa, 0xea, 0x99, 0xce, 0x7a, 0xc6, 0xfe, 0xfe, 0xfe, 0xff, 0x9a, 0xce, 0x79, 0xc6, 0xff, 0xfe, 0xeb, 0xaa, 0x9a, 0xce, 0x79, 0xc6, 0xfb, 0xff, 0xff, 0xaa, - 0x9a, 0xce, 0x79, 0xc6, 0xff, 0xff, 0xff, 0xad, 0x9a, 0xce, 0x59, 0xc6, 0xfb, 0xba, 0xaa, 0xaa, 0x79, 0xce, 0x9a, 0xc6, 0xae, 0x2e, 0xba, 0xaa, 0x9a, 0xce, 0x79, 0xc6, 0x77, 0xff, 0xfa, 0xef, - 0x9a, 0xce, 0x79, 0xc6, 0x7f, 0xfb, 0xef, 0xaa, 0x9a, 0xce, 0x79, 0xc6, 0x5d, 0xff, 0xfe, 0xee, 0x7a, 0xce, 0x99, 0xc6, 0x2b, 0x2f, 0xaa, 0xfa, 0x9a, 0xce, 0x79, 0xc6, 0xf7, 0xff, 0xaf, 0xea, - 0x59, 0xce, 0x9a, 0xc6, 0xa2, 0xbb, 0xff, 0xfe, 0x9a, 0xce, 0x79, 0xc6, 0xd5, 0xd5, 0xfe, 0xff, 0x9a, 0xce, 0x59, 0xc6, 0xab, 0xaa, 0xbf, 0xae, 0x9a, 0xce, 0x79, 0xc6, 0xbf, 0xbf, 0xff, 0xaa, - 0x9a, 0xce, 0x79, 0xc6, 0xea, 0xfb, 0xff, 0xea, 0x9a, 0xce, 0x79, 0xc6, 0xaa, 0xfe, 0xab, 0xef, 0x9a, 0xce, 0x79, 0xc6, 0xab, 0xea, 0xea, 0x82, 0x99, 0xce, 0x7a, 0xc6, 0xfb, 0xfb, 0xfa, 0xea, - 0x9a, 0xce, 0x79, 0xc6, 0x2a, 0xbb, 0xba, 0xaf, 0x79, 0xce, 0x9a, 0xc6, 0xa0, 0x2b, 0xea, 0xfe, 0x9a, 0xce, 0x79, 0xc6, 0x82, 0xfa, 0xaa, 0xaa, 0x9a, 0xce, 0x79, 0xc6, 0x2a, 0xab, 0xaa, 0xea, - 0x99, 0xce, 0x7a, 0xc6, 0xa2, 0xbf, 0xaa, 0xaa, 0x7a, 0xce, 0x99, 0xc6, 0xae, 0x2e, 0xbe, 0xba, 0x99, 0xce, 0x7a, 0xc6, 0xea, 0xfa, 0xfa, 0xfa, 0x9a, 0xce, 0x79, 0xc6, 0xaa, 0xaa, 0xeb, 0xff, - 0x9a, 0xce, 0x79, 0xc6, 0xaa, 0xea, 0xfe, 0xfb, 0x9a, 0xce, 0x59, 0xc6, 0xa2, 0xee, 0xeb, 0xaa, 0x1b, 0xdf, 0xc4, 0x51, 0x70, 0x40, 0xc0, 0x80, 0x87, 0x6a, 0x84, 0x59, 0xf5, 0xff, 0xfe, 0xe8, - 0x26, 0x6a, 0x64, 0x51, 0x76, 0xff, 0xba, 0x2a, 0x26, 0x6a, 0x84, 0x51, 0xf7, 0xd7, 0xf7, 0x80, 0xe5, 0x61, 0x64, 0x51, 0x3f, 0xb7, 0xbf, 0xbf, 0x46, 0x72, 0x84, 0x59, 0x7e, 0x5f, 0xff, 0x2a, - 0x25, 0x6a, 0xa4, 0x61, 0xad, 0x77, 0xbb, 0xa0, 0x04, 0x6a, 0xa5, 0x61, 0xe0, 0xeb, 0x7e, 0xa0, 0x06, 0x6a, 0xa4, 0x59, 0x2f, 0xce, 0xeb, 0xb6, 0x45, 0x72, 0xa4, 0x61, 0xfb, 0xaf, 0x0a, 0xad, - 0x46, 0x72, 0xc4, 0x69, 0xf7, 0xa3, 0xaa, 0xb6, 0x26, 0x72, 0xe4, 0x61, 0x0f, 0xab, 0xff, 0xfe, 0x66, 0x72, 0xc4, 0x61, 0xa2, 0xbf, 0xeb, 0x5f, 0xca, 0x72, 0xc5, 0x69, 0x2a, 0xfa, 0xff, 0xd5, - 0xdb, 0xd6, 0x09, 0x5a, 0x00, 0x00, 0x03, 0x01, 0x9a, 0xce, 0x79, 0xce, 0x8a, 0xcf, 0xef, 0x02, 0x9a, 0xce, 0x79, 0xce, 0xae, 0x0f, 0x8b, 0x82, 0xb9, 0xd6, 0x7a, 0xc6, 0xff, 0xfe, 0xfa, 0xff, - 0x99, 0xce, 0x7a, 0xce, 0x2a, 0x0b, 0x80, 0xa0, 0x99, 0xd6, 0x7a, 0xce, 0xf7, 0xaf, 0xff, 0xff, 0x99, 0xd6, 0x7a, 0xc6, 0xbf, 0xaf, 0xee, 0xef, 0x9a, 0xd6, 0x79, 0xc6, 0xfe, 0xea, 0xea, 0xab, - 0x9a, 0xce, 0x79, 0xc6, 0xfe, 0xaa, 0xaa, 0xaa, 0x9a, 0xce, 0x59, 0xc6, 0xff, 0xea, 0xa2, 0x80, 0x9a, 0xce, 0x79, 0xc6, 0x77, 0x5f, 0xfb, 0xaa, 0x9a, 0xce, 0x59, 0xc6, 0xaf, 0xff, 0xef, 0xea, - 0x7a, 0xce, 0x59, 0xc6, 0xaf, 0xff, 0xfe, 0xeb, 0x9a, 0xce, 0x59, 0xbe, 0xfa, 0xea, 0xff, 0xff, 0x59, 0xce, 0x7a, 0xc6, 0xf5, 0xc7, 0x75, 0x5e, 0x9a, 0xce, 0x59, 0xc6, 0x7f, 0xfb, 0x57, 0xf5, - 0x79, 0xc6, 0x5a, 0xc6, 0x8f, 0x93, 0xff, 0xe8, 0x7a, 0xce, 0x59, 0xbe, 0xab, 0xaa, 0xab, 0xfa, 0x7a, 0xce, 0x59, 0xc6, 0xff, 0xff, 0x2b, 0x75, 0x9a, 0xce, 0x59, 0xc6, 0xff, 0xff, 0xae, 0xbf, - 0x9a, 0xce, 0x59, 0xc6, 0xfa, 0xff, 0x82, 0xff, 0x9a, 0xce, 0x59, 0xc6, 0xaa, 0xff, 0xba, 0xba, 0x9a, 0xce, 0x59, 0xc6, 0xea, 0xef, 0xfe, 0xba, 0x7a, 0xce, 0x99, 0xc6, 0xaa, 0x6a, 0xab, 0xab, - 0x59, 0xce, 0x9a, 0xc6, 0xaa, 0xaa, 0xbf, 0xfb, 0x9a, 0xce, 0x59, 0xc6, 0xba, 0xef, 0xff, 0xef, 0xda, 0xde, 0x26, 0x62, 0x50, 0x50, 0x50, 0x5c, 0x46, 0x72, 0x05, 0x6a, 0xf3, 0xb6, 0xd7, 0x9f, - 0x46, 0x6a, 0x05, 0x62, 0xff, 0xba, 0xaf, 0x82, 0x67, 0x72, 0x06, 0x62, 0xd7, 0xea, 0xbf, 0xee, 0x46, 0x72, 0x05, 0x62, 0xaf, 0xa0, 0x2e, 0xaf, 0x66, 0x72, 0x05, 0x6a, 0x2b, 0xe2, 0xfa, 0xb7, - 0x87, 0x7a, 0x66, 0x6a, 0xae, 0xea, 0xaa, 0xfb, 0x66, 0x72, 0xc4, 0x61, 0x5e, 0xfe, 0xb8, 0xea, 0x25, 0x72, 0xc4, 0x69, 0xfd, 0x9f, 0x2c, 0x8a, 0x86, 0x72, 0x05, 0x6a, 0xbd, 0xa9, 0x2f, 0xad, - 0x86, 0x72, 0x25, 0x6a, 0xe8, 0xfe, 0xf7, 0x5e, 0x66, 0x72, 0x05, 0x6a, 0x0a, 0x80, 0xfa, 0xd9, 0x66, 0x72, 0xc4, 0x61, 0x00, 0x88, 0xa8, 0x77, 0xa7, 0x7a, 0x22, 0x41, 0x00, 0x08, 0xfa, 0x5f, - 0x86, 0x72, 0x62, 0x51, 0x00, 0x00, 0xa2, 0x79, 0x86, 0x72, 0x43, 0x51, 0x00, 0x00, 0xe2, 0x57, 0xa7, 0x7a, 0x83, 0x59, 0x2e, 0x2a, 0xfd, 0xdd, 0xad, 0xb4, 0xe4, 0x61, 0x8b, 0x2f, 0xb5, 0xad, - 0x8d, 0xb4, 0x25, 0x6a, 0x80, 0xfe, 0x57, 0xd7, 0x2c, 0xa4, 0x25, 0x6a, 0xaf, 0xff, 0x7f, 0x4a, 0xca, 0xa3, 0x25, 0x6a, 0x2f, 0x5f, 0x55, 0x55, 0x2c, 0xac, 0x04, 0x6a, 0x5c, 0xbd, 0xdd, 0x55, - 0xb1, 0xa4, 0x28, 0x52, 0x53, 0x5c, 0x74, 0xad, 0x39, 0xae, 0x29, 0x4a, 0x55, 0x55, 0x55, 0x2a, 0x1c, 0xcf, 0x29, 0x4a, 0x55, 0x55, 0x55, 0x8a, 0x3d, 0xd7, 0x09, 0x42, 0x55, 0x55, 0x55, 0x80, - 0x3a, 0xb6, 0x09, 0x42, 0x55, 0x55, 0x75, 0xe0, 0xf4, 0x84, 0xe9, 0x41, 0x55, 0x5d, 0xff, 0x20, 0xf1, 0x73, 0x09, 0x4a, 0x55, 0x55, 0xf7, 0xfc, 0xcc, 0x5a, 0x09, 0x42, 0x7f, 0xf5, 0xff, 0xa0, - 0x8b, 0x52, 0x29, 0x4a, 0x5e, 0xfe, 0xf5, 0xd8, 0x8b, 0x52, 0x29, 0x4a, 0xcd, 0xca, 0xb2, 0x30, 0xcb, 0x62, 0x09, 0x4a, 0xf5, 0x5d, 0x02, 0x2a, 0xeb, 0x62, 0x49, 0x52, 0xdd, 0xd5, 0xee, 0xa0, - 0xec, 0x62, 0x6a, 0x52, 0x87, 0xdf, 0x5e, 0xbf, 0xcb, 0x62, 0x4a, 0x52, 0xa2, 0xe9, 0x02, 0xea, 0xec, 0x6a, 0x4a, 0x52, 0xbf, 0xa8, 0x76, 0xbe, 0x2d, 0x6b, 0x49, 0x52, 0xff, 0xdf, 0xd3, 0xd5, - 0xaa, 0x5a, 0x29, 0x4a, 0xeb, 0x76, 0xf7, 0xa2, 0xab, 0x5a, 0x49, 0x52, 0x0b, 0x2f, 0x26, 0xae, 0xcb, 0x62, 0x4a, 0x4a, 0x2b, 0xd6, 0xfa, 0x9f, 0x0b, 0x63, 0x29, 0x4a, 0xe7, 0x7b, 0x2b, 0xff, - 0xcb, 0x62, 0x29, 0x4a, 0xf2, 0xe5, 0x02, 0xae, 0xec, 0x6a, 0x49, 0x4a, 0xaa, 0xff, 0xac, 0x75, 0xeb, 0x62, 0x29, 0x4a, 0xaa, 0xc8, 0xfe, 0x7f, 0xcb, 0x5a, 0x29, 0x42, 0x20, 0xee, 0x7b, 0xf5, - 0xeb, 0x62, 0x09, 0x42, 0x80, 0xff, 0xfd, 0xb7, 0xab, 0x5a, 0x29, 0x4a, 0xac, 0xfe, 0xe5, 0x82, 0xaa, 0x5a, 0x09, 0x4a, 0xa8, 0xa6, 0xaa, 0xa2, 0xeb, 0x62, 0x49, 0x4a, 0x55, 0xff, 0xbb, 0x2e, - 0xcb, 0x5a, 0x09, 0x42, 0xf7, 0x02, 0xea, 0x80, 0xcb, 0x5a, 0x29, 0x42, 0x75, 0x98, 0x23, 0x22, 0xca, 0x5a, 0x29, 0x42, 0xf5, 0xfa, 0x20, 0x2a, 0xeb, 0x5a, 0xe9, 0x41, 0x5f, 0xbf, 0xaa, 0xa0, - 0xcb, 0x5a, 0x29, 0x4a, 0xf5, 0xbf, 0x88, 0xfa, 0xcb, 0x5a, 0x29, 0x4a, 0x55, 0xae, 0x0a, 0xfb, 0xaa, 0x52, 0x09, 0x42, 0x95, 0xef, 0x2a, 0xbe, 0xcb, 0x5a, 0x09, 0x4a, 0xf0, 0xe7, 0x0b, 0x9e, - 0x9a, 0xce, 0x59, 0xbe, 0xab, 0xff, 0xff, 0xff, 0x9a, 0xc6, 0x59, 0xbe, 0xaa, 0xab, 0xaa, 0xbb, 0x99, 0xce, 0x7a, 0xbe, 0x22, 0xaa, 0xff, 0xd7, 0x9a, 0xce, 0x59, 0xbe, 0xaa, 0xaa, 0xff, 0xdf, - 0x9a, 0xce, 0x79, 0xbe, 0xa2, 0x0a, 0xbf, 0x7d, 0x9a, 0xce, 0x79, 0xbe, 0xa8, 0x00, 0xaa, 0x7f, 0x99, 0xce, 0x7a, 0xbe, 0xaa, 0xaa, 0xab, 0x9f, 0x9a, 0xce, 0x79, 0xc6, 0xaa, 0x22, 0xba, 0xff, - 0x99, 0xce, 0x7a, 0xc6, 0x2a, 0xaa, 0x2a, 0xbf, 0x79, 0xce, 0x9a, 0xc6, 0xa0, 0xb8, 0xad, 0xbb, 0x9a, 0xce, 0x79, 0xc6, 0xea, 0xab, 0x8e, 0xff, 0x7a, 0xce, 0x99, 0xc6, 0x0a, 0xaa, 0xbb, 0xff, - 0x79, 0xce, 0x9a, 0xc6, 0xa2, 0xa8, 0xfe, 0xff, 0x79, 0xce, 0x9a, 0xc6, 0xaa, 0xbf, 0xef, 0xff, 0x9a, 0xce, 0x79, 0xc6, 0xfe, 0xae, 0xaf, 0xaa, 0x9a, 0xce, 0x79, 0xc6, 0xae, 0xab, 0x2a, 0x02, - 0x9a, 0xce, 0x79, 0xc6, 0xfe, 0xaa, 0xa0, 0xaa, 0x9a, 0xd6, 0x79, 0xc6, 0xff, 0xbf, 0xff, 0xae, 0xba, 0xce, 0x79, 0xc6, 0xaf, 0xae, 0xab, 0xaa, 0x9a, 0xd6, 0x79, 0xc6, 0xff, 0xff, 0xfa, 0xaa, - 0x9a, 0xce, 0x79, 0xc6, 0xbe, 0xaa, 0xa2, 0xaa, 0x9a, 0xce, 0x79, 0xc6, 0xaa, 0xaa, 0xaa, 0x22, 0x99, 0xce, 0x7a, 0xc6, 0xaa, 0xaa, 0xaa, 0x80, 0x9a, 0xce, 0x79, 0xc6, 0xb8, 0x8a, 0x82, 0x2a, - 0x7a, 0xce, 0x99, 0xc6, 0xbe, 0xae, 0xca, 0xe3, 0x9a, 0xce, 0x79, 0xc6, 0xea, 0xea, 0xaa, 0xaa, 0x9a, 0xce, 0x79, 0xc6, 0xfa, 0xbe, 0xea, 0x8a, 0x79, 0xce, 0x9a, 0xc6, 0xbe, 0xa3, 0xbf, 0xb9, - 0x7a, 0xce, 0x99, 0xc6, 0xae, 0xea, 0x8a, 0xba, 0x79, 0xce, 0x7a, 0xc6, 0xf2, 0xaa, 0xf0, 0xff, 0xb9, 0xd6, 0xf6, 0xc5, 0x6a, 0xaa, 0x2a, 0xaa, 0xa7, 0x72, 0x04, 0x6a, 0x72, 0x7f, 0x7c, 0x5a, - 0x25, 0x6a, 0xe4, 0x61, 0xb5, 0xb0, 0x20, 0xfc, 0x66, 0x72, 0x05, 0x6a, 0xcd, 0x77, 0x65, 0xd5, 0x25, 0x6a, 0x84, 0x59, 0xde, 0xff, 0x2a, 0x2a, 0x66, 0x7a, 0x05, 0x6a, 0xf5, 0xfd, 0xad, 0x02, - 0x86, 0x72, 0xc3, 0x69, 0x7e, 0x5e, 0xfa, 0xf8, 0x24, 0x72, 0x83, 0x61, 0xfa, 0xaa, 0xf2, 0x70, 0x25, 0x6a, 0xa3, 0x61, 0xdf, 0xe0, 0x8d, 0x89, 0x24, 0x72, 0xa3, 0x61, 0xf7, 0xff, 0xaf, 0x29, - 0x45, 0x7a, 0xc3, 0x61, 0xfd, 0x7f, 0xfb, 0x8a, 0x04, 0x72, 0xa3, 0x61, 0x5f, 0xff, 0x7e, 0x50, 0xe4, 0x69, 0xa2, 0x61, 0xa9, 0xeb, 0x29, 0xab, 0x04, 0x72, 0xa3, 0x61, 0xab, 0xa6, 0xbf, 0xaf, - 0xdb, 0xd6, 0x84, 0x59, 0x0d, 0x05, 0xd5, 0x55, 0xba, 0xd6, 0x09, 0x5a, 0x00, 0x00, 0x00, 0x01, 0x9a, 0xce, 0x79, 0xc6, 0x8a, 0xaa, 0xa8, 0xe9, 0x7a, 0xce, 0x99, 0xc6, 0x88, 0xfe, 0xfe, 0x8b, - 0x9a, 0xce, 0x79, 0xce, 0xeb, 0x2d, 0x0c, 0xeb, 0x9a, 0xd6, 0x79, 0xce, 0xfe, 0xfe, 0xbf, 0xfd, 0x9a, 0xd6, 0x79, 0xc6, 0xab, 0xaf, 0xaa, 0xaf, 0x9a, 0xd6, 0x79, 0xc6, 0xbf, 0xea, 0xaa, 0xba, - 0x9a, 0xce, 0x79, 0xce, 0xa9, 0xa8, 0x02, 0x28, 0x9a, 0xce, 0x79, 0xce, 0x03, 0x0a, 0xa0, 0xc0, 0x9a, 0xce, 0x79, 0xce, 0xb0, 0xbb, 0x83, 0xa2, 0x9a, 0xce, 0x79, 0xc6, 0xe3, 0xaa, 0xaa, 0xaa, - 0x9a, 0xce, 0x79, 0xc6, 0xff, 0xbb, 0xfe, 0xbe, 0x7a, 0xce, 0x59, 0xc6, 0xba, 0xe8, 0xa2, 0x20, 0x79, 0xce, 0x5a, 0xbe, 0xbe, 0xaa, 0xa8, 0x2a, 0x7a, 0xce, 0x59, 0xbe, 0xbe, 0xae, 0x88, 0x88, - 0x79, 0xce, 0x5a, 0xc6, 0x9d, 0xff, 0xe8, 0x2a, 0x9a, 0xce, 0x59, 0xbe, 0xff, 0xfb, 0xaa, 0xaa, 0x7a, 0xce, 0x59, 0xbe, 0xaf, 0xaa, 0xaa, 0xaa, 0x9a, 0xce, 0x59, 0xbe, 0x7f, 0xfa, 0xfe, 0xea, - 0x7a, 0xce, 0x59, 0xbe, 0xff, 0xef, 0xaa, 0xae, 0x7a, 0xce, 0x59, 0xbe, 0xbe, 0xfa, 0xea, 0xaa, 0x9a, 0xce, 0x59, 0xbe, 0xef, 0xff, 0xfe, 0xea, 0x7a, 0xce, 0x59, 0xbe, 0x8e, 0xaa, 0xff, 0xae, - 0x7a, 0xce, 0x59, 0xbe, 0xab, 0xaa, 0xfb, 0xef, 0xba, 0xce, 0x05, 0x62, 0x00, 0x00, 0xc0, 0x70, 0xb8, 0xde, 0xc4, 0x61, 0x54, 0x57, 0x55, 0x55, 0x66, 0x6a, 0xe4, 0x61, 0xab, 0x7c, 0xf6, 0xd6, - 0x46, 0x72, 0x04, 0x6a, 0xab, 0x3d, 0xcd, 0xe9, 0x66, 0x72, 0xc4, 0x61, 0x88, 0xe8, 0xfa, 0x7b, 0x46, 0x6a, 0xc4, 0x61, 0x0a, 0xbe, 0xbf, 0xb5, 0x25, 0x6a, 0xc3, 0x61, 0x20, 0x20, 0xba, 0x5a, - 0x65, 0x72, 0xc4, 0x61, 0x8a, 0xfa, 0xfa, 0x77, 0x25, 0x6a, 0xa3, 0x61, 0x20, 0xa8, 0xfe, 0x5f, 0x25, 0x72, 0x83, 0x59, 0x02, 0x02, 0xfb, 0x57, 0xa7, 0x7a, 0xa4, 0x61, 0xab, 0xff, 0xfd, 0xa3, - 0x45, 0x6a, 0xc3, 0x61, 0x78, 0xfe, 0x7f, 0xaa, 0x45, 0x6a, 0xc4, 0x61, 0xfa, 0xf5, 0x35, 0x3e, 0x66, 0x72, 0xa4, 0x61, 0x7e, 0xfe, 0x3a, 0xf8, 0x86, 0x72, 0x63, 0x59, 0x55, 0xff, 0x8a, 0xca, - 0x86, 0x72, 0x83, 0x59, 0x5d, 0xfd, 0xab, 0x22, 0x6a, 0x8b, 0x63, 0x51, 0x5d, 0x5f, 0xff, 0xe2, 0xcc, 0x93, 0xa3, 0x59, 0x55, 0xbd, 0x03, 0xff, 0x0b, 0xa4, 0xc4, 0x61, 0xeb, 0xf8, 0xfb, 0x5f, - 0x86, 0x72, 0xe4, 0x61, 0xaa, 0x28, 0x7d, 0x7b, 0x6a, 0x8b, 0xc4, 0x61, 0x8f, 0xff, 0xff, 0xf9, 0xab, 0x8b, 0xc4, 0x59, 0xff, 0x5d, 0x57, 0xc8, 0xdb, 0xce, 0x05, 0x5a, 0x55, 0xf5, 0xd5, 0x2d, - 0xba, 0xce, 0x88, 0x5a, 0x01, 0x00, 0x00, 0x00, 0x9a, 0xce, 0x59, 0xbe, 0xbf, 0xaa, 0xea, 0xea, 0x9a, 0xce, 0x59, 0xc6, 0xba, 0xab, 0xdf, 0xff, 0x9a, 0xce, 0x79, 0xc6, 0x8b, 0x02, 0xd5, 0x57, - 0x9a, 0xd6, 0x79, 0xc6, 0xf8, 0xa2, 0xdf, 0x5d, 0x99, 0xce, 0x7a, 0xc6, 0xe8, 0x00, 0xbf, 0x7f, 0xfb, 0xd6, 0x79, 0xc6, 0x4b, 0x7f, 0xff, 0xd5, 0xba, 0xce, 0xee, 0x62, 0x70, 0x80, 0x00, 0x00, - 0xbb, 0xce, 0xce, 0x5a, 0xf5, 0x00, 0x00, 0x00, 0xfb, 0xd6, 0x6c, 0x4a, 0x57, 0x00, 0x00, 0x00, 0xfb, 0xd6, 0x6a, 0x52, 0x55, 0x02, 0x00, 0x00, 0xfb, 0xd6, 0x8a, 0x52, 0x55, 0x30, 0x00, 0x00, - 0x1c, 0xd7, 0x6a, 0x52, 0xd5, 0x20, 0x00, 0x00, 0xfc, 0xd6, 0xab, 0x62, 0x55, 0x00, 0x00, 0x00, 0xfb, 0xd6, 0xac, 0x5a, 0x55, 0xf0, 0x00, 0x00, 0x3c, 0xdf, 0x4a, 0x52, 0x55, 0xd5, 0x00, 0x00, - 0xfb, 0xd6, 0x2a, 0x4a, 0x55, 0x55, 0x00, 0x00, 0x1c, 0xd7, 0x09, 0x42, 0x55, 0x55, 0x00, 0x00, 0xbb, 0xce, 0x2a, 0x4a, 0x55, 0x55, 0xee, 0x00, 0x1c, 0xcf, 0x29, 0x4a, 0x55, 0x55, 0x55, 0x00, - 0xfc, 0xd6, 0x4a, 0x52, 0x55, 0x55, 0x5d, 0x00, 0xbb, 0xce, 0x09, 0x4a, 0x57, 0x55, 0x2a, 0x00, 0xbb, 0xce, 0x08, 0x4a, 0x75, 0x55, 0x02, 0x00, 0xfc, 0xce, 0x4a, 0x4a, 0x55, 0x55, 0x78, 0x00, - 0xfc, 0xce, 0x4a, 0x52, 0x55, 0x55, 0x55, 0x00, 0xdc, 0xce, 0x6a, 0x52, 0x55, 0x55, 0x7f, 0x00, 0xdc, 0xc6, 0x8a, 0x5a, 0x55, 0x55, 0x55, 0x08, 0xdc, 0xce, 0x69, 0x52, 0x55, 0x55, 0x55, 0x20, - 0xdc, 0xce, 0x4a, 0x52, 0x55, 0x55, 0x55, 0x00, 0xdc, 0xc6, 0x49, 0x4a, 0x55, 0x55, 0x55, 0x00, 0xdc, 0xce, 0x29, 0x4a, 0x55, 0x55, 0x55, 0x00, 0xfc, 0xc6, 0x6a, 0x52, 0x55, 0x55, 0x55, 0x00, - 0xfc, 0xc6, 0x6a, 0x52, 0x55, 0x55, 0x55, 0x08, 0xdc, 0xce, 0x6a, 0x52, 0x55, 0x55, 0xbd, 0x00, 0xdc, 0xce, 0xab, 0x52, 0x55, 0x55, 0xff, 0x00, 0xdc, 0xce, 0x8b, 0x52, 0x55, 0x55, 0x0b, 0x00, - 0x9a, 0xce, 0x79, 0xbe, 0xff, 0xff, 0xaa, 0xaa, 0x7a, 0xc6, 0x59, 0xbe, 0x4b, 0x20, 0x00, 0x88, 0x9a, 0xc6, 0x79, 0xbe, 0xd5, 0xfe, 0x38, 0xeb, 0x9a, 0xc6, 0x79, 0xbe, 0x55, 0x7d, 0xe2, 0x0a, - 0x9a, 0xc6, 0x79, 0xbe, 0x55, 0x9f, 0xa2, 0x80, 0x9a, 0xc6, 0x59, 0xbe, 0xaf, 0xfa, 0xaa, 0x8a, 0x9a, 0xc6, 0x59, 0xbe, 0xaa, 0xaf, 0xaa, 0xaa, 0x9a, 0xc6, 0x79, 0xc6, 0xfa, 0x5f, 0xfe, 0xf6, - 0x9a, 0xc6, 0x79, 0xbe, 0xad, 0xd1, 0xec, 0xeb, 0x9a, 0xc6, 0x79, 0xbe, 0xfa, 0xfa, 0xbb, 0xbe, 0x9a, 0xce, 0x79, 0xbe, 0xff, 0xaf, 0xef, 0xbf, 0x9a, 0xce, 0x79, 0xbe, 0xbb, 0xff, 0xff, 0xbf, - 0x9a, 0xce, 0x79, 0xbe, 0xba, 0xaf, 0xfe, 0xaa, 0x9a, 0xce, 0x79, 0xc6, 0xdf, 0x7f, 0xef, 0xef, 0x7a, 0xce, 0x99, 0xc6, 0xeb, 0x7f, 0xfd, 0xff, 0x9a, 0xce, 0x79, 0xc6, 0xa8, 0xbf, 0xef, 0xaa, - 0x9a, 0xce, 0x79, 0xc6, 0xa8, 0xff, 0xba, 0xaa, 0x9a, 0xce, 0x79, 0xc6, 0x02, 0xa2, 0xaa, 0xfa, 0xba, 0xce, 0x79, 0xc6, 0xaa, 0xae, 0xfb, 0xbb, 0x9a, 0xce, 0x79, 0xc6, 0x00, 0xa0, 0xb2, 0xaa, - 0x9a, 0xce, 0x79, 0xc6, 0x28, 0x28, 0xef, 0xaa, 0x9a, 0xce, 0x79, 0xc6, 0x20, 0x8b, 0xaf, 0xfa, 0x9a, 0xce, 0x79, 0xc6, 0x82, 0xaa, 0xae, 0xbf, 0x9a, 0xce, 0x79, 0xc6, 0x22, 0xba, 0xeb, 0xfb, - 0x9a, 0xce, 0x79, 0xc6, 0xaa, 0xaa, 0xaf, 0xfb, 0xba, 0xce, 0x79, 0xc6, 0xba, 0xea, 0xff, 0xfb, 0x7a, 0xce, 0x99, 0xc6, 0xaf, 0xaa, 0xff, 0xff, 0x79, 0xce, 0x9a, 0xc6, 0xde, 0xfb, 0xfe, 0xbf, - 0x9a, 0xce, 0x79, 0xc6, 0xaa, 0xff, 0xba, 0x2a, 0x9a, 0xce, 0x79, 0xc6, 0x77, 0xb7, 0xaa, 0xaa, 0xfa, 0xd6, 0xcb, 0x8b, 0x80, 0x40, 0xc0, 0x00, 0xa6, 0x72, 0xa4, 0x59, 0xaa, 0xe2, 0x75, 0x5c, - 0x45, 0x72, 0x83, 0x59, 0xa0, 0x55, 0xff, 0x4f, 0x25, 0x6a, 0x42, 0x51, 0x2a, 0x8a, 0xef, 0x7a, 0x24, 0x72, 0x43, 0x51, 0x2a, 0x2a, 0x2a, 0x2d, 0x86, 0x7a, 0x03, 0x6a, 0x22, 0xff, 0xde, 0xfd, - 0x44, 0x72, 0x83, 0x61, 0xa0, 0xea, 0xbf, 0x97, 0x24, 0x72, 0x42, 0x59, 0x70, 0xd8, 0xfe, 0x7e, 0xe4, 0x69, 0x63, 0x61, 0xcb, 0xed, 0x8d, 0xf3, 0xe4, 0x69, 0x83, 0x61, 0x3f, 0x09, 0x35, 0x8d, - 0x44, 0x72, 0xc3, 0x69, 0xa2, 0x8a, 0xad, 0xaf, 0x04, 0x72, 0xa2, 0x69, 0xea, 0xdf, 0xea, 0xe8, 0xe4, 0x71, 0xa3, 0x61, 0x7e, 0xae, 0x2a, 0xab, 0x04, 0x72, 0xa3, 0x69, 0x8d, 0xbf, 0x9e, 0xe6, - 0x05, 0x72, 0xc3, 0x69, 0xaa, 0xaa, 0xa2, 0xa9, 0x9b, 0xd6, 0xc5, 0x69, 0x05, 0x15, 0x55, 0x55, 0xbb, 0xce, 0x69, 0x62, 0x00, 0x00, 0x00, 0x01, 0x9a, 0xce, 0x79, 0xc6, 0xf7, 0xff, 0xef, 0xba, - 0x59, 0xce, 0x9a, 0xc6, 0xef, 0xfb, 0xff, 0xff, 0x7a, 0xce, 0x99, 0xc6, 0xab, 0xab, 0xaa, 0x80, 0x9a, 0xce, 0x79, 0xc6, 0xaa, 0xea, 0xba, 0xaa, 0x9a, 0xce, 0x79, 0xc6, 0xaa, 0xab, 0xbe, 0x2a, - 0x9a, 0xce, 0x79, 0xc6, 0xaa, 0xbe, 0xaa, 0xaa, 0x9a, 0xce, 0x79, 0xc6, 0xaa, 0xea, 0xaa, 0x8a, 0x9a, 0xce, 0x79, 0xce, 0xa0, 0x7f, 0xfb, 0x00, 0x9a, 0xce, 0x79, 0xc6, 0xaa, 0xee, 0xef, 0xaa, - 0x7a, 0xce, 0x99, 0xc6, 0xaa, 0xb0, 0xb0, 0xfa, 0x79, 0xce, 0x9a, 0xc6, 0xab, 0xde, 0xaa, 0xea, 0x79, 0xce, 0x9a, 0xc6, 0xae, 0xb6, 0xaa, 0x2f, 0x9a, 0xce, 0x79, 0xc6, 0xfd, 0xf7, 0xff, 0xe7, - 0x9a, 0xce, 0x79, 0xc6, 0xfd, 0xff, 0xff, 0xdf, 0x9a, 0xce, 0x59, 0xc6, 0xfb, 0xbf, 0xba, 0xae, 0x79, 0xce, 0x9a, 0xc6, 0xff, 0xae, 0xfe, 0xba, 0x9a, 0xce, 0x79, 0xc6, 0xff, 0xae, 0xaa, 0xbf, - 0x79, 0xce, 0x9a, 0xc6, 0xef, 0x02, 0xfa, 0xaa, 0x9a, 0xce, 0x79, 0xc6, 0xff, 0xef, 0xaa, 0xbb, 0x9a, 0xce, 0x79, 0xc6, 0xf7, 0xbe, 0xea, 0xbb, 0x9a, 0xce, 0x79, 0xc6, 0x5b, 0xfb, 0xba, 0xfe, - 0xba, 0xd6, 0xe9, 0x72, 0x00, 0x00, 0x00, 0x40, 0xb9, 0xde, 0xa4, 0x59, 0x5c, 0x56, 0x55, 0x55, 0x05, 0x6a, 0x64, 0x51, 0x06, 0xa7, 0xe5, 0x7f, 0x25, 0x6a, 0x84, 0x59, 0x28, 0xae, 0xb7, 0xbf, - 0x46, 0x72, 0xc4, 0x69, 0x0a, 0xcb, 0xeb, 0x7b, 0x25, 0x72, 0xc3, 0x69, 0x7c, 0x76, 0x77, 0x5d, 0x05, 0x6a, 0xa4, 0x61, 0x3e, 0xff, 0xb7, 0x2e, 0x05, 0x6a, 0xa3, 0x61, 0x78, 0xe0, 0x6b, 0xef, - 0x05, 0x6a, 0xa4, 0x61, 0x83, 0x21, 0x8a, 0xbe, 0xe5, 0x71, 0xa3, 0x61, 0xfa, 0x9c, 0x28, 0x22, 0x04, 0x72, 0x63, 0x59, 0x2d, 0x2a, 0xaa, 0xb7, 0x66, 0x72, 0xc4, 0x61, 0xa3, 0x03, 0xf3, 0x7d, - 0xc7, 0x82, 0xe4, 0x69, 0xff, 0xd7, 0xcd, 0x4d, 0xa7, 0x7a, 0xc4, 0x61, 0xf5, 0xfd, 0xd7, 0x54, 0x88, 0x72, 0xa4, 0x61, 0xbe, 0xf7, 0xbf, 0x3f, 0x6a, 0x8b, 0x63, 0x51, 0xbe, 0xff, 0x5f, 0x70, - 0x6a, 0x8b, 0xa4, 0x59, 0xfe, 0x7f, 0xc5, 0xd7, 0xc8, 0x7a, 0xe5, 0x59, 0xda, 0xf3, 0x72, 0x1f, 0xeb, 0x9b, 0x84, 0x51, 0xfd, 0xdf, 0x35, 0x0f, 0x0c, 0x9c, 0x04, 0x5a, 0x33, 0x9a, 0xec, 0x20, - 0xcf, 0xbc, 0xa4, 0x59, 0x5f, 0xd5, 0x8b, 0x00, 0x30, 0xcd, 0x26, 0x62, 0xdd, 0xe2, 0x3a, 0xaf, 0x30, 0xbd, 0x45, 0x72, 0x23, 0xe2, 0x97, 0x27, 0xba, 0xd6, 0x8f, 0xa4, 0x09, 0x01, 0x02, 0x00, - 0x9a, 0xce, 0x79, 0xce, 0xa7, 0x2f, 0x28, 0x0b, 0x9a, 0xce, 0x79, 0xc6, 0xaa, 0x0a, 0x0a, 0x02, 0x9a, 0xd6, 0x79, 0xc6, 0xff, 0xfe, 0xaa, 0xaa, 0x9a, 0xce, 0x79, 0xc6, 0xef, 0xff, 0xaa, 0x80, - 0x9a, 0xce, 0x79, 0xc6, 0xff, 0xbf, 0xaa, 0xaa, 0x9a, 0xce, 0x79, 0xc6, 0xdf, 0x77, 0xba, 0x2a, 0x9a, 0xce, 0x79, 0xc6, 0xd5, 0xff, 0xff, 0xaa, 0x9a, 0xce, 0x79, 0xc6, 0xeb, 0x7d, 0xfd, 0xba, - 0x79, 0xce, 0x9a, 0xc6, 0xfe, 0xea, 0xa2, 0xaa, 0x79, 0xce, 0x9a, 0xc6, 0xe2, 0x2f, 0xef, 0xba, 0x9a, 0xce, 0x59, 0xc6, 0xbe, 0xff, 0xff, 0xab, 0x7a, 0xce, 0x99, 0xc6, 0x08, 0xef, 0xf7, 0xab, - 0x9a, 0xce, 0x79, 0xc6, 0xba, 0xfd, 0x75, 0xd5, 0x99, 0xce, 0x7a, 0xc6, 0xef, 0xfd, 0xd7, 0xdf, 0x79, 0xce, 0x9a, 0xc6, 0xcb, 0xaa, 0x7a, 0xaa, 0x9a, 0xce, 0x79, 0xc6, 0xba, 0xa7, 0xf5, 0x57, - 0x9a, 0xce, 0x79, 0xc6, 0xab, 0xff, 0xf5, 0x55, 0x9a, 0xce, 0x79, 0xc6, 0xaa, 0xee, 0x7b, 0x55, 0x9a, 0xce, 0x79, 0xc6, 0xaa, 0xab, 0xff, 0x57, 0x9a, 0xce, 0x79, 0xc6, 0x8b, 0xf9, 0xfa, 0x55, - 0x9a, 0xce, 0x79, 0xc6, 0x7a, 0xbf, 0x7f, 0x75, 0x9a, 0xce, 0x79, 0xc6, 0xef, 0x7a, 0xdd, 0xff, 0x9a, 0xce, 0x79, 0xc6, 0x5f, 0xf9, 0xff, 0xfe, 0x9a, 0xc6, 0x79, 0xc6, 0xff, 0xb8, 0xaf, 0xb9, - 0x9a, 0xce, 0x79, 0xc6, 0x55, 0x5f, 0xbf, 0xbe, 0x9a, 0xce, 0x59, 0xc6, 0x5f, 0xae, 0xba, 0xaa, 0x9a, 0xce, 0x79, 0xbe, 0xff, 0xae, 0xae, 0xaa, 0x9a, 0xce, 0x59, 0xc6, 0xfd, 0xfe, 0xaa, 0xaa, - 0x9b, 0xce, 0x79, 0xc6, 0x55, 0xfd, 0xdf, 0xef, 0x9a, 0xce, 0x59, 0xc6, 0x76, 0xfb, 0xaa, 0xaa, 0x9a, 0xce, 0x79, 0xc6, 0x7f, 0xdb, 0xef, 0xea, 0x9a, 0xce, 0x59, 0xbe, 0xff, 0xef, 0xea, 0xaa, - 0x9a, 0xce, 0x59, 0xbe, 0xff, 0xee, 0xaa, 0xaa, 0x7a, 0xce, 0x59, 0xc6, 0x5f, 0xff, 0xaa, 0x08, 0x9a, 0xce, 0x59, 0xc6, 0x7d, 0xff, 0xbf, 0x8a, 0x9a, 0xce, 0x59, 0xc6, 0xdf, 0xfe, 0xea, 0x8a, - 0x7a, 0xc6, 0x59, 0xbe, 0x20, 0xbb, 0xbf, 0xfb, 0x7a, 0xc6, 0x59, 0xbe, 0x2e, 0x8a, 0xeb, 0xf7, 0x9a, 0xc6, 0x59, 0xbe, 0xab, 0xff, 0x77, 0xfd, 0x9a, 0xc6, 0x59, 0xbe, 0xea, 0xaf, 0xab, 0xaf, - 0x9a, 0xc6, 0x79, 0xbe, 0xee, 0xad, 0xfa, 0xfb, 0x9a, 0xc6, 0x59, 0xbe, 0xa2, 0xab, 0xfa, 0xba, 0x7a, 0xc6, 0x59, 0xbe, 0x00, 0x02, 0x8b, 0x2a, 0x9a, 0xc6, 0x79, 0xbe, 0xae, 0xfe, 0xeb, 0xbe, - 0x9a, 0xc6, 0x59, 0xbe, 0xea, 0xfb, 0xaa, 0x2a, 0x99, 0xce, 0x7a, 0xc6, 0x55, 0xfd, 0xaa, 0x0a, 0x9a, 0xce, 0x79, 0xc6, 0xff, 0xff, 0xea, 0xf8, 0x9a, 0xce, 0x79, 0xc6, 0xaa, 0xbf, 0xb7, 0xff, - 0x79, 0xce, 0x9a, 0xc6, 0x9f, 0xfa, 0xbb, 0xfa, 0x79, 0xce, 0x9a, 0xc6, 0xbe, 0x7a, 0xef, 0xea, 0x79, 0xce, 0x9a, 0xc6, 0xfe, 0xfe, 0xff, 0xeb, 0xba, 0xce, 0x79, 0xc6, 0xea, 0x7f, 0xff, 0xfe, - 0x9a, 0xce, 0x79, 0xbe, 0xaa, 0xff, 0xff, 0xbe, 0x9a, 0xce, 0x7a, 0xc6, 0xfa, 0xff, 0x77, 0x75, 0x9a, 0xce, 0x7a, 0xbe, 0xaa, 0xba, 0xbf, 0xef, 0x9a, 0xce, 0x79, 0xbe, 0xaa, 0xaa, 0xef, 0xff, - 0x9a, 0xce, 0x79, 0xc6, 0xba, 0xef, 0xbf, 0xab, 0x9a, 0xc6, 0x79, 0xc6, 0xae, 0x0f, 0xeb, 0xe0, 0x9a, 0xce, 0x79, 0xc6, 0xaa, 0x7a, 0xbb, 0xaf, 0xbb, 0xce, 0x79, 0xc6, 0xff, 0xfd, 0xff, 0xbb, - 0x9a, 0xce, 0x79, 0xc6, 0xaa, 0x9e, 0xbe, 0xab, 0x9a, 0xce, 0x7a, 0xc6, 0xae, 0x2a, 0x00, 0x00, 0xba, 0xce, 0x79, 0xce, 0xbe, 0xaa, 0xaa, 0xea, 0xba, 0xce, 0x79, 0xce, 0xaf, 0xba, 0xaa, 0x2a, - 0xba, 0xd6, 0x79, 0xc6, 0xff, 0xef, 0xab, 0xaa, 0x9a, 0xd6, 0x79, 0xc6, 0xeb, 0xbf, 0xee, 0xea, 0xd9, 0xd6, 0xa3, 0x59, 0xc0, 0x40, 0x60, 0x50, 0x44, 0x6a, 0x23, 0x59, 0xf8, 0xfa, 0x7f, 0xff, - 0x04, 0x6a, 0x43, 0x59, 0xea, 0x2f, 0xbd, 0x55, 0xe4, 0x61, 0x42, 0x59, 0xfc, 0xdf, 0xff, 0x7d, 0x65, 0x7a, 0x62, 0x59, 0x2d, 0x0d, 0x09, 0x09, 0x44, 0x7a, 0x62, 0x61, 0xa0, 0xe0, 0xe8, 0x68, - 0xc3, 0x69, 0x42, 0x59, 0x96, 0xce, 0xe9, 0xf2, 0xc3, 0x69, 0x62, 0x61, 0xbd, 0xfb, 0xbc, 0xde, 0xe3, 0x69, 0x82, 0x61, 0x51, 0x61, 0x68, 0x58, 0xe4, 0x69, 0x83, 0x61, 0xae, 0x29, 0xab, 0x39, - 0x25, 0x72, 0xc3, 0x69, 0x2b, 0x9f, 0xbb, 0xba, 0x44, 0x72, 0xa3, 0x69, 0xde, 0x78, 0x78, 0x7e, 0xe4, 0x71, 0xa3, 0x69, 0x93, 0xf5, 0xae, 0xed, 0xc4, 0x71, 0xe3, 0x69, 0x09, 0xf7, 0x7a, 0xae, - 0x24, 0x72, 0xa3, 0x69, 0xad, 0x2f, 0xbf, 0xdf, 0x05, 0x72, 0xe3, 0x69, 0x3b, 0x32, 0xd6, 0xde, 0xdc, 0xd6, 0xe6, 0x61, 0x05, 0x35, 0x15, 0x55, 0xfc, 0xe6, 0x79, 0xce, 0x55, 0x55, 0x77, 0xfc, - 0x9a, 0xd6, 0x79, 0xc6, 0xff, 0xba, 0xaa, 0xaa, 0xba, 0xce, 0x99, 0xce, 0xd5, 0xd6, 0xfd, 0xff, 0xba, 0xd6, 0x99, 0xce, 0x55, 0xdd, 0xbf, 0xff, 0xba, 0xd6, 0x79, 0xce, 0x7f, 0xff, 0xaf, 0xae, - 0xba, 0xd6, 0x99, 0xce, 0x55, 0xd5, 0xfd, 0x7f, 0xba, 0xd6, 0x99, 0xce, 0xd5, 0xd5, 0x5f, 0xff, 0xba, 0xd6, 0x79, 0xce, 0xff, 0xbb, 0xfb, 0xff, 0xba, 0xd6, 0x99, 0xce, 0x55, 0xff, 0xff, 0xff, - 0xba, 0xd6, 0x79, 0xce, 0xff, 0xff, 0xbf, 0xbf, 0xba, 0xd6, 0x99, 0xc6, 0xff, 0xfe, 0xaf, 0xea, 0x9a, 0xd6, 0x79, 0xc6, 0xff, 0xfa, 0xaa, 0xaa, 0x9a, 0xd6, 0x79, 0xc6, 0xff, 0xff, 0xaa, 0xaa, - 0x9a, 0xce, 0x79, 0xc6, 0xbf, 0x00, 0x00, 0x00, 0x9a, 0xd6, 0x79, 0xc6, 0xff, 0xab, 0xaa, 0xaa, 0x9a, 0xce, 0x79, 0xc6, 0xea, 0x00, 0x00, 0x00, 0x9a, 0xce, 0x79, 0xc6, 0xae, 0xa2, 0xa0, 0x80, - 0x79, 0xce, 0x9a, 0xc6, 0xab, 0xae, 0xaf, 0xfa, 0x9a, 0xce, 0x79, 0xc6, 0xef, 0xea, 0x2a, 0x8a, 0x9a, 0xce, 0x79, 0xc6, 0xff, 0x7a, 0xaa, 0xaa, 0xdb, 0xd6, 0xf2, 0xb4, 0xaa, 0x2a, 0x2a, 0x4a, - 0xb9, 0xde, 0x63, 0x51, 0x60, 0x54, 0x56, 0x55, 0x25, 0x72, 0x43, 0x51, 0xf8, 0xaa, 0xb5, 0xef, 0x45, 0x72, 0x43, 0x49, 0x76, 0xe5, 0xe3, 0xe2, 0x05, 0x72, 0x83, 0x51, 0x2e, 0xaf, 0xef, 0xb9, - 0x04, 0x6a, 0x85, 0x51, 0x88, 0xbe, 0xfd, 0x26, 0xe4, 0x61, 0x83, 0x59, 0xbb, 0xbe, 0xea, 0x85, 0x05, 0x6a, 0xa4, 0x59, 0xfe, 0xd5, 0x72, 0xe8, 0x04, 0x6a, 0x63, 0x59, 0xbb, 0x9f, 0xfa, 0x8a, - 0xe4, 0x69, 0x63, 0x61, 0xa8, 0xe8, 0xaa, 0xfd, 0x04, 0x6a, 0x63, 0x59, 0x0b, 0xad, 0xee, 0xef, 0x25, 0x72, 0x83, 0x59, 0xf6, 0xe5, 0x5f, 0x35, 0x4c, 0xb4, 0x84, 0x59, 0x55, 0xd5, 0x2b, 0x28, - 0x6d, 0xb4, 0xe4, 0x61, 0xa5, 0xeb, 0xfe, 0x02, 0x0b, 0xac, 0x26, 0x62, 0x55, 0xab, 0xb8, 0xa0, 0xec, 0x9b, 0xa7, 0x72, 0x3d, 0x83, 0xaa, 0x88, 0x0c, 0x9c, 0x05, 0x62, 0x54, 0x5e, 0xfa, 0xaa, - 0x6d, 0xa4, 0xc5, 0x59, 0xf5, 0xb7, 0x2b, 0x2a, 0xad, 0xb4, 0x29, 0x83, 0x5e, 0xaf, 0x2c, 0x0a, 0xee, 0xbc, 0x28, 0x83, 0x9d, 0x8a, 0xf2, 0xfe, 0x2f, 0xc5, 0x86, 0x7a, 0xaa, 0x2a, 0xe2, 0x5a, - 0x0f, 0xcd, 0x45, 0x72, 0xe0, 0x5c, 0x55, 0x55, 0x6d, 0xb4, 0xa7, 0x7a, 0x2d, 0xad, 0x2b, 0x83, 0xb9, 0xd6, 0x85, 0x82, 0x3d, 0x2f, 0x0b, 0x0a, 0x9a, 0xce, 0x79, 0xce, 0x26, 0x00, 0xa0, 0x00, - 0xba, 0xce, 0x99, 0xce, 0x57, 0x5f, 0xd5, 0xaf, 0xba, 0xce, 0x79, 0xce, 0xbe, 0xbf, 0xea, 0xea, 0xba, 0xce, 0x79, 0xce, 0xff, 0xff, 0xbe, 0xea, 0xba, 0xd6, 0x79, 0xc6, 0xff, 0xff, 0xfe, 0xaa, - 0x9a, 0xce, 0x79, 0xc6, 0xa8, 0xaa, 0xa2, 0x00, 0x9a, 0xce, 0x79, 0xc6, 0xa8, 0xea, 0xea, 0xa2, 0x79, 0xce, 0x9a, 0xc6, 0x0a, 0x22, 0x65, 0xae, 0x9a, 0xce, 0x79, 0xc6, 0xaf, 0xfb, 0x7f, 0xaa, - 0x9a, 0xce, 0x79, 0xc6, 0xaa, 0xbe, 0xae, 0xaa, 0x9a, 0xce, 0x79, 0xc6, 0xff, 0xef, 0xaa, 0xa8, 0x79, 0xce, 0x9a, 0xc6, 0xae, 0x2d, 0x8a, 0xae, 0x9a, 0xce, 0x79, 0xc6, 0xff, 0xfd, 0xdf, 0xaf, - 0x9a, 0xce, 0x79, 0xc6, 0xff, 0x7f, 0xff, 0xfb, 0x7a, 0xce, 0x99, 0xc6, 0xe9, 0xbe, 0xff, 0xab, 0x9a, 0xc6, 0x59, 0xc6, 0xfa, 0xfa, 0xaa, 0xbb, 0x9b, 0xce, 0x59, 0xc6, 0xfb, 0xee, 0xea, 0xfb, - 0x9a, 0xce, 0x79, 0xc6, 0x55, 0x5f, 0x55, 0xdf, 0x9a, 0xce, 0x59, 0xbe, 0xeb, 0xaa, 0xaa, 0xaa, 0x9a, 0xce, 0x59, 0xc6, 0xff, 0xff, 0xba, 0xeb, 0x9a, 0xce, 0x79, 0xc6, 0xf5, 0xbd, 0xf7, 0xff, - 0x9a, 0xce, 0x79, 0xc6, 0xfd, 0xab, 0xaa, 0xa2, 0x79, 0xce, 0x9a, 0xc6, 0xfe, 0xb9, 0x8a, 0xeb, 0x9a, 0xce, 0x79, 0xc6, 0x9e, 0xae, 0x0a, 0xaa, 0x9a, 0xce, 0x79, 0xc6, 0xaf, 0xab, 0x88, 0x00, - 0x9a, 0xce, 0x79, 0xc6, 0xaa, 0xa8, 0xaa, 0xe8, 0x79, 0xce, 0x9a, 0xc6, 0xfb, 0xbb, 0x6a, 0xfa, 0x9a, 0xce, 0x79, 0xc6, 0xab, 0xab, 0xee, 0xea, 0x9a, 0xce, 0x79, 0xc6, 0xfe, 0xaa, 0x2a, 0xae, - 0x9a, 0xce, 0x79, 0xc6, 0xab, 0xaa, 0x0a, 0xbe, 0x79, 0xce, 0x9b, 0xc6, 0xea, 0xea, 0xaa, 0xfa, 0x9a, 0xce, 0x79, 0xc6, 0xa8, 0xa0, 0x22, 0xaa, 0x9a, 0xce, 0x79, 0xc6, 0xee, 0xa8, 0xaa, 0x8a, - 0x9a, 0xce, 0x79, 0xc6, 0xea, 0xba, 0x28, 0xaa, 0x9a, 0xce, 0x79, 0xc6, 0xaa, 0x2a, 0xa8, 0xea, 0x9a, 0xd6, 0x79, 0xc6, 0xff, 0xaa, 0xae, 0xff, 0x9a, 0xce, 0x79, 0xc6, 0xaa, 0xa8, 0x20, 0xa8, - 0x7a, 0xc6, 0x59, 0xbe, 0xfa, 0x5f, 0x55, 0xd5, 0x7b, 0xc6, 0x59, 0xb6, 0xab, 0xea, 0xff, 0xff, 0x9b, 0xc6, 0x59, 0xb6, 0xa3, 0xfe, 0xff, 0xeb, 0x9a, 0xce, 0x59, 0xbe, 0xff, 0x89, 0x0b, 0x0b, - 0x9a, 0xce, 0x79, 0xc6, 0x55, 0xaa, 0x00, 0x0b, 0x9a, 0xd6, 0x79, 0xc6, 0x55, 0xff, 0xfe, 0xfc, 0x9a, 0xce, 0x79, 0xbe, 0x77, 0xfa, 0xe8, 0xf8, 0x7a, 0xc6, 0x59, 0xbe, 0x82, 0xfa, 0xbc, 0xfd, - 0x9a, 0xce, 0x59, 0xbe, 0x2f, 0xf7, 0x57, 0x7f, 0x99, 0xce, 0x5a, 0xbe, 0x00, 0xff, 0x55, 0xd5, 0x9a, 0xce, 0x59, 0xbe, 0xfe, 0xdf, 0x75, 0x5d, 0x7a, 0xc6, 0x59, 0xbe, 0x00, 0xea, 0xab, 0xdd, - 0x9a, 0xc6, 0x59, 0xbe, 0x08, 0xae, 0xad, 0xff, 0x9a, 0xce, 0x79, 0xbe, 0xa8, 0xea, 0xd7, 0xf7, 0x9a, 0xc6, 0x79, 0xbe, 0x00, 0x2a, 0xd5, 0xde, 0x9a, 0xc6, 0x79, 0xbe, 0x80, 0x8a, 0xcd, 0x55, - 0x9b, 0xc6, 0x79, 0xbe, 0xea, 0xfa, 0x76, 0x75, 0x9a, 0xc6, 0x59, 0xbe, 0xaa, 0xab, 0xba, 0xff, 0x9b, 0xc6, 0x59, 0xbe, 0xaa, 0xab, 0xfb, 0xff, 0x9a, 0xc6, 0x59, 0xbe, 0xaa, 0x8a, 0xaa, 0xbf, - 0x7b, 0xc6, 0x99, 0xbe, 0x02, 0x00, 0xe2, 0x2f, 0x9a, 0xce, 0x5a, 0xbe, 0xaa, 0x8a, 0xab, 0xfd, 0x9a, 0xce, 0x7a, 0xbe, 0xaa, 0xba, 0xff, 0x5f, 0x9b, 0xc6, 0x79, 0xbe, 0x2a, 0xaa, 0x8a, 0xb9, - 0x9a, 0xce, 0x7a, 0xc6, 0x2b, 0xab, 0x57, 0x57, 0x9a, 0xce, 0x7a, 0xbe, 0x2a, 0x2a, 0xea, 0xff, 0x9a, 0xce, 0x7a, 0xc6, 0x00, 0x8a, 0xff, 0x55, 0x9a, 0xce, 0x7a, 0xc6, 0x02, 0x2e, 0xab, 0xf7, - 0x9a, 0xce, 0x7a, 0xc6, 0x00, 0x0a, 0xbb, 0x6f, 0xba, 0xce, 0x79, 0xc6, 0xaa, 0xee, 0xff, 0x5f, 0xf9, 0xde, 0xa4, 0x59, 0x50, 0x50, 0x50, 0x58, 0xe4, 0x69, 0x63, 0x61, 0xfa, 0x6a, 0x40, 0x60, - 0xc4, 0x61, 0x43, 0x59, 0xdf, 0xff, 0xdf, 0xcb, 0xe4, 0x69, 0x42, 0x59, 0x57, 0x55, 0x3d, 0xaf, 0x64, 0x7a, 0x83, 0x61, 0x09, 0x8b, 0x0b, 0xaa, 0x24, 0x7a, 0x43, 0x61, 0x78, 0xfe, 0x97, 0x35, - 0xe4, 0x71, 0x42, 0x59, 0xd8, 0xf8, 0x94, 0x3e, 0x05, 0x72, 0x83, 0x61, 0xd7, 0xf7, 0xa6, 0x27, 0xe4, 0x71, 0x62, 0x59, 0x7e, 0xea, 0xf8, 0xb8, 0x04, 0x72, 0x63, 0x61, 0xbd, 0xaf, 0x2a, 0x2a, - 0x24, 0x72, 0xa3, 0x69, 0xeb, 0x6f, 0xac, 0xe8, 0x04, 0x7a, 0xa2, 0x69, 0x7a, 0xfa, 0x72, 0xeb, 0xc4, 0x71, 0x83, 0x69, 0x8a, 0xaa, 0xfe, 0x9b, 0xe4, 0x71, 0x83, 0x69, 0xe8, 0xad, 0xa2, 0xa9, - 0x24, 0x7a, 0x83, 0x69, 0x2f, 0xb5, 0xf5, 0xdf, 0x04, 0x7a, 0xa3, 0x69, 0xe8, 0xfa, 0xfe, 0xd7, 0x26, 0x6a, 0x83, 0x61, 0x00, 0x2b, 0x89, 0x2e, 0xdb, 0xd6, 0x09, 0x62, 0x02, 0x01, 0x01, 0x05, - 0xba, 0xd6, 0x9a, 0xc6, 0xab, 0xbe, 0xef, 0xfd, 0xba, 0xd6, 0x99, 0xce, 0xff, 0xfd, 0x7f, 0x55, 0xba, 0xd6, 0x99, 0xce, 0xff, 0xf7, 0xff, 0x55, 0xba, 0xd6, 0x99, 0xce, 0xff, 0xe7, 0x77, 0xfd, - 0xba, 0xce, 0x99, 0xce, 0xeb, 0xfd, 0xff, 0x8f, 0xba, 0xce, 0x99, 0xce, 0x5d, 0x5f, 0x25, 0x70, 0xba, 0xd6, 0x79, 0xc6, 0xbe, 0xab, 0xea, 0xaa, 0xba, 0xd6, 0x99, 0xce, 0xf7, 0xff, 0xff, 0xff, - 0xba, 0xd6, 0x99, 0xce, 0xbf, 0xff, 0xbf, 0xbf, 0x99, 0xd6, 0xba, 0xce, 0xfd, 0xbf, 0xbe, 0xff, 0xba, 0xd6, 0x99, 0xce, 0xef, 0x9f, 0xff, 0xea, 0xba, 0xd6, 0x99, 0xce, 0xbf, 0xbf, 0xee, 0xff, - 0xba, 0xd6, 0x99, 0xce, 0xef, 0xdb, 0xff, 0x7f, 0x9a, 0xd6, 0xb9, 0xc6, 0xaa, 0xaa, 0xaa, 0xab, 0xba, 0xce, 0x99, 0xce, 0xde, 0xff, 0xab, 0xf5, 0xba, 0xce, 0x99, 0xc6, 0xfa, 0x88, 0xaa, 0xfa, - 0x9a, 0xd6, 0x7a, 0xc6, 0xaa, 0xaa, 0xaf, 0xff, 0xba, 0xce, 0x79, 0xc6, 0xea, 0xa8, 0xae, 0xba, 0xb9, 0xde, 0x9a, 0xce, 0x55, 0x55, 0x55, 0x15, 0xda, 0xde, 0x84, 0x51, 0x40, 0x50, 0x5c, 0x57, - 0xc5, 0x61, 0x63, 0x51, 0x5e, 0xff, 0xef, 0xfb, 0xe4, 0x69, 0x63, 0x59, 0xb5, 0x15, 0x2d, 0x2b, 0x24, 0x7a, 0x42, 0x51, 0x70, 0x78, 0xaa, 0xaa, 0x05, 0x72, 0x43, 0x51, 0x01, 0xa9, 0x7a, 0xe8, - 0x05, 0x72, 0x84, 0x59, 0x0a, 0x23, 0xa9, 0xab, 0x05, 0x72, 0xa3, 0x61, 0x6f, 0xaa, 0xe3, 0xea, 0x04, 0x6a, 0x83, 0x59, 0xfa, 0xae, 0x2f, 0x09, 0x24, 0x72, 0x63, 0x59, 0xea, 0x7a, 0xfa, 0x78, - 0xa4, 0x61, 0x63, 0x51, 0xb7, 0x3f, 0x8f, 0xee, 0xe4, 0x61, 0x63, 0x59, 0xbd, 0xbf, 0x37, 0xa5, 0x0c, 0xac, 0xa3, 0x59, 0xf5, 0x25, 0xad, 0xfd, 0xae, 0xc4, 0x03, 0x72, 0xb8, 0x54, 0x96, 0x35, - 0x6d, 0xb4, 0x45, 0x72, 0x3e, 0xae, 0xc6, 0xc4, 0xeb, 0xa3, 0x4a, 0x93, 0xf8, 0xdf, 0x5f, 0xe9, 0xab, 0x9b, 0x87, 0x7a, 0x80, 0xc8, 0x62, 0x6a, 0xab, 0x93, 0x66, 0x72, 0x9f, 0x3a, 0x17, 0x55, - 0x6d, 0xac, 0x46, 0x6a, 0x2e, 0x02, 0xaa, 0x2d, 0xad, 0xb4, 0x26, 0x6a, 0x80, 0xf8, 0x5e, 0xbe, 0x30, 0xcd, 0x86, 0x72, 0x8d, 0x69, 0xab, 0x7a, 0xef, 0xbc, 0x46, 0x72, 0x56, 0xf5, 0xbd, 0xa0, - 0xec, 0x9b, 0x26, 0x6a, 0xd7, 0xb5, 0xf5, 0x2c, 0x98, 0xde, 0x48, 0x93, 0xf9, 0x7f, 0xbf, 0x2e, 0xba, 0xce, 0x2d, 0xa4, 0x01, 0x02, 0x00, 0x00, 0x9a, 0xce, 0x7a, 0xc6, 0x00, 0xa0, 0xfb, 0xff, - 0x9a, 0xce, 0x7a, 0xc6, 0x08, 0xaa, 0xbe, 0xeb, 0xba, 0xce, 0x9a, 0xc6, 0xaa, 0xb3, 0xff, 0x5d, 0x9a, 0xce, 0x7a, 0xc6, 0x00, 0x00, 0xbc, 0xfe, 0xba, 0xce, 0x7a, 0xc6, 0xaa, 0xab, 0xfb, 0xab, - 0x7a, 0xce, 0xba, 0xc6, 0xbf, 0xaf, 0xfe, 0xae, 0x9b, 0xce, 0x79, 0xc6, 0x80, 0xaa, 0x00, 0x00, 0x9a, 0xce, 0x79, 0xc6, 0x28, 0x8b, 0x02, 0x00, 0xbb, 0xce, 0x99, 0xc6, 0x7f, 0xfe, 0xbf, 0xfa, - 0xba, 0xce, 0x7a, 0xc6, 0xaa, 0xae, 0xaa, 0xab, 0x9a, 0xce, 0x9a, 0xc6, 0x0a, 0x8a, 0xaa, 0xfa, 0x79, 0xce, 0xbb, 0xc6, 0xaa, 0xaa, 0xbe, 0xbe, 0x99, 0xce, 0xba, 0xc6, 0xa8, 0xa0, 0xbe, 0x28, - 0x9a, 0xce, 0x99, 0xc6, 0xdf, 0x8a, 0x00, 0x20, 0xbb, 0xd6, 0x99, 0xc6, 0xff, 0xff, 0xaf, 0xaa, 0xba, 0xce, 0x79, 0xc6, 0x7f, 0xee, 0xa8, 0x00, 0x9a, 0xce, 0x79, 0xc6, 0xf7, 0xa8, 0x00, 0x00, - 0xba, 0xce, 0x7a, 0xc6, 0x75, 0xff, 0xaa, 0xa0, 0xba, 0xce, 0x79, 0xc6, 0xf7, 0xee, 0xaa, 0x20, 0xba, 0xce, 0x99, 0xc6, 0xdd, 0xff, 0xaa, 0x02, 0xba, 0xce, 0x79, 0xc6, 0xd7, 0xfb, 0xa8, 0xa0, - 0x9b, 0xd6, 0x79, 0xc6, 0xff, 0xae, 0xaa, 0x82, 0xba, 0xd6, 0x79, 0xc6, 0xff, 0xbf, 0xba, 0xaa, 0x9a, 0xd6, 0x99, 0xc6, 0xff, 0xef, 0xfa, 0xea, 0xba, 0xd6, 0x99, 0xc6, 0xff, 0xff, 0xff, 0xfa, - 0xba, 0xd6, 0x79, 0xc6, 0xff, 0xae, 0xae, 0xab, 0xba, 0xce, 0x99, 0xc6, 0xff, 0xbb, 0xb8, 0xaa, 0xba, 0xce, 0x99, 0xc6, 0xff, 0xfa, 0xaf, 0xaa, 0xba, 0xd6, 0x79, 0xc6, 0xff, 0xff, 0xea, 0xae, - 0xba, 0xce, 0x79, 0xc6, 0xff, 0xff, 0xea, 0xae, 0x9a, 0xce, 0x7a, 0xc6, 0xea, 0xeb, 0x00, 0x00, 0x9a, 0xce, 0x79, 0xc6, 0x2b, 0x22, 0x28, 0x80, 0x79, 0xce, 0x9a, 0xc6, 0xbb, 0xfa, 0xaa, 0xde, - 0x9a, 0xce, 0x7a, 0xc6, 0xab, 0xaa, 0xaa, 0x0a, 0x79, 0xce, 0x9a, 0xc6, 0xa7, 0xaf, 0x3a, 0xaf, 0x9a, 0xce, 0x79, 0xce, 0x20, 0xca, 0xf0, 0x00, 0x9a, 0xce, 0x79, 0xce, 0x0a, 0x00, 0x03, 0x00, - 0x5a, 0xb6, 0x1a, 0xae, 0x02, 0xaa, 0xab, 0xff, 0x5a, 0xbe, 0x1a, 0xae, 0x00, 0x02, 0xff, 0xff, 0x7b, 0xc6, 0x39, 0xae, 0x00, 0xaa, 0xff, 0xd5, 0x7a, 0xc6, 0x3a, 0xb6, 0x00, 0xaa, 0xf5, 0x55, - 0x7a, 0xce, 0x59, 0xb6, 0x02, 0xea, 0xff, 0xd5, 0x99, 0xce, 0x5a, 0xbe, 0xfa, 0x5d, 0x5f, 0x5d, 0x7b, 0xc6, 0x59, 0xb6, 0xb8, 0xff, 0xba, 0xbf, 0x7a, 0xbe, 0x59, 0xb6, 0x2e, 0x8e, 0xab, 0x0a, - 0x7b, 0xc6, 0x59, 0xb6, 0xfa, 0xef, 0xbb, 0xea, 0x7a, 0xbe, 0x5a, 0xbe, 0x09, 0x26, 0xe0, 0x28, 0x7b, 0xc6, 0x59, 0xbe, 0xfa, 0x7d, 0xff, 0x2a, 0x7b, 0xc6, 0x5a, 0xb6, 0xba, 0xee, 0xaa, 0xa2, - 0x9b, 0xc6, 0x59, 0xbe, 0xfe, 0xff, 0xbf, 0xaf, 0x9a, 0xc6, 0x5a, 0xbe, 0xfa, 0xff, 0xfb, 0xaa, 0x9a, 0xc6, 0x5a, 0xbe, 0xab, 0xff, 0xfa, 0xaa, 0x9a, 0xc6, 0x59, 0xbe, 0xcb, 0xbe, 0xeb, 0xaf, - 0x59, 0xc6, 0x7a, 0xbe, 0xbf, 0xbf, 0x7d, 0x75, 0x7a, 0xc6, 0x59, 0xbe, 0x7a, 0xa2, 0xa8, 0xa8, 0x9b, 0xc6, 0x59, 0xbe, 0xff, 0xff, 0xae, 0xaa, 0x9b, 0xc6, 0x59, 0xbe, 0xaf, 0xbf, 0xeb, 0xa8, - 0x9b, 0xc6, 0x59, 0xbe, 0xea, 0xeb, 0xef, 0xab, 0x9a, 0xc6, 0x59, 0xbe, 0xba, 0xaf, 0xeb, 0xba, 0x9b, 0xc6, 0x79, 0xbe, 0xef, 0xab, 0xbd, 0xbe, 0x9b, 0xc6, 0x7a, 0xbe, 0xff, 0xab, 0xaa, 0xe2, - 0x9b, 0xce, 0x7a, 0xbe, 0xff, 0xff, 0xbf, 0xbb, 0x9b, 0xc6, 0x7a, 0xbe, 0xd6, 0xfa, 0xa2, 0xa8, 0x9b, 0xc6, 0x7a, 0xbe, 0xfe, 0xeb, 0xa8, 0x2a, 0x9a, 0xc6, 0x7a, 0xbe, 0xb7, 0xfd, 0xaa, 0x0a, - 0x9a, 0xc6, 0x7a, 0xbe, 0xeb, 0xfd, 0xaa, 0xa8, 0x9a, 0xc6, 0x5a, 0xbe, 0xbe, 0xab, 0xaa, 0xaa, 0x98, 0xce, 0x25, 0x6a, 0x58, 0x58, 0x58, 0x50, 0x46, 0x72, 0xa3, 0x61, 0x7e, 0x7e, 0xe8, 0xe8, - 0xa4, 0x69, 0x63, 0x59, 0xcb, 0x8e, 0x98, 0xb4, 0xc4, 0x69, 0x63, 0x61, 0x2e, 0x82, 0xa2, 0x21, 0x25, 0x7a, 0x42, 0x51, 0xe2, 0x73, 0xfa, 0x7a, 0x45, 0x7a, 0x42, 0x59, 0xad, 0x8b, 0x83, 0xea, - 0xe4, 0x69, 0x43, 0x61, 0x26, 0xb7, 0x57, 0xd5, 0x24, 0x7a, 0x82, 0x61, 0x2f, 0x0d, 0x0d, 0x83, 0x44, 0x72, 0x62, 0x61, 0xbc, 0xde, 0xf6, 0x77, 0x04, 0x72, 0x82, 0x61, 0x2a, 0x0f, 0x8d, 0xe5, - 0x24, 0x72, 0xc3, 0x69, 0xba, 0x7f, 0xde, 0xa8, 0x24, 0x72, 0xa3, 0x69, 0x7b, 0x78, 0xaa, 0xaa, 0x24, 0x7a, 0x83, 0x69, 0xf7, 0x7f, 0xde, 0xe8, 0xe4, 0x71, 0x83, 0x69, 0x0b, 0xad, 0x8b, 0xed, - 0xe4, 0x69, 0xa3, 0x61, 0x2a, 0x2a, 0xb7, 0x2a, 0x25, 0x72, 0xc3, 0x69, 0xf5, 0xaa, 0xea, 0xce, 0x05, 0x72, 0xa4, 0x61, 0xa8, 0xbe, 0xae, 0xbe, 0xfc, 0xde, 0xe6, 0x61, 0x05, 0x25, 0x15, 0x15, - 0x9a, 0xce, 0x79, 0xc6, 0x2a, 0xaa, 0x09, 0x00, 0xba, 0xce, 0x7a, 0xc6, 0xaa, 0xff, 0xea, 0xaa, 0xba, 0xd6, 0x79, 0xc6, 0xfa, 0xff, 0xef, 0xaa, 0xba, 0xd6, 0x7a, 0xc6, 0xff, 0xff, 0xeb, 0xaa, - 0xba, 0xce, 0x99, 0xc6, 0x8a, 0xff, 0xe3, 0xa0, 0xbb, 0xd6, 0x99, 0xc6, 0xbf, 0xff, 0xbb, 0xbb, 0xba, 0xd6, 0x99, 0xc6, 0xfe, 0xfe, 0xff, 0xfa, 0x9a, 0xd6, 0xb9, 0xc6, 0xba, 0xff, 0xab, 0xaa, - 0xba, 0xd6, 0x99, 0xce, 0xff, 0xff, 0xbf, 0xbf, 0xbb, 0xd6, 0x99, 0xce, 0xea, 0xfb, 0xab, 0xaa, 0xba, 0xd6, 0x99, 0xce, 0xea, 0xff, 0xfa, 0xbf, 0xba, 0xd6, 0x99, 0xce, 0xdf, 0xf7, 0xfb, 0xaa, - 0xba, 0xd6, 0x9a, 0xc6, 0xff, 0xea, 0xaa, 0xaa, 0xba, 0xd6, 0x9a, 0xc6, 0xdf, 0xdf, 0xfa, 0xea, 0xbb, 0xd6, 0x9a, 0xc6, 0xfd, 0xff, 0xfe, 0xaa, 0xba, 0xce, 0x9a, 0xc6, 0x77, 0xdf, 0xfe, 0xe8, - 0xba, 0xce, 0x7a, 0xc6, 0xff, 0xff, 0xfa, 0xaa, 0xba, 0xd6, 0x79, 0xc6, 0xff, 0xdf, 0xff, 0x3b, 0xba, 0xd6, 0xc5, 0x59, 0x80, 0x60, 0x50, 0x5c, 0x05, 0x62, 0x24, 0x49, 0xa8, 0xa8, 0x7e, 0x7f, - 0xc4, 0x69, 0x23, 0x49, 0x2e, 0x0a, 0x55, 0x77, 0xe4, 0x71, 0x43, 0x49, 0x2a, 0xe2, 0xd5, 0x95, 0x25, 0x72, 0xa3, 0x61, 0xf0, 0xfa, 0x7e, 0xfe, 0x05, 0x72, 0x63, 0x51, 0xe8, 0xea, 0xaa, 0x9e, - 0x04, 0x6a, 0x63, 0x51, 0x0b, 0x09, 0xae, 0x8a, 0x05, 0x72, 0x83, 0x61, 0xa0, 0xf0, 0x6a, 0xfa, 0x65, 0x7a, 0x83, 0x59, 0xb9, 0xa1, 0xe9, 0xad, 0xe4, 0x69, 0x84, 0x59, 0x5a, 0xea, 0xe2, 0xa8, - 0xc5, 0x69, 0x43, 0x51, 0xf6, 0xf7, 0xbe, 0x0e, 0xe5, 0x69, 0x63, 0x51, 0xef, 0xf5, 0x2f, 0xa2, 0xa6, 0x82, 0xc4, 0x61, 0x7d, 0xf5, 0xfd, 0x2b, 0x2f, 0xcd, 0x87, 0x7a, 0x89, 0x8b, 0xab, 0xeb, - 0xef, 0xc4, 0x04, 0x6a, 0xa6, 0xce, 0xcf, 0x8f, 0x0c, 0xac, 0x29, 0x8b, 0xe9, 0xfd, 0xeb, 0x83, 0xcb, 0xa3, 0xa7, 0x7a, 0x6b, 0x83, 0x02, 0x82, 0xae, 0xb4, 0x46, 0x6a, 0xd5, 0xb5, 0x2d, 0xab, - 0xae, 0xbc, 0x29, 0x8b, 0xeb, 0x6a, 0xf8, 0xff, 0x8e, 0xbc, 0x49, 0x8b, 0xa5, 0xad, 0x8b, 0x82, 0xef, 0xbc, 0x8b, 0x9b, 0xbf, 0x8b, 0xea, 0x56, 0x92, 0xd5, 0xa7, 0x7a, 0xde, 0xa7, 0x2d, 0x8f, - 0x14, 0xde, 0xa7, 0x7a, 0xfa, 0x9c, 0xad, 0x2a, 0x9a, 0xc6, 0xae, 0xb4, 0x0d, 0x0b, 0x02, 0x00, 0x9b, 0xc6, 0x7a, 0xc6, 0x2a, 0x06, 0x80, 0x80, 0x9b, 0xce, 0x7a, 0xc6, 0xe7, 0xee, 0xbb, 0xfb, - 0xbb, 0xc6, 0x7a, 0xc6, 0xee, 0xff, 0xff, 0xff, 0xbb, 0xce, 0x7a, 0xc6, 0xfe, 0xff, 0xff, 0xaa, 0x7a, 0xce, 0x9b, 0xc6, 0xfd, 0x5d, 0xef, 0xfd, 0xbb, 0xce, 0x7a, 0xc6, 0xaf, 0xfa, 0xef, 0xae, - 0xbb, 0xce, 0x7a, 0xc6, 0xae, 0xaa, 0xba, 0xba, 0x7a, 0xce, 0xbb, 0xc6, 0xfa, 0xeb, 0xee, 0xef, 0xba, 0xce, 0x9a, 0xc6, 0xff, 0xbf, 0xbb, 0xff, 0xbb, 0xce, 0x9a, 0xc6, 0xef, 0xfa, 0xbe, 0xbf, - 0xbb, 0xce, 0x7a, 0xc6, 0xff, 0xaa, 0xaa, 0xaa, 0xbb, 0xce, 0x9a, 0xc6, 0xdf, 0xdb, 0xaf, 0xaa, 0xba, 0xce, 0x7a, 0xc6, 0xbf, 0xab, 0xaa, 0x28, 0xba, 0xce, 0x9a, 0xc6, 0xad, 0x2a, 0x00, 0x82, - 0xbb, 0xd6, 0x99, 0xc6, 0xff, 0xaa, 0xaa, 0xaa, 0xbb, 0xd6, 0x99, 0xce, 0xbd, 0xbb, 0xaa, 0xab, 0xbb, 0xd6, 0x99, 0xce, 0xaf, 0xba, 0xea, 0xff, 0xbb, 0xd6, 0x99, 0xce, 0xff, 0xaa, 0xff, 0x5f, - 0xbb, 0xd6, 0x9a, 0xce, 0xef, 0xfb, 0xfe, 0x55, 0xba, 0xce, 0x99, 0xce, 0xdf, 0xeb, 0xea, 0xfb, 0xba, 0xd6, 0x79, 0xc6, 0xaa, 0xaa, 0xaa, 0xeb, 0xba, 0xd6, 0x99, 0xc6, 0xfa, 0xbf, 0xff, 0xff, - 0xbb, 0xce, 0x99, 0xce, 0xd6, 0x7f, 0xef, 0xbe, 0xba, 0xce, 0x9a, 0xc6, 0x8a, 0xae, 0xff, 0xaa, 0xba, 0xce, 0x99, 0xc6, 0x82, 0xa8, 0xbb, 0x0e, 0xbb, 0xce, 0x99, 0xce, 0x95, 0xfe, 0xff, 0xfe, - 0xba, 0xd6, 0x79, 0xce, 0xbe, 0xaf, 0xee, 0xaa, 0xba, 0xd6, 0x99, 0xce, 0xf7, 0xdf, 0xff, 0xef, 0xba, 0xce, 0x99, 0xce, 0x5f, 0x57, 0xdf, 0xd8, 0xba, 0xd6, 0x99, 0xce, 0xd5, 0xff, 0xff, 0xf5, - 0x99, 0xd6, 0xba, 0xce, 0xee, 0xbd, 0xe2, 0xff, 0xba, 0xce, 0x7a, 0xce, 0xf7, 0xaa, 0xaa, 0xfe, 0x9a, 0xce, 0x79, 0xc6, 0x00, 0xc0, 0x02, 0x82, 0x9a, 0xce, 0x7a, 0xce, 0xe2, 0x28, 0xde, 0x0a, - 0x9b, 0xce, 0x79, 0xc6, 0xea, 0xaa, 0xaa, 0x8a, 0x7a, 0xce, 0x9a, 0xc6, 0xaa, 0xa7, 0xbe, 0xea, 0x9a, 0xce, 0x79, 0xc6, 0xae, 0xea, 0xaa, 0x8a, 0x7a, 0xce, 0x9a, 0xc6, 0xab, 0x7a, 0xff, 0xaa, - 0x1a, 0xb6, 0x3b, 0xae, 0xdf, 0xbc, 0xff, 0xfb, 0x5b, 0xb6, 0x1a, 0xae, 0xff, 0xbf, 0xab, 0xba, 0x5a, 0xbe, 0x1a, 0xae, 0xef, 0xaf, 0xeb, 0xae, 0x7b, 0xbe, 0x39, 0xae, 0xff, 0xff, 0xab, 0xfa, - 0x7a, 0xbe, 0x5a, 0xb6, 0xfd, 0xbf, 0xbb, 0xad, 0x7a, 0xc6, 0x5a, 0xbe, 0xb5, 0x15, 0x2f, 0x02, 0x9a, 0xc6, 0x5a, 0xbe, 0x7f, 0xaf, 0xaa, 0xea, 0x7b, 0xc6, 0x59, 0xbe, 0xf5, 0x7f, 0xea, 0x7f, - 0x5a, 0xc6, 0x7a, 0xbe, 0xf5, 0xbd, 0x7d, 0xa5, 0x9a, 0xc6, 0x59, 0xbe, 0xfe, 0xba, 0xaa, 0xef, 0x59, 0xc6, 0x9b, 0xbe, 0xff, 0xab, 0xab, 0xaa, 0x9b, 0xc6, 0x5a, 0xbe, 0xea, 0xee, 0xaa, 0xaa, - 0x7a, 0xc6, 0x9a, 0xbe, 0xaa, 0xb0, 0x2c, 0xaa, 0x9a, 0xc6, 0x5a, 0xbe, 0xae, 0xaa, 0xaa, 0xaa, 0x7b, 0xc6, 0x99, 0xbe, 0xaa, 0x8b, 0x2e, 0xbe, 0x9b, 0xce, 0x7a, 0xbe, 0xeb, 0xfb, 0xfe, 0xdf, - 0x9a, 0xc6, 0x7a, 0xbe, 0xaa, 0xab, 0xbe, 0xd7, 0x9a, 0xc6, 0x5a, 0xbe, 0xa2, 0xaa, 0x2a, 0xeb, 0x59, 0xc6, 0x9b, 0xbe, 0xff, 0xff, 0xaf, 0xcf, 0x5a, 0xc6, 0x9b, 0xbe, 0xbf, 0xb7, 0xbe, 0xbf, - 0x5a, 0xc6, 0x9b, 0xbe, 0xf7, 0xbf, 0xea, 0xea, 0x9b, 0xc6, 0x5a, 0xbe, 0xba, 0xee, 0xab, 0xfe, 0x9a, 0xc6, 0x7a, 0xbe, 0xa3, 0xe7, 0x5f, 0xfd, 0x9b, 0xc6, 0x59, 0xbe, 0xaa, 0xbe, 0xfb, 0xaa, - 0x9b, 0xc6, 0x59, 0xbe, 0xa8, 0xbf, 0xff, 0xbe, 0x9b, 0xc6, 0x7a, 0xbe, 0xaa, 0x5f, 0x77, 0x55, 0x9b, 0xc6, 0x7a, 0xbe, 0xba, 0xea, 0x5d, 0x55, 0x7b, 0xc6, 0x79, 0xbe, 0x88, 0xfa, 0xad, 0xff, - 0x9a, 0xc6, 0x5a, 0xbe, 0x2a, 0xff, 0x7f, 0xff, 0x7b, 0xc6, 0x5a, 0xbe, 0x28, 0x2e, 0x7f, 0xfa, 0xfa, 0xd6, 0xe5, 0x59, 0x50, 0x50, 0x50, 0x70, 0x67, 0x72, 0x83, 0x61, 0xfa, 0x7a, 0xf8, 0xf8, - 0xa3, 0x69, 0x42, 0x51, 0xb8, 0xea, 0xf8, 0x5e, 0xa4, 0x61, 0x42, 0x59, 0x0f, 0xd5, 0x97, 0x75, 0xe5, 0x69, 0x42, 0x59, 0x7c, 0x7e, 0x7f, 0xf7, 0x04, 0x7a, 0x02, 0x49, 0xe8, 0xfb, 0x5f, 0xfe, - 0xa3, 0x69, 0x22, 0x51, 0x2b, 0x2d, 0xad, 0x2f, 0xe4, 0x71, 0x42, 0x59, 0xe0, 0xbe, 0xbf, 0x97, 0xe3, 0x69, 0x62, 0x61, 0x8a, 0x6a, 0xaa, 0xba, 0x04, 0x72, 0x82, 0x61, 0xa7, 0x8f, 0xad, 0xad, - 0x24, 0x72, 0xa3, 0x69, 0x2c, 0xff, 0x2d, 0xab, 0x04, 0x72, 0xa3, 0x69, 0xa0, 0xfb, 0xf8, 0x78, 0xe4, 0x71, 0x83, 0x69, 0xc0, 0x2a, 0xe3, 0x52, 0xe4, 0x71, 0x83, 0x61, 0x22, 0xaf, 0xbb, 0xed, - 0x05, 0x72, 0xa3, 0x61, 0x2e, 0xef, 0xff, 0xd7, 0x05, 0x72, 0xc4, 0x69, 0xaa, 0x8b, 0xbd, 0xfd, 0xa3, 0x69, 0xe4, 0x61, 0xe9, 0x6a, 0xe0, 0xd6, 0xd5, 0xac, 0xe5, 0x69, 0x15, 0x55, 0x55, 0x55, - 0xbb, 0xce, 0xd4, 0x9c, 0x00, 0x00, 0x00, 0x01, 0x9a, 0xce, 0x7a, 0xbe, 0x00, 0x02, 0xee, 0x77, 0x9a, 0xce, 0x7a, 0xbe, 0x00, 0x0a, 0xaa, 0xf7, 0x9a, 0xce, 0x7a, 0xbe, 0x00, 0x80, 0xaa, 0xff, - 0xba, 0xce, 0x7a, 0xc6, 0xaa, 0xff, 0xef, 0xd5, 0x9a, 0xce, 0x7a, 0xc6, 0x00, 0xa8, 0xfe, 0xdf, 0xba, 0xce, 0x7a, 0xc6, 0xaa, 0xff, 0xef, 0xdd, 0xba, 0xce, 0x9a, 0xc6, 0xa2, 0xef, 0xff, 0x55, - 0xba, 0xce, 0x7a, 0xc6, 0x0a, 0xea, 0xbf, 0xff, 0xbb, 0xce, 0x9a, 0xc6, 0x20, 0xaa, 0xff, 0xd7, 0xbb, 0xd6, 0x9a, 0xce, 0xfe, 0x7b, 0x55, 0x55, 0xbb, 0xd6, 0x9a, 0xc6, 0xaa, 0xaa, 0xff, 0xd7, - 0xba, 0xce, 0x9a, 0xc6, 0x20, 0x2a, 0x2a, 0xf7, 0xba, 0xd6, 0x9a, 0xc6, 0xaa, 0xba, 0xff, 0x7f, 0xbb, 0xce, 0x99, 0xc6, 0xc2, 0xaa, 0xaa, 0xdf, 0xbb, 0xce, 0x7a, 0xc6, 0xaa, 0xaa, 0xaa, 0xfa, - 0xba, 0xce, 0x99, 0xc6, 0xaa, 0xce, 0x2e, 0xff, 0xda, 0xd6, 0xa4, 0x51, 0x00, 0xc0, 0x70, 0x58, 0x47, 0x6a, 0x64, 0x49, 0xfc, 0xfe, 0xff, 0x75, 0xa4, 0x51, 0x23, 0x49, 0xfe, 0xe0, 0xfe, 0x9e, - 0x84, 0x59, 0x23, 0x49, 0xfa, 0xa2, 0x6a, 0xfe, 0x04, 0x72, 0x23, 0x51, 0xb5, 0x3d, 0x25, 0x2d, 0x05, 0x6a, 0xa4, 0x61, 0xbe, 0xff, 0x17, 0x95, 0x25, 0x72, 0x63, 0x59, 0xb6, 0x2e, 0x2e, 0x2a, - 0x45, 0x72, 0xc4, 0x69, 0xff, 0xfc, 0x7c, 0x7a, 0xe5, 0x69, 0xa4, 0x61, 0xfa, 0x5a, 0x72, 0x7a, 0x25, 0x72, 0xa3, 0x61, 0x29, 0x2b, 0xf9, 0xad, 0xe5, 0x69, 0xa3, 0x61, 0xec, 0x78, 0xa0, 0x80, - 0xe5, 0x71, 0x83, 0x59, 0xff, 0xfe, 0x5e, 0xd8, 0xa4, 0x61, 0x63, 0x51, 0xa8, 0x9f, 0xbe, 0xae, 0xca, 0x9b, 0x84, 0x61, 0xbd, 0xbd, 0x2d, 0x2f, 0x4d, 0xbc, 0x8a, 0x9b, 0xe7, 0xc3, 0x8e, 0xca, - 0xce, 0xbc, 0x04, 0x6a, 0x8c, 0x04, 0x04, 0x8e, 0x2c, 0xac, 0x25, 0x72, 0x82, 0xa2, 0xaa, 0x5c, 0xeb, 0xa3, 0x66, 0x7a, 0x02, 0x08, 0xe8, 0x55, 0x8d, 0xb4, 0x06, 0x6a, 0x02, 0xaa, 0xaf, 0xb5, - 0x6d, 0xb4, 0xe5, 0x69, 0xaa, 0x2b, 0x0a, 0x7a, 0xef, 0xc4, 0xa7, 0x72, 0xaa, 0x82, 0x7a, 0x1b, 0x92, 0xd5, 0x26, 0x6a, 0xaa, 0xaa, 0x8d, 0x00, 0xd9, 0xd6, 0x08, 0x83, 0xfa, 0xaf, 0x0e, 0x01, - 0xbb, 0xce, 0x31, 0xbd, 0x09, 0x02, 0x00, 0x00, 0xba, 0xd6, 0x9a, 0xc6, 0x55, 0x77, 0xba, 0xaa, 0xba, 0xce, 0x7a, 0xc6, 0xff, 0xba, 0x08, 0xaa, 0xbb, 0xce, 0x9a, 0xc6, 0xf5, 0xfe, 0x0a, 0x80, - 0xba, 0xce, 0x9a, 0xc6, 0x7f, 0xae, 0x00, 0x00, 0xbb, 0xd6, 0x99, 0xc6, 0xff, 0xfb, 0xaa, 0xaa, 0xba, 0xce, 0x99, 0xc6, 0xef, 0x2a, 0x00, 0x00, 0xbb, 0xce, 0x99, 0xc6, 0xfa, 0xa0, 0xa2, 0x02, - 0xba, 0xd6, 0x9a, 0xc6, 0xff, 0xfe, 0xfe, 0xaa, 0xba, 0xce, 0x9a, 0xc6, 0xff, 0xef, 0xaa, 0x00, 0xba, 0xce, 0x9a, 0xc6, 0xfb, 0x7b, 0xaa, 0x00, 0xba, 0xce, 0x9a, 0xc6, 0xff, 0xef, 0xaa, 0x02, - 0xbb, 0xce, 0x9a, 0xc6, 0xdb, 0xee, 0xaa, 0x00, 0xbb, 0xd6, 0x9a, 0xc6, 0xbf, 0xff, 0xff, 0xba, 0xba, 0xd6, 0x9a, 0xc6, 0xff, 0xff, 0xff, 0xaa, 0xbb, 0xce, 0x99, 0xce, 0x7f, 0xfd, 0x7e, 0xd6, - 0xbb, 0xce, 0x9a, 0xce, 0x55, 0xde, 0x55, 0xdd, 0xbb, 0xd6, 0x99, 0xc6, 0xba, 0xff, 0xff, 0xfb, 0xbb, 0xce, 0x99, 0xce, 0xef, 0x7f, 0x5b, 0xff, 0xbb, 0xce, 0x9a, 0xc6, 0xaa, 0xfe, 0xfa, 0xaf, - 0xbb, 0xce, 0x9a, 0xce, 0x75, 0x7a, 0x75, 0x5d, 0xba, 0xce, 0x7a, 0xce, 0xaa, 0xea, 0xaa, 0xaa, 0xbb, 0xce, 0x9a, 0xce, 0x57, 0xea, 0xf5, 0x5d, 0xbb, 0xce, 0x99, 0xce, 0x7f, 0xde, 0x7f, 0x7b, - 0xba, 0xce, 0x9a, 0xce, 0xdd, 0x55, 0x75, 0xb5, 0xba, 0xce, 0x99, 0xce, 0x77, 0xfd, 0xdd, 0xee, 0xba, 0xce, 0x99, 0xce, 0x7b, 0x4b, 0xfd, 0xfe, 0xba, 0xce, 0x99, 0xce, 0x7f, 0xff, 0xff, 0x7b, - 0xba, 0xd6, 0x99, 0xce, 0xff, 0x7f, 0xff, 0xdf, 0xba, 0xd6, 0x99, 0xce, 0xff, 0xf5, 0xff, 0xdf, 0xba, 0xce, 0x9a, 0xce, 0xee, 0xe5, 0xff, 0x5a, 0xba, 0xd6, 0x99, 0xce, 0xfd, 0xff, 0xff, 0xbf, - 0xba, 0xd6, 0x99, 0xce, 0x7f, 0xff, 0xfe, 0xfe, 0x9a, 0xd6, 0xb9, 0xce, 0x7b, 0xf6, 0xbf, 0xeb, 0xba, 0xd6, 0x79, 0xc6, 0xfe, 0xfa, 0xaa, 0xaa, 0x9a, 0xce, 0x79, 0xc6, 0xa2, 0xa2, 0x00, 0x00, - 0xba, 0xd6, 0x79, 0xc6, 0xff, 0xff, 0xea, 0xea, 0xba, 0xd6, 0x79, 0xc6, 0xff, 0xff, 0xfb, 0xff, 0xba, 0xce, 0x79, 0xc6, 0xee, 0xee, 0xba, 0xeb, 0x9a, 0xce, 0x79, 0xc6, 0x2a, 0x20, 0x88, 0x00, - 0x5a, 0xae, 0x1a, 0xae, 0xfe, 0xaf, 0xff, 0xff, 0x3b, 0xb6, 0x1a, 0xae, 0xbb, 0xa5, 0xe8, 0xb2, 0x5b, 0xb6, 0x19, 0xae, 0xab, 0xbf, 0xbf, 0xff, 0x5b, 0xbe, 0x3a, 0xae, 0xba, 0xff, 0xfd, 0xff, - 0x7a, 0xbe, 0x39, 0xb6, 0x2b, 0xfd, 0xdf, 0x55, 0x7b, 0xc6, 0x39, 0xb6, 0x02, 0x0a, 0xff, 0xf5, 0x7b, 0xbe, 0x39, 0xb6, 0x00, 0x00, 0x02, 0xbb, 0x7a, 0xbe, 0x39, 0xb6, 0xa0, 0xaa, 0xfa, 0xff, - 0x7b, 0xbe, 0x3a, 0xb6, 0x8a, 0xba, 0xae, 0xf7, 0x7b, 0xbe, 0x59, 0xb6, 0xea, 0xfb, 0xaa, 0xd5, 0x7b, 0xc6, 0x59, 0xb6, 0x8a, 0xf5, 0xdf, 0xdf, 0x7a, 0xc6, 0x5a, 0xb6, 0x00, 0x8f, 0xfd, 0xd5, - 0x7b, 0xc6, 0x5a, 0xb6, 0xa8, 0x2a, 0xaf, 0xf5, 0x7b, 0xc6, 0x59, 0xb6, 0x00, 0xa8, 0xee, 0xf5, 0x9b, 0xc6, 0x59, 0xb6, 0xaa, 0xaa, 0xdf, 0xf5, 0x7b, 0xc6, 0x59, 0xbe, 0x8a, 0xaa, 0x7f, 0x55, - 0x9b, 0xc6, 0x5a, 0xb6, 0xaa, 0x8b, 0xff, 0x7d, 0x9a, 0xc6, 0x5a, 0xb6, 0x2a, 0xaa, 0xeb, 0xfd, 0x7b, 0xc6, 0x59, 0xb6, 0xa8, 0x08, 0xaa, 0xff, 0x9a, 0xc6, 0x5a, 0xbe, 0xaa, 0xab, 0xae, 0xbf, - 0x9b, 0xc6, 0x5a, 0xbe, 0xaa, 0xaa, 0xeb, 0xbb, 0x9b, 0xc6, 0x79, 0xbe, 0xdf, 0xbb, 0xea, 0xab, 0x9a, 0xc6, 0x7a, 0xbe, 0xf7, 0x5f, 0x88, 0xa2, 0x9a, 0xce, 0x7a, 0xbe, 0x55, 0xff, 0xaa, 0xaa, - 0x9b, 0xce, 0x7a, 0xbe, 0x55, 0xff, 0xaa, 0xaa, 0x9a, 0xce, 0x7a, 0xbe, 0x55, 0xab, 0x88, 0x2a, 0x9b, 0xce, 0x7a, 0xc6, 0x55, 0x7f, 0xff, 0x2a, 0x9b, 0xce, 0x7a, 0xbe, 0xff, 0xfe, 0xf7, 0xaa, - 0x9b, 0xc6, 0x7a, 0xbe, 0xab, 0xfb, 0x9a, 0xaa, 0x9b, 0xc6, 0x59, 0xbe, 0x6e, 0xff, 0xee, 0xba, 0xdb, 0xce, 0x67, 0x6a, 0x60, 0x40, 0xc0, 0x80, 0x87, 0x72, 0xc4, 0x69, 0x6a, 0xdc, 0x7a, 0xa2, - 0xc4, 0x71, 0x43, 0x51, 0x5e, 0x7e, 0x5e, 0x5c, 0x63, 0x61, 0x23, 0x51, 0xef, 0xaf, 0xaa, 0x3b, 0xa3, 0x69, 0x43, 0x59, 0xb5, 0xaf, 0xab, 0x02, 0xa3, 0x69, 0x41, 0x51, 0x7c, 0xaa, 0x28, 0x80, - 0xe4, 0x69, 0x63, 0x61, 0x2d, 0xaa, 0xaf, 0x8a, 0xe4, 0x69, 0x43, 0x51, 0x3e, 0xbe, 0x3f, 0x26, 0x04, 0x72, 0x83, 0x61, 0xf7, 0x96, 0x3e, 0xb4, 0x04, 0x72, 0x83, 0x61, 0xad, 0xab, 0xa8, 0xea, - 0x04, 0x72, 0xc3, 0x69, 0xa7, 0xed, 0x75, 0x57, 0x24, 0x72, 0xa3, 0x69, 0xe2, 0x7e, 0x5b, 0xfd, 0xe4, 0x71, 0xa3, 0x61, 0xda, 0x9d, 0xef, 0xa3, 0xe4, 0x71, 0xa3, 0x61, 0xe6, 0xef, 0xaa, 0xbf, - 0xe4, 0x69, 0x83, 0x61, 0xbd, 0x7e, 0xfe, 0xe8, 0xe4, 0x71, 0xa3, 0x69, 0xcb, 0x83, 0x02, 0x09, 0x24, 0x72, 0xc3, 0x69, 0xb5, 0xad, 0xf7, 0x75, 0x05, 0x72, 0xc3, 0x69, 0x20, 0xb0, 0xbc, 0x3d, - 0xdc, 0xce, 0xc7, 0x61, 0x01, 0x0d, 0x05, 0x25, 0x9b, 0xc6, 0x7a, 0xbe, 0xff, 0xbb, 0x2a, 0x08, 0x9b, 0xc6, 0x7a, 0xbe, 0xaf, 0xec, 0x82, 0x00, 0x9b, 0xce, 0x7a, 0xc6, 0x55, 0x55, 0xff, 0xfb, - 0x9b, 0xce, 0x5a, 0xbe, 0x9a, 0xae, 0xaa, 0xaa, 0x9a, 0xce, 0x7a, 0xbe, 0xff, 0xbe, 0xff, 0xaa, 0x9b, 0xce, 0x7a, 0xc6, 0xf5, 0xf7, 0xff, 0xaa, 0x9b, 0xce, 0x7a, 0xbe, 0xfa, 0xff, 0xfe, 0xaa, - 0x9b, 0xc6, 0x7a, 0xc6, 0xae, 0xd6, 0x8b, 0xa8, 0x9b, 0xc6, 0x7a, 0xbe, 0x8a, 0xad, 0x8a, 0x28, 0x9b, 0xc6, 0x7a, 0xc6, 0xeb, 0x78, 0xa8, 0x83, 0x9b, 0xc6, 0x7a, 0xc6, 0x2f, 0x8b, 0xbe, 0xde, - 0x9b, 0xc6, 0x7a, 0xc6, 0x0a, 0xe2, 0xf8, 0xcd, 0x9b, 0xc6, 0x7a, 0xc6, 0x2e, 0x9e, 0xfa, 0x26, 0x1b, 0xd7, 0x7a, 0xc6, 0x55, 0x55, 0x55, 0x2b, 0xdb, 0xce, 0x68, 0x72, 0x00, 0x00, 0x00, 0x78, - 0xfc, 0xd6, 0x64, 0x51, 0x00, 0x00, 0xc0, 0x55, 0x37, 0xce, 0x44, 0x51, 0x54, 0x55, 0x55, 0x55, 0xa5, 0x59, 0x43, 0x49, 0xef, 0x7b, 0xe2, 0xaa, 0xa4, 0x59, 0x43, 0x51, 0x95, 0x3d, 0x6d, 0x62, - 0x64, 0x59, 0x23, 0x49, 0xbf, 0xea, 0xbe, 0x2e, 0x45, 0x7a, 0x43, 0x51, 0xad, 0x2b, 0x8b, 0xc2, 0xe4, 0x69, 0xa3, 0x61, 0x1d, 0x29, 0x21, 0xc9, 0x66, 0x7a, 0xa3, 0x61, 0x9f, 0x3f, 0x3f, 0x26, - 0x25, 0x72, 0xc4, 0x69, 0xa8, 0xfa, 0xeb, 0x6e, 0x05, 0x6a, 0xa4, 0x61, 0xfa, 0xfe, 0x9e, 0xea, 0xe5, 0x69, 0xa4, 0x61, 0x2b, 0x0b, 0xa4, 0xa0, 0x05, 0x72, 0xa4, 0x61, 0xfa, 0x8b, 0xda, 0xa8, - 0x04, 0x6a, 0x83, 0x59, 0x5a, 0xea, 0xab, 0x88, 0x45, 0x72, 0x83, 0x59, 0xd5, 0xf5, 0xb5, 0x3f, 0x6c, 0xb4, 0x87, 0x7a, 0xbd, 0xbf, 0x2e, 0x2f, 0x6d, 0xbc, 0x28, 0x93, 0xea, 0xca, 0x62, 0xf2, - 0x6d, 0xb4, 0x66, 0x72, 0x2f, 0x17, 0x1e, 0xae, 0x6d, 0xac, 0xc5, 0x59, 0xd8, 0xa2, 0x28, 0x38, 0xcf, 0xbc, 0xa4, 0x59, 0x2b, 0xa8, 0xfe, 0xf5, 0x70, 0xd5, 0x84, 0x59, 0x80, 0xf7, 0x57, 0xff, - 0xae, 0xbc, 0x84, 0x51, 0xc0, 0xdf, 0x55, 0xee, 0xfa, 0xe6, 0xe5, 0x61, 0xe9, 0x5f, 0xb5, 0x0b, 0x1b, 0xdf, 0x06, 0x62, 0x5e, 0x2d, 0x00, 0x00, 0xfb, 0xd6, 0x50, 0x94, 0x01, 0x00, 0x00, 0x00, - 0xba, 0xd6, 0x99, 0xce, 0xba, 0xea, 0xfa, 0xfa, 0x99, 0xd6, 0xba, 0xce, 0xda, 0xff, 0x7f, 0xba, 0xba, 0xd6, 0x9a, 0xce, 0x7b, 0xbb, 0xea, 0xaa, 0xba, 0xd6, 0x99, 0xce, 0xaf, 0xba, 0xea, 0xab, - 0xba, 0xd6, 0x99, 0xce, 0xab, 0xaa, 0xae, 0xab, 0xba, 0xd6, 0x99, 0xce, 0xea, 0xaa, 0xab, 0xbb, 0xba, 0xd6, 0x9a, 0xce, 0xab, 0xaa, 0xba, 0xaa, 0x99, 0xd6, 0xbb, 0xce, 0xbe, 0xff, 0xee, 0xbe, - 0x99, 0xd6, 0xba, 0xce, 0xfa, 0xf7, 0xeb, 0xae, 0xbb, 0xd6, 0x99, 0xce, 0xfb, 0xfa, 0xfa, 0xab, 0x99, 0xd6, 0xba, 0xce, 0xfc, 0xea, 0xdf, 0xff, 0x99, 0xd6, 0xbb, 0xce, 0xbb, 0xef, 0xbd, 0xab, - 0x99, 0xd6, 0xba, 0xce, 0xef, 0xfa, 0xff, 0xae, 0x9b, 0xd6, 0xb9, 0xce, 0xff, 0xff, 0xfa, 0xaf, 0xba, 0xd6, 0x99, 0xce, 0xfb, 0xff, 0xaf, 0xfb, 0xbb, 0xd6, 0x99, 0xce, 0xfe, 0xfa, 0x7f, 0xfb, - 0xba, 0xd6, 0x79, 0xce, 0xfa, 0xfa, 0xfb, 0xfa, 0xbb, 0xce, 0x9a, 0xce, 0x5d, 0x95, 0x5d, 0x59, 0xba, 0xd6, 0x79, 0xce, 0xaf, 0xbe, 0xff, 0xff, 0xbb, 0xd6, 0x79, 0xc6, 0xfa, 0xab, 0xaa, 0xbf, - 0xbb, 0xce, 0x99, 0xce, 0xf5, 0xfe, 0xff, 0x7f, 0x9a, 0xd6, 0x99, 0xc6, 0xae, 0xaf, 0xbf, 0xff, 0xba, 0xd6, 0x99, 0xc6, 0xea, 0xaf, 0xbf, 0xff, 0xbb, 0xce, 0x79, 0xce, 0xea, 0xba, 0xff, 0xbf, - 0xba, 0xce, 0x79, 0xce, 0xaf, 0xaf, 0xaa, 0xff, 0xba, 0xce, 0x79, 0xce, 0xab, 0xef, 0xbe, 0xff, 0xba, 0xd6, 0x79, 0xc6, 0xfe, 0xaa, 0xbf, 0xaf, 0x9a, 0xd6, 0x99, 0xc6, 0xaa, 0xeb, 0xfe, 0xfe, - 0x9a, 0xd6, 0xb9, 0xc6, 0xab, 0xba, 0xae, 0xaa, 0xbb, 0xd6, 0x99, 0xce, 0xfd, 0xfb, 0x5f, 0xff, 0xba, 0xd6, 0x99, 0xce, 0xfe, 0xff, 0xff, 0xfd, 0xba, 0xd6, 0x99, 0xce, 0xbf, 0xff, 0xbf, 0xff, - 0x9a, 0xd6, 0xb9, 0xce, 0xeb, 0xfb, 0xff, 0xff, 0x99, 0xd6, 0xba, 0xce, 0xfe, 0xae, 0xff, 0xfd, 0xba, 0xd6, 0x99, 0xce, 0xfa, 0xef, 0xfe, 0xfe, 0x9a, 0xd6, 0xb9, 0xc6, 0xaa, 0xfa, 0xaa, 0xaa, - 0xba, 0xce, 0x9a, 0xce, 0xd5, 0x55, 0x55, 0x56, 0x9a, 0xd6, 0x99, 0xc6, 0xff, 0xea, 0xaa, 0xea, 0x9a, 0xd6, 0x99, 0xc6, 0xff, 0xfa, 0xff, 0xaa, 0x9a, 0xce, 0x79, 0xce, 0x20, 0x02, 0xe0, 0x00, - 0x3a, 0xb6, 0x1a, 0xae, 0xa8, 0xef, 0xae, 0xa8, 0x3a, 0xb6, 0x3a, 0xae, 0xaa, 0x85, 0xc0, 0x0a, 0x5b, 0xbe, 0x39, 0xae, 0xf5, 0xff, 0xbf, 0xfb, 0x5b, 0xbe, 0x19, 0xae, 0xbf, 0xff, 0xaa, 0xab, - 0x5b, 0xbe, 0x39, 0xae, 0xfd, 0xff, 0xaf, 0xaa, 0x5b, 0xbe, 0x19, 0xae, 0xff, 0xaa, 0xae, 0xaa, 0x5b, 0xbe, 0x39, 0xae, 0xbe, 0xaf, 0xaa, 0xab, 0x5b, 0xb6, 0x39, 0xb6, 0xb5, 0x81, 0xff, 0xef, - 0x5b, 0xbe, 0x3a, 0xb6, 0xdd, 0xf7, 0xba, 0xef, 0x5b, 0xbe, 0x3a, 0xb6, 0x5f, 0x6d, 0x2f, 0xab, 0x5b, 0xbe, 0x39, 0xae, 0xfe, 0xbe, 0xaa, 0xaa, 0x5b, 0xbe, 0x3a, 0xae, 0xff, 0xef, 0xaa, 0xaa, - 0x5b, 0xbe, 0x39, 0xb6, 0xf9, 0x7f, 0xbf, 0xfa, 0x5b, 0xbe, 0x39, 0xb6, 0xbe, 0x77, 0x8b, 0xae, 0x5a, 0xbe, 0x3a, 0xb6, 0xff, 0xf7, 0x02, 0xa2, 0x7b, 0xbe, 0x39, 0xb6, 0x7e, 0xfd, 0x8b, 0xba, - 0x7b, 0xbe, 0x3a, 0xb6, 0xff, 0xff, 0xab, 0xaa, 0x5b, 0xbe, 0x3a, 0xb6, 0xab, 0xa9, 0x2a, 0xa8, 0x3a, 0xbe, 0x7a, 0xb6, 0x7a, 0x3a, 0xfe, 0xaa, 0x7b, 0xbe, 0x5a, 0xb6, 0xae, 0x8b, 0x2b, 0x2a, - 0x7b, 0xc6, 0x59, 0xbe, 0x3b, 0xbf, 0xfa, 0xdd, 0x9b, 0xc6, 0x5a, 0xbe, 0xaa, 0x6e, 0xbd, 0xff, 0x7b, 0xc6, 0x59, 0xbe, 0x00, 0xaa, 0xbb, 0xfd, 0x9b, 0xc6, 0x5a, 0xbe, 0x28, 0xba, 0xea, 0xbd, - 0x9a, 0xc6, 0x5a, 0xbe, 0xa0, 0xba, 0xbf, 0xbb, 0x9b, 0xce, 0x7a, 0xc6, 0xbb, 0x5d, 0x55, 0x57, 0x9b, 0xc6, 0x5a, 0xbe, 0x8a, 0xa8, 0xae, 0xbf, 0x7b, 0xce, 0x7a, 0xbe, 0xaa, 0xbb, 0xff, 0xf5, - 0x9b, 0xce, 0x7a, 0xbe, 0xea, 0xff, 0xff, 0xf7, 0x9b, 0xc6, 0x5a, 0xbe, 0xba, 0xee, 0xea, 0xaa, 0xb8, 0xd6, 0x7a, 0xbe, 0x95, 0x35, 0x95, 0xd5, 0x98, 0xd6, 0xc4, 0x61, 0x55, 0x56, 0x54, 0x54, - 0xe4, 0x69, 0x62, 0x59, 0x5c, 0x78, 0xfa, 0xa8, 0xc4, 0x69, 0x42, 0x59, 0x5b, 0x5b, 0xae, 0x08, 0x04, 0x72, 0x63, 0x59, 0xab, 0x2d, 0xbf, 0xee, 0xe4, 0x69, 0x62, 0x61, 0xf7, 0xd6, 0xfa, 0x2b, - 0xe4, 0x69, 0x42, 0x59, 0x8b, 0x60, 0xfa, 0xe2, 0xe4, 0x69, 0xe2, 0x48, 0x2f, 0xad, 0xbe, 0x82, 0xe4, 0x69, 0x42, 0x51, 0x1e, 0xd7, 0xbf, 0x3e, 0x04, 0x72, 0x83, 0x69, 0xfb, 0xaf, 0xad, 0x2f, - 0x04, 0x6a, 0xa3, 0x61, 0xfd, 0xb6, 0xff, 0xaa, 0x04, 0x6a, 0xa3, 0x61, 0x7b, 0xed, 0x5e, 0x70, 0x04, 0x6a, 0x83, 0x61, 0xfd, 0xaa, 0xeb, 0x8e, 0x05, 0x72, 0xa3, 0x61, 0xbf, 0xbb, 0xeb, 0xbb, - 0x04, 0x72, 0xa3, 0x69, 0xfb, 0xfa, 0xab, 0xd6, 0x25, 0x72, 0xa3, 0x61, 0x2d, 0x3d, 0xaf, 0x2f, 0x44, 0x72, 0xa3, 0x69, 0x5b, 0xfa, 0xf0, 0x7e, 0xe4, 0x69, 0x83, 0x61, 0x02, 0x0f, 0x37, 0x2f, - 0xdc, 0xd6, 0x07, 0x6a, 0x25, 0x35, 0x15, 0x95, 0x9a, 0xce, 0x7a, 0xc6, 0xaa, 0x0a, 0x08, 0x0a, 0xba, 0xd6, 0x7a, 0xc6, 0xeb, 0xaa, 0xbe, 0xbf, 0xba, 0xce, 0x99, 0xc6, 0xef, 0x8b, 0xbf, 0xaa, - 0xba, 0xce, 0x7a, 0xce, 0xbe, 0xaa, 0xaa, 0xaa, 0x9a, 0xd6, 0x9a, 0xc6, 0xff, 0xfa, 0xaa, 0xab, 0xba, 0xd6, 0x7a, 0xc6, 0xbf, 0xea, 0xaa, 0xaa, 0x9a, 0xd6, 0x99, 0xc6, 0xff, 0xfe, 0xbe, 0xea, - 0xbb, 0xce, 0x7a, 0xc6, 0xfb, 0xff, 0xaa, 0xaa, 0xba, 0xce, 0x7a, 0xc6, 0xaf, 0xab, 0xaa, 0xaa, 0xba, 0xd6, 0x9a, 0xc6, 0xdf, 0xfd, 0xbf, 0xff, 0xb9, 0xde, 0x9a, 0xce, 0x55, 0x55, 0x55, 0x35, - 0xdb, 0xd6, 0x65, 0x7a, 0x00, 0x80, 0x58, 0x56, 0xda, 0xde, 0x04, 0x72, 0x80, 0x55, 0x55, 0x55, 0x69, 0x8b, 0xe4, 0x69, 0x54, 0x7f, 0xff, 0x77, 0x65, 0x72, 0xe3, 0x69, 0xc1, 0xef, 0xd4, 0xfe, - 0x25, 0x72, 0x43, 0x51, 0xea, 0xf0, 0x7c, 0x57, 0xa4, 0x59, 0x23, 0x51, 0xbe, 0xbe, 0x27, 0x8d, 0xa4, 0x59, 0x03, 0x49, 0xe8, 0xfa, 0xba, 0x9f, 0xa4, 0x59, 0x23, 0x51, 0xd3, 0xba, 0xbf, 0xed, - 0x25, 0x72, 0x43, 0x59, 0xd5, 0xb5, 0x2d, 0x2d, 0x25, 0x72, 0x84, 0x61, 0xc0, 0x72, 0xf2, 0xfe, 0x46, 0x72, 0x83, 0x59, 0x7f, 0x7a, 0x62, 0x62, 0x45, 0x72, 0x43, 0x51, 0x0e, 0xa6, 0xa6, 0xa6, - 0x25, 0x72, 0xe4, 0x69, 0xff, 0x6f, 0x73, 0xfb, 0x25, 0x6a, 0xa4, 0x61, 0xa3, 0x6b, 0xe8, 0xfb, 0x87, 0x72, 0xc4, 0x61, 0xf5, 0x7f, 0x7f, 0xf2, 0x25, 0x6a, 0xc4, 0x61, 0x5a, 0xfa, 0xde, 0x4b, - 0x46, 0x6a, 0xc4, 0x61, 0xff, 0x7f, 0xa8, 0xfa, 0xeb, 0xa3, 0xa4, 0x59, 0xd5, 0x35, 0x3d, 0xbe, 0x4c, 0xb4, 0x29, 0x8b, 0xa9, 0xa8, 0xae, 0xef, 0x2f, 0xcd, 0x85, 0x72, 0xf2, 0x7a, 0x79, 0xfb, - 0x0f, 0xcd, 0xa6, 0x72, 0xef, 0xed, 0x2b, 0x3a, 0xae, 0xbc, 0x28, 0x8b, 0xff, 0xa9, 0x82, 0xa9, 0x32, 0xbd, 0x67, 0x72, 0xd7, 0xa4, 0xb6, 0xa0, 0xfb, 0xd6, 0x66, 0x72, 0x57, 0xf5, 0xff, 0x0a, - 0xfb, 0xd6, 0xa8, 0x7a, 0xbd, 0xb7, 0x02, 0x00, 0xba, 0xd6, 0x12, 0xb5, 0x01, 0x00, 0x00, 0x00, 0x99, 0xd6, 0xba, 0xce, 0xaf, 0xb6, 0xfb, 0xff, 0x99, 0xd6, 0xba, 0xce, 0xbe, 0xfe, 0x7b, 0x7f, - 0xda, 0xd6, 0x99, 0xce, 0xff, 0xbf, 0xff, 0xff, 0xba, 0xd6, 0x9a, 0xce, 0xbf, 0x6a, 0xab, 0xfe, 0xba, 0xd6, 0x99, 0xce, 0xbb, 0xba, 0xfe, 0xab, 0xba, 0xd6, 0x99, 0xce, 0xae, 0xee, 0xfb, 0xbb, - 0x99, 0xd6, 0xba, 0xce, 0xfe, 0xaf, 0xaa, 0xaf, 0xbb, 0xd6, 0x99, 0xce, 0xeb, 0xbf, 0xff, 0xea, 0x99, 0xd6, 0xba, 0xce, 0xab, 0xaa, 0xff, 0xff, 0xba, 0xd6, 0x99, 0xce, 0xae, 0xae, 0xff, 0x7f, - 0x9a, 0xd6, 0xba, 0xce, 0xfe, 0xee, 0xaa, 0xff, 0x99, 0xd6, 0xba, 0xce, 0xfb, 0xab, 0xff, 0xaf, 0x99, 0xd6, 0xbb, 0xce, 0xeb, 0xeb, 0xaa, 0xaf, 0x99, 0xd6, 0xbb, 0xce, 0xbf, 0xaa, 0xaf, 0xbb, - 0x99, 0xd6, 0xba, 0xce, 0xfa, 0xae, 0xfa, 0xbe, 0xbb, 0xd6, 0x99, 0xce, 0xfa, 0xbe, 0xff, 0xff, 0xbb, 0xd6, 0x99, 0xce, 0xbf, 0xbe, 0xba, 0xef, 0x99, 0xd6, 0xba, 0xce, 0xfa, 0xff, 0xab, 0xfa, - 0x9a, 0xd6, 0xba, 0xce, 0xaa, 0xca, 0xfe, 0xaf, 0xba, 0xd6, 0x99, 0xce, 0xfb, 0x7b, 0xff, 0x77, 0xba, 0xd6, 0x7a, 0xce, 0xff, 0xfa, 0xfe, 0xff, 0x9b, 0xd6, 0x99, 0xc6, 0xbb, 0xee, 0xaa, 0xaa, - 0xba, 0xce, 0x99, 0xce, 0x67, 0x7f, 0xdf, 0xf5, 0xba, 0xce, 0x99, 0xc6, 0xfb, 0xe8, 0xae, 0xae, 0xba, 0xce, 0x99, 0xce, 0x5f, 0xef, 0x5d, 0xfc, 0x9a, 0xce, 0x79, 0xce, 0x00, 0x30, 0x20, 0x00, - 0xbb, 0xd6, 0x79, 0xc6, 0xeb, 0xff, 0xae, 0xba, 0xbb, 0xd6, 0x79, 0xc6, 0xfe, 0xfe, 0xfb, 0xfa, 0xbb, 0xce, 0x79, 0xce, 0xeb, 0xef, 0xff, 0xeb, 0xba, 0xce, 0x7a, 0xce, 0xab, 0xbf, 0xaf, 0xef, - 0xba, 0xce, 0x9a, 0xc6, 0xfb, 0xae, 0xaf, 0xa8, 0xba, 0xd6, 0x9a, 0xce, 0x55, 0x75, 0x57, 0xdf, 0x9a, 0xd6, 0xb9, 0xc6, 0xaa, 0xea, 0xba, 0xba, 0xba, 0xd6, 0x99, 0xce, 0xfe, 0xff, 0xf5, 0xfd, - 0xba, 0xd6, 0x99, 0xce, 0xff, 0xff, 0xfd, 0xff, 0xbb, 0xd6, 0x99, 0xce, 0xff, 0xff, 0x77, 0xff, 0xba, 0xd6, 0x99, 0xce, 0xf7, 0xff, 0xbf, 0xfb, 0x9a, 0xd6, 0xb9, 0xce, 0xea, 0xff, 0x7a, 0xbe, - 0xba, 0xd6, 0x99, 0xce, 0x7f, 0x6f, 0xdf, 0xf7, 0xba, 0xce, 0x9a, 0xce, 0x55, 0xa5, 0x55, 0xe7, 0xbb, 0xce, 0x99, 0xce, 0x75, 0xf6, 0xff, 0xff, 0x9a, 0xce, 0x7a, 0xce, 0x20, 0x00, 0xb0, 0x00, - 0x3a, 0xb6, 0x1a, 0xae, 0x00, 0x5f, 0xd5, 0xdf, 0x3b, 0xb6, 0xf9, 0xa5, 0x0a, 0xaa, 0xea, 0xaa, 0x3a, 0xb6, 0x1a, 0xae, 0x00, 0xfa, 0xf7, 0xdd, 0x3b, 0xb6, 0x1a, 0xae, 0x08, 0xfd, 0x75, 0x75, - 0x3b, 0xb6, 0x1a, 0xae, 0x08, 0xae, 0xdf, 0xfa, 0x5b, 0xb6, 0x19, 0xae, 0x2e, 0xff, 0xdf, 0xb7, 0x3b, 0xb6, 0x19, 0xae, 0x02, 0xab, 0xbf, 0xab, 0x5a, 0xbe, 0x1a, 0xae, 0x2a, 0xef, 0x7f, 0xdf, - 0x5a, 0xb6, 0x3a, 0xae, 0xc0, 0xe8, 0xbd, 0xa9, 0x5b, 0xbe, 0x39, 0xae, 0xaa, 0xbb, 0xff, 0xff, 0x5b, 0xbe, 0x39, 0xb6, 0xfc, 0xaf, 0xbf, 0xee, 0x5b, 0xbe, 0x39, 0xb6, 0xbf, 0x9e, 0xbf, 0xff, - 0x5b, 0xb6, 0x3a, 0xb6, 0x6b, 0x79, 0x86, 0xbd, 0x5b, 0xbe, 0x3a, 0xb6, 0xdd, 0xdd, 0xbb, 0xef, 0x7a, 0xbe, 0x3a, 0xb6, 0xbe, 0xef, 0xff, 0xab, 0x7b, 0xbe, 0x5a, 0xb6, 0x5d, 0x5f, 0x5d, 0xae, - 0x7b, 0xbe, 0x5a, 0xb6, 0xb5, 0xbf, 0xbf, 0x02, 0x7b, 0xc6, 0x59, 0xb6, 0xff, 0xff, 0xfb, 0xaa, 0x7b, 0xbe, 0x5a, 0xb6, 0x76, 0xae, 0x2a, 0x8a, 0x7b, 0xc6, 0x59, 0xb6, 0xff, 0xff, 0xaf, 0xaa, - 0x7b, 0xbe, 0x39, 0xb6, 0x0a, 0xad, 0x8a, 0xa2, 0x7b, 0xc6, 0x5a, 0xbe, 0xf7, 0xc3, 0xf7, 0x55, 0x7b, 0xc6, 0x59, 0xbe, 0xec, 0xfa, 0x77, 0x7f, 0x7b, 0xbe, 0x5a, 0xb6, 0x2b, 0xab, 0x6b, 0xfe, - 0x7a, 0xbe, 0x5a, 0xb6, 0x80, 0xeb, 0xbf, 0xab, 0x7b, 0xbe, 0x5a, 0xb6, 0x00, 0x83, 0x8a, 0xda, 0x7b, 0xbe, 0x5a, 0xbe, 0x1c, 0xaa, 0xa3, 0xe6, 0x7b, 0xc6, 0x5a, 0xbe, 0xba, 0xaf, 0xb5, 0x0b, - 0x9b, 0xc6, 0x5a, 0xbe, 0xab, 0xef, 0xbe, 0xae, 0x9b, 0xc6, 0x59, 0xbe, 0xbe, 0xff, 0xee, 0xa8, 0x9a, 0xc6, 0x7a, 0xbe, 0xed, 0xd5, 0xff, 0x8a, 0xfa, 0xd6, 0x46, 0x62, 0x5c, 0x58, 0x50, 0x50, - 0x46, 0x72, 0x83, 0x61, 0x5e, 0x7e, 0xfa, 0xe8, 0xe5, 0x69, 0x64, 0x59, 0x28, 0xaa, 0xa6, 0x00, 0xe4, 0x69, 0x43, 0x59, 0xe0, 0xf8, 0xf8, 0x78, 0xc4, 0x69, 0x42, 0x51, 0x0a, 0x02, 0xab, 0xfd, - 0xe4, 0x71, 0x83, 0x61, 0xea, 0xa0, 0xab, 0x2d, 0x25, 0x72, 0xc4, 0x61, 0xfd, 0x7f, 0x62, 0x42, 0x25, 0x72, 0xa4, 0x61, 0xbf, 0x37, 0xaf, 0x0d, 0x05, 0x72, 0xc4, 0x61, 0x0a, 0x2a, 0xac, 0x68, - 0x05, 0x72, 0xa3, 0x69, 0xf7, 0xfc, 0xdd, 0xa6, 0x04, 0x72, 0xc3, 0x61, 0xeb, 0xff, 0xff, 0xfe, 0xe4, 0x71, 0xa3, 0x69, 0xa3, 0xbf, 0xfc, 0x37, 0xe4, 0x71, 0xa3, 0x61, 0xaa, 0xf8, 0xfa, 0x7e, - 0xe4, 0x71, 0x63, 0x61, 0xa0, 0xaa, 0xfa, 0x5e, 0x65, 0x7a, 0x62, 0x61, 0xaf, 0x2f, 0x2d, 0xa7, 0x25, 0x72, 0x83, 0x61, 0xf8, 0xfc, 0xfe, 0xf6, 0x05, 0x6a, 0xa3, 0x61, 0x3d, 0x35, 0x9d, 0xaf, - 0x4e, 0x7b, 0xc4, 0x61, 0x3d, 0xfd, 0xff, 0x55, 0xfc, 0xde, 0x08, 0x62, 0x00, 0x00, 0x01, 0x25, 0xba, 0xce, 0x79, 0xce, 0xaa, 0xbf, 0xab, 0xab, 0xba, 0xce, 0x99, 0xce, 0xe9, 0xff, 0x7e, 0x7d, - 0xbb, 0xd6, 0x99, 0xce, 0x7f, 0xff, 0x7f, 0xff, 0xba, 0xd6, 0x79, 0xce, 0xba, 0xfe, 0xef, 0xba, 0xbb, 0xd6, 0x99, 0xce, 0xbf, 0xfb, 0xff, 0xfd, 0x99, 0xd6, 0xba, 0xce, 0xbe, 0xff, 0xba, 0xfa, - 0x99, 0xd6, 0xba, 0xce, 0xaf, 0xab, 0xff, 0xaf, 0x99, 0xd6, 0xba, 0xce, 0xeb, 0xaa, 0xd6, 0xfe, 0x99, 0xd6, 0xba, 0xce, 0xbe, 0xfe, 0x8b, 0xaf, 0xda, 0xde, 0x86, 0x7a, 0x60, 0x50, 0x5c, 0x54, - 0xa6, 0x82, 0x45, 0x72, 0xa8, 0xea, 0xfe, 0xde, 0xa6, 0x82, 0x45, 0x7a, 0x8b, 0xbb, 0x7f, 0x7f, 0xa6, 0x82, 0x45, 0x7a, 0x52, 0x7f, 0x75, 0xfd, 0x24, 0x7a, 0x43, 0x51, 0xa0, 0xfc, 0xfe, 0x5e, - 0xa4, 0x59, 0x23, 0x51, 0x78, 0xfa, 0xea, 0xd7, 0xc4, 0x61, 0x43, 0x51, 0xcd, 0x79, 0x5f, 0x96, 0xa4, 0x61, 0x03, 0x49, 0xdf, 0x8b, 0xb7, 0xaa, 0xa4, 0x69, 0x23, 0x49, 0x77, 0xdf, 0xff, 0x22, - 0x25, 0x72, 0x23, 0x49, 0x2f, 0xaf, 0x0d, 0x82, 0x05, 0x72, 0x83, 0x61, 0xb4, 0xf6, 0xaa, 0xab, 0x05, 0x6a, 0x84, 0x61, 0xaa, 0xa8, 0xad, 0x2a, 0x46, 0x6a, 0x43, 0x51, 0x26, 0xbe, 0xdf, 0xda, - 0x06, 0x6a, 0xc4, 0x51, 0xa8, 0x5f, 0x8a, 0x02, 0x05, 0x6a, 0x84, 0x49, 0x7e, 0x7f, 0x20, 0x28, 0x25, 0x6a, 0xc4, 0x51, 0xf8, 0x6f, 0x00, 0x00, 0x25, 0x6a, 0xa3, 0x59, 0x5e, 0xdf, 0xe8, 0xfa, - 0x25, 0x6a, 0xc4, 0x61, 0x6d, 0x27, 0x3d, 0xeb, 0x8a, 0x93, 0xe5, 0x69, 0x89, 0x2b, 0x29, 0x2b, 0x2c, 0xac, 0xe7, 0x8a, 0xe2, 0x96, 0x24, 0x26, 0x8e, 0xbc, 0x28, 0x8b, 0x4a, 0x48, 0x48, 0x62, - 0x4c, 0xac, 0xc7, 0x82, 0x10, 0x3a, 0xb8, 0x98, 0x50, 0xcd, 0x8a, 0x93, 0x89, 0xeb, 0xaf, 0x7f, 0xba, 0xd6, 0x6e, 0xac, 0x0b, 0x0f, 0x05, 0x05, 0xba, 0xd6, 0x99, 0xce, 0xfb, 0xbb, 0xba, 0xaa, - 0x9a, 0xd6, 0xba, 0xce, 0xb6, 0xeb, 0xab, 0xfb, 0x9a, 0xd6, 0xba, 0xce, 0xea, 0xba, 0xfe, 0xfe, 0xba, 0xd6, 0x99, 0xce, 0xea, 0xaa, 0xba, 0xae, 0xba, 0xd6, 0x99, 0xce, 0xae, 0xaa, 0xab, 0xaa, - 0x99, 0xd6, 0xba, 0xce, 0xfb, 0xfd, 0xab, 0xab, 0x99, 0xd6, 0xba, 0xce, 0xaf, 0xff, 0xba, 0xfe, 0x9a, 0xd6, 0xba, 0xce, 0xff, 0xab, 0xfa, 0xbe, 0x9a, 0xd6, 0xba, 0xce, 0xf8, 0xaf, 0xbf, 0xba, - 0x9a, 0xd6, 0xba, 0xce, 0xff, 0xff, 0xfe, 0xbe, 0x99, 0xd6, 0xba, 0xce, 0xbf, 0xff, 0xeb, 0xaa, 0xbb, 0xd6, 0x99, 0xce, 0xfe, 0xbf, 0xfb, 0xee, 0xba, 0xd6, 0x99, 0xce, 0xff, 0xff, 0xfd, 0xef, - 0xba, 0xd6, 0x99, 0xce, 0xff, 0xff, 0xfa, 0xff, 0xba, 0xce, 0x99, 0xce, 0x3f, 0xff, 0xef, 0xff, 0xba, 0xd6, 0x99, 0xce, 0xff, 0xbf, 0xff, 0xff, 0xbb, 0xd6, 0x99, 0xce, 0xfb, 0xef, 0xfb, 0xf7, - 0xbb, 0xce, 0x99, 0xce, 0xbf, 0x77, 0xef, 0xfa, 0x9b, 0xd6, 0xb9, 0xce, 0xad, 0xfe, 0xfb, 0x0f, 0xba, 0xce, 0x79, 0xce, 0xea, 0xbe, 0xaa, 0xab, 0xba, 0xce, 0x9a, 0xce, 0xe7, 0xd7, 0x75, 0x15, - 0xba, 0xce, 0x99, 0xce, 0xdd, 0xcd, 0x7f, 0xfe, 0xbb, 0xce, 0x99, 0xce, 0xff, 0xff, 0xff, 0x7e, 0xbb, 0xd6, 0x79, 0xce, 0xbf, 0xff, 0xff, 0xff, 0xba, 0xce, 0x9a, 0xce, 0x57, 0xdd, 0xb5, 0x55, - 0xba, 0xd6, 0x7a, 0xce, 0xaf, 0xfe, 0xff, 0xff, 0xba, 0xce, 0x99, 0xce, 0x5d, 0x55, 0xfb, 0xd5, 0xbb, 0xd6, 0x79, 0xc6, 0xea, 0xbb, 0xee, 0xfb, 0xbb, 0xd6, 0x79, 0xce, 0xef, 0xbf, 0xff, 0xff, - 0xba, 0xce, 0x9a, 0xce, 0xb5, 0xd5, 0x55, 0x55, 0xba, 0xce, 0x79, 0xce, 0xfa, 0xba, 0xea, 0xbe, 0xbb, 0xce, 0x79, 0xce, 0xee, 0xbb, 0xef, 0xaa, 0x9a, 0xd6, 0x7a, 0xc6, 0xba, 0xaa, 0xea, 0xfa, - 0xba, 0xd6, 0x79, 0xc6, 0xbe, 0xae, 0xef, 0xab, 0xbb, 0xd6, 0x99, 0xc6, 0xff, 0xff, 0xff, 0xff, 0xbb, 0xce, 0x99, 0xc6, 0xea, 0xab, 0xaf, 0xbf, 0xba, 0xce, 0x99, 0xce, 0xff, 0xff, 0xfa, 0xbf, - 0xbb, 0xd6, 0x99, 0xc6, 0xff, 0xff, 0xff, 0xff, 0xbb, 0xd6, 0x99, 0xc6, 0xff, 0xaf, 0xff, 0xff, 0xba, 0xd6, 0x99, 0xce, 0x77, 0xff, 0xff, 0xd7, 0xba, 0xce, 0x99, 0xce, 0x55, 0x7b, 0xbd, 0x7d, - 0xbb, 0xd6, 0x99, 0xce, 0x7f, 0xfd, 0xf7, 0xff, 0xbb, 0xd6, 0x99, 0xce, 0x7f, 0xff, 0x7f, 0xff, 0xbb, 0xce, 0x79, 0xce, 0xae, 0xaa, 0xaa, 0xaa, 0xbb, 0xd6, 0x99, 0xc6, 0xbf, 0xaf, 0xee, 0xfb, - 0x1a, 0xb6, 0xfa, 0xad, 0x2f, 0xfb, 0xaf, 0x0a, 0x3b, 0xb6, 0x1a, 0xae, 0x76, 0xdd, 0x95, 0xab, 0x3b, 0xb6, 0x19, 0xae, 0xfd, 0xff, 0xab, 0xa8, 0x3b, 0xb6, 0x1a, 0xae, 0xfb, 0xef, 0x8a, 0x00, - 0x5b, 0xb6, 0x19, 0xae, 0x7d, 0xbf, 0xbb, 0x28, 0x5b, 0xb6, 0x19, 0xae, 0xe5, 0xee, 0xab, 0xa8, 0x5b, 0xbe, 0x3a, 0xae, 0xdf, 0xff, 0xbf, 0xaa, 0x5b, 0xbe, 0x39, 0xae, 0xff, 0xff, 0xaf, 0xab, - 0x3a, 0xbe, 0x5a, 0xb6, 0xfe, 0xff, 0xaa, 0xde, 0x5b, 0xbe, 0x39, 0xb6, 0xff, 0xbf, 0xae, 0x88, 0x5b, 0xbe, 0x3a, 0xb6, 0xeb, 0x8f, 0x28, 0x00, 0x7a, 0xbe, 0x3a, 0xb6, 0xdf, 0x7f, 0xbb, 0xa2, - 0x7a, 0xbe, 0x3a, 0xb6, 0x5f, 0xff, 0xaa, 0x00, 0x7a, 0xbe, 0x5a, 0xb6, 0x7d, 0x57, 0xaf, 0x80, 0x7b, 0xc6, 0x3a, 0xb6, 0xbb, 0x9f, 0xab, 0xaa, 0x7b, 0xc6, 0x59, 0xb6, 0xbf, 0xbf, 0xbb, 0x2a, - 0x9b, 0xc6, 0x59, 0xbe, 0xff, 0xeb, 0xbf, 0x2a, 0x9b, 0xc6, 0x79, 0xbe, 0xef, 0xab, 0x8a, 0x2a, 0x9b, 0xce, 0x7a, 0xbe, 0x7f, 0xde, 0xeb, 0xaa, 0x9b, 0xc6, 0x7a, 0xbe, 0x75, 0xfa, 0x88, 0x08, - 0x9b, 0xc6, 0x5a, 0xbe, 0xf5, 0xba, 0xa2, 0x00, 0x9a, 0xce, 0x5a, 0xbe, 0xdd, 0xae, 0xaa, 0x02, 0x9b, 0xce, 0x7a, 0xc6, 0x55, 0xeb, 0xee, 0xab, 0x9b, 0xce, 0x7a, 0xbe, 0x7f, 0xfa, 0xaa, 0x2a, - 0x9b, 0xce, 0x5a, 0xbe, 0x7f, 0xbe, 0xaa, 0xaa, 0x9b, 0xc6, 0x59, 0xbe, 0xf7, 0xaa, 0x88, 0x00, 0x9b, 0xce, 0x7a, 0xbe, 0xdf, 0xaf, 0xaa, 0xaa, 0x9a, 0xce, 0x7b, 0xc6, 0xdd, 0xbf, 0xff, 0xbb, - 0x9b, 0xce, 0x7a, 0xc6, 0xfb, 0x8f, 0xee, 0x2a, 0x9a, 0xce, 0x9a, 0xc6, 0xfb, 0xab, 0xa2, 0xa2, 0xba, 0xce, 0x7a, 0xc6, 0xff, 0xfb, 0xba, 0xae, 0xfb, 0xd6, 0x66, 0x6a, 0x40, 0x40, 0xc0, 0x80, - 0x87, 0x72, 0xc4, 0x69, 0xba, 0xf8, 0x78, 0xa8, 0x25, 0x6a, 0xa4, 0x61, 0x70, 0xa8, 0x98, 0xfa, 0x05, 0x72, 0x63, 0x59, 0x7e, 0x7a, 0xaa, 0x88, 0xe4, 0x61, 0x43, 0x59, 0x7d, 0xab, 0xaa, 0x82, - 0xa4, 0x61, 0x43, 0x59, 0x09, 0x2a, 0xc0, 0x2a, 0x25, 0x72, 0x83, 0x61, 0xaa, 0x83, 0xaf, 0xf7, 0x66, 0x72, 0xa4, 0x69, 0xaf, 0x2f, 0xbd, 0x55, 0x45, 0x72, 0xc4, 0x61, 0xae, 0x2c, 0xed, 0x75, - 0x25, 0x72, 0xa3, 0x61, 0xff, 0xec, 0x5f, 0xff, 0xe4, 0x69, 0x83, 0x61, 0xee, 0x3a, 0xda, 0xfe, 0x04, 0x72, 0xa3, 0x69, 0xaf, 0xb3, 0x57, 0xa7, 0xe4, 0x69, 0x63, 0x61, 0xbc, 0x3a, 0x2d, 0x55, - 0x04, 0x72, 0x63, 0x59, 0xfe, 0xf8, 0x5a, 0x7d, 0x05, 0x72, 0x83, 0x59, 0x3f, 0xf5, 0xd5, 0xbf, 0xe4, 0x69, 0x63, 0x59, 0x28, 0xee, 0x71, 0x82, 0x04, 0x6a, 0x43, 0x59, 0xa0, 0xfd, 0xbd, 0xaf, - 0x05, 0x6a, 0xa4, 0x61, 0xdb, 0x95, 0xfb, 0x3f, 0x6d, 0x83, 0xa3, 0x61, 0x3d, 0xfd, 0xfd, 0xff, 0xfc, 0xde, 0x07, 0x6a, 0x00, 0x09, 0x15, 0x55, 0xda, 0xd6, 0xd8, 0xc5, 0xaa, 0xaa, 0xa8, 0xa1, - 0xba, 0xd6, 0x99, 0xce, 0xff, 0xff, 0xff, 0xbf, 0x9a, 0xd6, 0xba, 0xce, 0xff, 0xfe, 0xfa, 0xbf, 0x9a, 0xd6, 0xb9, 0xce, 0xfb, 0xaa, 0xff, 0xfa, 0xba, 0xd6, 0x99, 0xce, 0xed, 0xfe, 0xbf, 0xff, - 0xba, 0xd6, 0x99, 0xce, 0xff, 0xaf, 0xef, 0xff, 0x99, 0xd6, 0xba, 0xce, 0xeb, 0xff, 0xff, 0xaa, 0x99, 0xd6, 0xba, 0xce, 0xaf, 0x8b, 0xaf, 0xbe, 0xfa, 0xe6, 0x66, 0x72, 0x54, 0x54, 0x54, 0x54, - 0x86, 0x82, 0x25, 0x72, 0xbf, 0xbe, 0x2b, 0xeb, 0x66, 0x7a, 0xe5, 0x69, 0xa0, 0xe2, 0xf8, 0x7a, 0x45, 0x7a, 0x43, 0x51, 0x80, 0xea, 0x7a, 0x5e, 0x64, 0x59, 0x03, 0x49, 0x88, 0xe0, 0x7a, 0x7a, - 0x64, 0x51, 0xe3, 0x48, 0xbe, 0x2f, 0x89, 0xab, 0x64, 0x51, 0x23, 0x41, 0x2c, 0xfe, 0x7d, 0x77, 0xc4, 0x69, 0x23, 0x49, 0xbf, 0x8d, 0x2d, 0xad, 0xe3, 0x69, 0xa4, 0x61, 0xef, 0xd7, 0x2f, 0xa7, - 0xe4, 0x71, 0xa3, 0x61, 0xeb, 0x5b, 0xff, 0xfd, 0x04, 0x6a, 0xc4, 0x61, 0x01, 0xfb, 0x75, 0xb5, 0x05, 0x6a, 0xc4, 0x61, 0xe8, 0x7f, 0x73, 0x2a, 0x05, 0x6a, 0x23, 0x49, 0xba, 0xf0, 0x7a, 0x68, - 0x26, 0x6a, 0xa4, 0x61, 0xea, 0xfa, 0x63, 0x7b, 0x05, 0x6a, 0xa4, 0x61, 0x2a, 0x2f, 0x1a, 0xfb, 0x46, 0x72, 0xe5, 0x69, 0x89, 0x43, 0x5d, 0x55, 0x04, 0x6a, 0x83, 0x61, 0xe8, 0x6a, 0xaa, 0x02, - 0xc7, 0x72, 0xa4, 0x61, 0xfd, 0xff, 0xab, 0x2b, 0x8a, 0x9b, 0x66, 0x72, 0x39, 0x3f, 0x2a, 0x0a, 0x4c, 0xac, 0x8a, 0x9b, 0x25, 0x2d, 0x29, 0x2b, 0xef, 0xc4, 0xc7, 0x82, 0x4a, 0xe8, 0xca, 0x4a, - 0x0c, 0xac, 0xc7, 0x82, 0x9c, 0xba, 0xb3, 0xb1, 0xef, 0xc4, 0xcb, 0x9b, 0xf7, 0xfe, 0xf4, 0xec, 0xda, 0xd6, 0x4e, 0xa4, 0x09, 0x09, 0x01, 0x01, 0xbb, 0xd6, 0x99, 0xce, 0xaa, 0xaa, 0xa0, 0x80, - 0xda, 0xd6, 0x9a, 0xce, 0xfb, 0xea, 0xaf, 0xaf, 0x9a, 0xd6, 0xba, 0xce, 0xef, 0xaa, 0xff, 0xfe, 0x99, 0xd6, 0xbb, 0xce, 0xbf, 0xff, 0xea, 0xff, 0x9b, 0xd6, 0xb9, 0xce, 0xbf, 0xde, 0xbf, 0xff, - 0xbb, 0xd6, 0x99, 0xce, 0xea, 0xab, 0xaa, 0xaa, 0x9a, 0xd6, 0xba, 0xce, 0xda, 0xd5, 0xba, 0xff, 0x9a, 0xd6, 0xba, 0xce, 0xfa, 0xab, 0x2b, 0xad, 0xba, 0xd6, 0x9a, 0xce, 0xff, 0x8b, 0xae, 0x8a, - 0x99, 0xd6, 0xbb, 0xce, 0xaf, 0xeb, 0xfa, 0xbf, 0x99, 0xd6, 0xba, 0xce, 0xba, 0xbf, 0xaf, 0x7e, 0x99, 0xd6, 0xbb, 0xce, 0xfe, 0xfe, 0xfe, 0xeb, 0x9a, 0xd6, 0xbb, 0xce, 0xbf, 0xfa, 0xfe, 0xff, - 0xba, 0xd6, 0x99, 0xce, 0xff, 0xff, 0xfb, 0xfa, 0xba, 0xd6, 0x99, 0xce, 0xff, 0xef, 0xef, 0xdb, 0xbb, 0xd6, 0x99, 0xce, 0x7f, 0xf7, 0xff, 0xfe, 0xba, 0xd6, 0x79, 0xce, 0xbe, 0xbf, 0xef, 0xfa, - 0xba, 0xce, 0x9a, 0xce, 0x5e, 0x7f, 0x57, 0xb7, 0xba, 0xd6, 0x9a, 0xce, 0xd7, 0x55, 0xf5, 0x57, 0xba, 0xd6, 0x9a, 0xce, 0x55, 0x55, 0xf5, 0xbf, 0xba, 0xce, 0x9a, 0xce, 0xd5, 0xfb, 0x5f, 0x57, - 0xba, 0xce, 0x9a, 0xce, 0xdc, 0xd7, 0x57, 0x75, 0xbb, 0xd6, 0x9a, 0xc6, 0xfe, 0xbf, 0xef, 0xff, 0xba, 0xce, 0x7a, 0xce, 0xae, 0xab, 0xea, 0xaa, 0xbb, 0xce, 0x79, 0xce, 0xee, 0xab, 0xaa, 0xea, - 0x9b, 0xd6, 0x79, 0xce, 0xef, 0xfe, 0xef, 0xaa, 0xbb, 0xd6, 0x79, 0xc6, 0xff, 0xea, 0xff, 0xab, 0x9a, 0xce, 0x7a, 0xce, 0x02, 0x58, 0x00, 0x00, 0xba, 0xce, 0x7a, 0xce, 0xea, 0xbf, 0xea, 0xff, - 0xbb, 0xd6, 0x79, 0xc6, 0xaf, 0xbb, 0xff, 0xee, 0x9b, 0xd6, 0x99, 0xc6, 0xeb, 0xaa, 0xea, 0xfb, 0xbb, 0xce, 0x9a, 0xce, 0x6d, 0x55, 0x55, 0x95, 0xbb, 0xce, 0x9a, 0xce, 0xed, 0x6d, 0x55, 0x5f, - 0xba, 0xd6, 0x79, 0xce, 0xff, 0xbf, 0xee, 0xff, 0xba, 0xd6, 0x99, 0xc6, 0xbf, 0xff, 0xff, 0xff, 0xba, 0xce, 0x79, 0xce, 0xbe, 0xbf, 0xaa, 0xea, 0xba, 0xce, 0x7a, 0xce, 0xfe, 0xaa, 0xbe, 0xaa, - 0xbb, 0xd6, 0x99, 0xc6, 0xfe, 0xbb, 0xff, 0xbf, 0x7a, 0xd6, 0xba, 0xce, 0xeb, 0xfe, 0xbf, 0xf7, 0xba, 0xd6, 0x9a, 0xce, 0x77, 0x55, 0x75, 0xdd, 0xbb, 0xd6, 0x7a, 0xce, 0xff, 0xff, 0xef, 0xee, - 0xba, 0xd6, 0x9a, 0xce, 0x5d, 0x5d, 0x55, 0xf5, 0xbb, 0xd6, 0x79, 0xc6, 0xab, 0xba, 0xba, 0xea, 0xba, 0xce, 0x9a, 0xce, 0x77, 0x55, 0xbf, 0xdf, 0xbb, 0xce, 0x9a, 0xce, 0x55, 0x7e, 0xde, 0x65, - 0x5b, 0xb6, 0x19, 0xae, 0x7f, 0xef, 0xab, 0x82, 0x5b, 0xbe, 0x19, 0xae, 0xbf, 0xab, 0xaa, 0x02, 0x5b, 0xbe, 0x1a, 0xb6, 0xbf, 0xaf, 0xaa, 0x02, 0x5a, 0xbe, 0x39, 0xb6, 0xb1, 0xaa, 0x20, 0x00, - 0x7b, 0xbe, 0x3a, 0xb6, 0xaf, 0x8b, 0xa2, 0x80, 0x7a, 0xc6, 0x59, 0xbe, 0x5d, 0xfd, 0xaa, 0xaa, 0x9a, 0xc6, 0x59, 0xbe, 0x55, 0x7f, 0xfb, 0xaa, 0x7a, 0xc6, 0x5a, 0xbe, 0x7d, 0xfd, 0xef, 0x00, - 0x7a, 0xc6, 0x5a, 0xbe, 0xd5, 0xbf, 0x8a, 0x00, 0x7b, 0xc6, 0x59, 0xbe, 0x19, 0xfe, 0xaa, 0x00, 0x7b, 0xc6, 0x5a, 0xbe, 0xbe, 0x2a, 0x00, 0x00, 0x9a, 0xc6, 0x5a, 0xbe, 0xbf, 0xbe, 0xa8, 0xaa, - 0x9a, 0xce, 0x5a, 0xc6, 0xff, 0xff, 0xea, 0xba, 0x9b, 0xce, 0x79, 0xbe, 0x7f, 0xef, 0xaa, 0xea, 0x9a, 0xce, 0x7a, 0xc6, 0x55, 0x57, 0xae, 0xae, 0x9a, 0xce, 0x79, 0xc6, 0x75, 0xff, 0xfb, 0xbb, - 0x79, 0xce, 0x9b, 0xc6, 0x6a, 0xff, 0xb2, 0xaa, 0x79, 0xce, 0x9b, 0xc6, 0xf6, 0xaf, 0xbb, 0xba, 0x9a, 0xce, 0x79, 0xc6, 0xff, 0xff, 0xaa, 0x3a, 0x9a, 0xce, 0x7a, 0xc6, 0xff, 0xae, 0xa8, 0xaa, - 0x9a, 0xce, 0x7a, 0xce, 0xfd, 0x5e, 0xaa, 0x20, 0x79, 0xce, 0x9a, 0xc6, 0xf7, 0x3e, 0x8b, 0xaf, 0x9a, 0xce, 0x79, 0xc6, 0xaa, 0x20, 0xa2, 0xa8, 0x9a, 0xce, 0x79, 0xc6, 0xaa, 0x8a, 0x00, 0x80, - 0x9a, 0xce, 0x7a, 0xc6, 0x8a, 0x8a, 0x2a, 0x02, 0xba, 0xce, 0x79, 0xc6, 0xfe, 0xab, 0xab, 0xba, 0xba, 0xce, 0x79, 0xc6, 0xfe, 0xba, 0xbe, 0xae, 0xba, 0xce, 0x79, 0xc6, 0xfb, 0xaa, 0xaa, 0xaa, - 0xba, 0xce, 0x99, 0xc6, 0xef, 0xff, 0xfe, 0xbf, 0xbb, 0xd6, 0x79, 0xc6, 0xbf, 0xff, 0xbe, 0xae, 0xba, 0xce, 0x79, 0xc6, 0xea, 0xba, 0xaa, 0xae, 0xf8, 0xe6, 0x9a, 0xce, 0x95, 0x95, 0x15, 0x95, - 0xa8, 0x72, 0x06, 0x6a, 0xed, 0xfa, 0x5a, 0x70, 0x05, 0x72, 0xc4, 0x59, 0x8a, 0x7a, 0x00, 0xea, 0x26, 0x6a, 0xc4, 0x61, 0x7d, 0x75, 0x3a, 0xa6, 0x45, 0x6a, 0x83, 0x59, 0x7f, 0x7e, 0x78, 0x7b, - 0xc4, 0x61, 0x83, 0x59, 0x6e, 0xeb, 0x9e, 0x2e, 0x05, 0x6a, 0x63, 0x59, 0xbf, 0x0f, 0x37, 0x7f, 0xc4, 0x69, 0x83, 0x61, 0xb3, 0xf1, 0x4f, 0xa5, 0x45, 0x72, 0xa3, 0x61, 0xfb, 0x5d, 0xde, 0xf2, - 0x25, 0x72, 0x83, 0x61, 0x9c, 0xff, 0x7e, 0xfe, 0x66, 0x7a, 0xa4, 0x61, 0xff, 0xfd, 0xe1, 0xc3, 0x86, 0x7a, 0xa3, 0x61, 0x7f, 0x5f, 0x2b, 0x82, 0x45, 0x7a, 0x83, 0x61, 0xd5, 0xa5, 0x8a, 0xaa, - 0xe4, 0x71, 0x83, 0x61, 0x5a, 0xaa, 0xea, 0x60, 0xa4, 0x69, 0x43, 0x51, 0x0a, 0xa0, 0xfe, 0x57, 0x04, 0x6a, 0x23, 0x51, 0x82, 0x82, 0xcb, 0x89, 0xc4, 0x61, 0x63, 0x59, 0x3e, 0xb7, 0xdd, 0x5f, - 0xe4, 0x69, 0x63, 0x61, 0xa0, 0xea, 0xb9, 0x0b, 0xe5, 0x69, 0xa3, 0x61, 0x02, 0x03, 0x8d, 0xca, 0x25, 0x6a, 0xa4, 0x61, 0x02, 0xbe, 0xaa, 0xa9, 0xdc, 0xde, 0xc6, 0x61, 0x09, 0x25, 0xd5, 0x55, - 0x1c, 0xdf, 0x31, 0x9c, 0x2a, 0x22, 0x88, 0x81, 0xbb, 0xd6, 0x99, 0xce, 0xef, 0xff, 0xff, 0x3e, 0xbb, 0xd6, 0x99, 0xce, 0xaf, 0xea, 0xef, 0xa2, 0xbb, 0xd6, 0x99, 0xce, 0xbe, 0xee, 0xff, 0xbb, - 0x99, 0xd6, 0xba, 0xce, 0xbf, 0xfa, 0xbe, 0xba, 0x99, 0xd6, 0xba, 0xce, 0xfe, 0x8b, 0xbe, 0xba, 0x99, 0xd6, 0xba, 0xce, 0x2e, 0x2b, 0x2a, 0xa6, 0xfa, 0xee, 0x25, 0x72, 0x54, 0x56, 0x56, 0x54, - 0x65, 0x7a, 0x26, 0x72, 0x82, 0x8a, 0x7e, 0xef, 0x45, 0x72, 0x84, 0x59, 0xa0, 0xa0, 0x78, 0x6c, 0xc4, 0x61, 0x23, 0x49, 0x5c, 0xde, 0x57, 0x5d, 0x64, 0x51, 0x03, 0x49, 0x7f, 0xec, 0x55, 0x55, - 0x64, 0x51, 0x03, 0x49, 0xeb, 0x5b, 0xfc, 0x5a, 0x24, 0x49, 0x02, 0x41, 0xf2, 0x30, 0xee, 0xbe, 0xa4, 0x61, 0x23, 0x49, 0x2d, 0x3d, 0xb5, 0x95, 0xe4, 0x69, 0x63, 0x61, 0xcb, 0xfd, 0xd5, 0xff, - 0xc4, 0x69, 0x83, 0x61, 0xba, 0x6a, 0x3a, 0xfa, 0xe5, 0x69, 0xa4, 0x61, 0x20, 0x2d, 0x26, 0x8f, 0x26, 0x72, 0xe4, 0x69, 0xf9, 0xbd, 0xdf, 0x29, 0x05, 0x6a, 0x02, 0x39, 0xe0, 0x60, 0x60, 0x68, - 0x05, 0x62, 0x63, 0x51, 0x62, 0xc2, 0xe2, 0xe2, 0xc4, 0x69, 0x05, 0x62, 0xa8, 0xaf, 0xfa, 0x7b, 0x25, 0x6a, 0xe6, 0x61, 0xbb, 0x9f, 0xff, 0x2f, 0x26, 0x6a, 0xe5, 0x61, 0x0f, 0x37, 0x3e, 0xaa, - 0x09, 0x83, 0x06, 0x6a, 0x3d, 0xbd, 0x3d, 0xbd, 0xaa, 0x93, 0xe8, 0x82, 0xad, 0x89, 0x0f, 0xa5, 0x4d, 0xac, 0x8a, 0x93, 0x2f, 0x0b, 0xe9, 0xdd, 0x30, 0xcd, 0xa7, 0x7a, 0x6a, 0xea, 0xaa, 0x2b, - 0x0f, 0xbd, 0x46, 0x6a, 0xb9, 0xbd, 0xad, 0x2d, 0xef, 0xc4, 0x4d, 0xac, 0x57, 0xfe, 0x5f, 0x64, 0xda, 0xde, 0x8f, 0xb4, 0x01, 0x09, 0x09, 0x0d, 0xda, 0xde, 0x9a, 0xce, 0xef, 0xef, 0xea, 0xab, - 0xba, 0xd6, 0x9a, 0xce, 0x08, 0x00, 0x00, 0x00, 0xdb, 0xd6, 0x9a, 0xce, 0xba, 0xea, 0xab, 0xaa, 0xdb, 0xd6, 0x9a, 0xce, 0xab, 0xbb, 0xbe, 0xaa, 0xda, 0xd6, 0x99, 0xce, 0xaf, 0xaa, 0xab, 0xaa, - 0xdb, 0xd6, 0x9a, 0xce, 0xfe, 0xfe, 0xeb, 0xee, 0xda, 0xd6, 0x9a, 0xce, 0xff, 0xea, 0xba, 0xa8, 0xbb, 0xd6, 0xb9, 0xce, 0xbe, 0xf8, 0xae, 0xaa, 0x9a, 0xd6, 0xbb, 0xce, 0xff, 0xaf, 0xff, 0xfe, - 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xaf, 0xab, 0xa0, 0x9a, 0xd6, 0xba, 0xce, 0x7f, 0xfe, 0xfb, 0xf7, 0xba, 0xd6, 0x99, 0xce, 0xaa, 0xae, 0xbe, 0xae, 0x9a, 0xd6, 0xba, 0xce, 0xaa, 0xaa, 0xff, 0xff, - 0x99, 0xd6, 0xba, 0xce, 0xfe, 0x7e, 0xfe, 0xff, 0xbb, 0xd6, 0x99, 0xce, 0xff, 0xbb, 0xeb, 0xaa, 0xba, 0xd6, 0x9a, 0xce, 0x7f, 0xfb, 0xae, 0xaa, 0xba, 0xd6, 0x9a, 0xce, 0xfd, 0xff, 0xaa, 0xaa, - 0xbb, 0xd6, 0x9a, 0xce, 0x57, 0xff, 0xf7, 0xff, 0xba, 0xd6, 0x9a, 0xce, 0x77, 0xdf, 0xf6, 0xfe, 0xba, 0xd6, 0x99, 0xce, 0xff, 0xff, 0xfb, 0x7b, 0xbb, 0xd6, 0x99, 0xce, 0xf7, 0xbf, 0xee, 0xab, - 0xbb, 0xd6, 0x99, 0xce, 0xdf, 0xff, 0xee, 0xaa, 0xbb, 0xd6, 0x9a, 0xce, 0xfb, 0x7f, 0xff, 0xeb, 0xbb, 0xd6, 0x9a, 0xce, 0xd5, 0x7d, 0xaf, 0xff, 0xba, 0xd6, 0x99, 0xce, 0xff, 0xbf, 0xef, 0xef, - 0xbb, 0xd6, 0x99, 0xce, 0x57, 0xdf, 0xee, 0xff, 0xbb, 0xd6, 0x7a, 0xc6, 0xef, 0xaa, 0xaa, 0xaa, 0xbb, 0xd6, 0x99, 0xc6, 0xfb, 0xaf, 0xff, 0xfe, 0x9a, 0xd6, 0x79, 0xc6, 0xaa, 0xae, 0xaa, 0xaa, - 0xba, 0xce, 0x9a, 0xce, 0x65, 0x55, 0x95, 0xd7, 0xba, 0xd6, 0x7a, 0xce, 0xff, 0xff, 0xfe, 0xff, 0xba, 0xce, 0x9a, 0xce, 0x55, 0x79, 0x55, 0x55, 0x9b, 0xd6, 0x9a, 0xce, 0x55, 0x75, 0x75, 0x75, - 0xba, 0xd6, 0x9a, 0xce, 0x55, 0x55, 0xf5, 0xf5, 0xbb, 0xd6, 0x9a, 0xce, 0x5f, 0x57, 0x55, 0xdd, 0xbb, 0xd6, 0x79, 0xce, 0xf7, 0xff, 0xff, 0xef, 0xba, 0xce, 0x9a, 0xce, 0x75, 0x55, 0x57, 0xdd, - 0xbb, 0xd6, 0x99, 0xce, 0x55, 0xff, 0xdd, 0xfb, 0xbb, 0xd6, 0x79, 0xce, 0xfb, 0xff, 0xff, 0xeb, 0xbb, 0xd6, 0x99, 0xc6, 0xff, 0xbf, 0xbf, 0xbf, 0x9a, 0xd6, 0x9a, 0xce, 0xb5, 0x95, 0xe5, 0xe5, - 0xbb, 0xd6, 0x9a, 0xce, 0x55, 0x5f, 0x77, 0xff, 0xbb, 0xd6, 0x99, 0xce, 0x57, 0x5f, 0x75, 0xbf, 0xbb, 0xd6, 0x99, 0xce, 0x55, 0x9f, 0xef, 0xff, 0xba, 0xd6, 0x7a, 0xce, 0xff, 0xea, 0xfe, 0xbf, - 0x7a, 0xc6, 0x59, 0xbe, 0x55, 0xfd, 0xea, 0x82, 0x7b, 0xc6, 0x59, 0xbe, 0xf5, 0xae, 0xa8, 0x02, 0x7a, 0xc6, 0x59, 0xbe, 0x6b, 0xee, 0x82, 0x02, 0x9a, 0xc6, 0x59, 0xbe, 0xf7, 0xbf, 0xbf, 0xaa, - 0x9b, 0xce, 0x59, 0xbe, 0xf5, 0xbe, 0xab, 0xaa, 0x9a, 0xc6, 0x5a, 0xc6, 0xab, 0xaf, 0xba, 0xaa, 0x79, 0xce, 0x9a, 0xc6, 0xdf, 0x3f, 0xe2, 0xe5, 0x9a, 0xce, 0x5a, 0xc6, 0xfb, 0xff, 0xaa, 0xaa, - 0x9a, 0xce, 0x7a, 0xc6, 0x75, 0xdf, 0xfe, 0xaa, 0x9a, 0xce, 0x7a, 0xc6, 0xdf, 0xff, 0xfe, 0x2e, 0x7b, 0xce, 0x99, 0xc6, 0x7a, 0xfe, 0xba, 0xaa, 0x9b, 0xce, 0x7a, 0xc6, 0xff, 0xfe, 0xba, 0x8b, - 0x7a, 0xce, 0x99, 0xc6, 0xf7, 0x2a, 0xa3, 0xea, 0x9b, 0xce, 0x7a, 0xc6, 0xba, 0xaa, 0xaa, 0x88, 0x9a, 0xce, 0x7a, 0xc6, 0xae, 0xaa, 0xba, 0xaa, 0x9a, 0xce, 0x7a, 0xce, 0x8b, 0x09, 0x0a, 0xab, - 0x9a, 0xce, 0x79, 0xc6, 0xaf, 0x2a, 0x08, 0xaa, 0x9b, 0xce, 0x79, 0xc6, 0xab, 0xa2, 0xa8, 0x28, 0x7a, 0xce, 0xba, 0xc6, 0xaa, 0xaf, 0xaa, 0xef, 0x9a, 0xce, 0x7a, 0xc6, 0xaa, 0xaa, 0x20, 0x2a, - 0x9a, 0xce, 0x7a, 0xce, 0x24, 0x08, 0x08, 0x00, 0x9a, 0xce, 0x79, 0xce, 0x08, 0x8c, 0x22, 0x0a, 0x9a, 0xce, 0x79, 0xc6, 0x00, 0x00, 0x20, 0x82, 0xba, 0xce, 0x79, 0xc6, 0xab, 0xbb, 0xff, 0xfa, - 0xba, 0xce, 0x79, 0xc6, 0xaa, 0xaa, 0xeb, 0xaf, 0x9a, 0xce, 0x79, 0xc6, 0x00, 0x02, 0x0a, 0xa2, 0xba, 0xd6, 0x79, 0xc6, 0xab, 0xaf, 0xff, 0xff, 0x9a, 0xce, 0x7a, 0xc6, 0x00, 0x2c, 0x08, 0x28, - 0x9a, 0xce, 0x79, 0xc6, 0x00, 0x80, 0x28, 0x08, 0xba, 0xce, 0x79, 0xc6, 0xab, 0xae, 0xef, 0xff, 0x9a, 0xce, 0x79, 0xc6, 0x00, 0x82, 0x2a, 0xaa, 0xd8, 0xde, 0x7a, 0xce, 0x37, 0xd5, 0xd5, 0xf7, - 0xf9, 0xe6, 0x46, 0x6a, 0x57, 0x56, 0x54, 0x54, 0x66, 0x72, 0xe5, 0x69, 0xfe, 0x5a, 0x7e, 0xe0, 0x25, 0x6a, 0xa4, 0x61, 0xdb, 0x77, 0xfe, 0xb8, 0xe5, 0x69, 0x83, 0x61, 0x7a, 0xef, 0xc3, 0xe8, - 0xc4, 0x69, 0x83, 0x59, 0xef, 0xae, 0xea, 0xba, 0xc4, 0x61, 0x62, 0x59, 0x98, 0xf4, 0xe2, 0xba, 0xe4, 0x61, 0x43, 0x59, 0xf7, 0x1f, 0x2f, 0x2b, 0x04, 0x6a, 0xc5, 0x61, 0xdb, 0xa8, 0xbf, 0xbf, - 0x46, 0x72, 0xe5, 0x69, 0xd5, 0x35, 0xdf, 0x55, 0x26, 0x72, 0xc5, 0x69, 0xeb, 0x2e, 0x0a, 0x2d, 0x46, 0x72, 0xe5, 0x69, 0x23, 0xab, 0x56, 0x7f, 0x46, 0x72, 0xa4, 0x61, 0x20, 0x42, 0x7b, 0xab, - 0x04, 0x72, 0x63, 0x51, 0xe8, 0xaf, 0x95, 0xee, 0xc4, 0x69, 0x23, 0x51, 0xdf, 0xff, 0xae, 0x2a, 0xe5, 0x71, 0x63, 0x51, 0xa9, 0x8f, 0x2d, 0x9f, 0x05, 0x6a, 0x83, 0x61, 0x55, 0x57, 0xca, 0x02, - 0xc4, 0x61, 0x63, 0x59, 0x8a, 0xb7, 0xf7, 0xdc, 0xe4, 0x69, 0x83, 0x61, 0x2f, 0x2b, 0xb9, 0x2e, 0x05, 0x72, 0xc4, 0x61, 0xc9, 0xaf, 0x37, 0xbb, 0x25, 0x72, 0xc3, 0x69, 0x59, 0xfa, 0x9a, 0x63, - 0xb3, 0xb4, 0x83, 0x61, 0x35, 0xf5, 0xd5, 0x55, 0x1b, 0xe7, 0x83, 0x61, 0x02, 0x55, 0x55, 0x55, 0x3c, 0xe7, 0xc3, 0x69, 0x00, 0x0b, 0x55, 0x55, 0x1c, 0xdf, 0xc6, 0x61, 0x00, 0x00, 0xd5, 0x55, - 0x1c, 0xdf, 0x66, 0x6a, 0x00, 0x00, 0x00, 0x40, 0x1c, 0xdf, 0x25, 0x72, 0x00, 0x00, 0x7e, 0x55, 0x1b, 0xe7, 0xa3, 0x61, 0x00, 0x60, 0x55, 0x55, 0x08, 0x8b, 0x04, 0x72, 0x54, 0xff, 0xff, 0xf7, - 0x45, 0x7a, 0xc4, 0x61, 0xa3, 0xa3, 0x48, 0x5e, 0xe5, 0x69, 0x23, 0x49, 0xf0, 0x78, 0x5c, 0x5f, 0x43, 0x51, 0x04, 0x41, 0xef, 0x5c, 0xf5, 0xea, 0x44, 0x49, 0xe3, 0x40, 0xaf, 0xf7, 0x27, 0xba, - 0x64, 0x51, 0xe3, 0x48, 0xde, 0xca, 0xdf, 0xd7, 0x43, 0x49, 0xe2, 0x40, 0xfa, 0x36, 0x8f, 0xca, 0xa4, 0x61, 0x03, 0x49, 0x37, 0x17, 0x35, 0x2f, 0xe5, 0x69, 0x83, 0x59, 0xbd, 0xaa, 0xaf, 0x80, - 0x25, 0x72, 0x84, 0x61, 0xf7, 0xfd, 0xee, 0x0a, 0x66, 0x72, 0xa4, 0x61, 0xfd, 0xf5, 0x3b, 0x2a, 0x46, 0x72, 0x05, 0x6a, 0xab, 0x5e, 0x5a, 0xfc, 0x46, 0x6a, 0x23, 0x41, 0x78, 0x62, 0x6a, 0x70, - 0x26, 0x62, 0x85, 0x49, 0x23, 0xa2, 0x32, 0xda, 0x46, 0x6a, 0x44, 0x49, 0xa0, 0x08, 0x2f, 0xad, 0x46, 0x6a, 0xc5, 0x61, 0xfe, 0x7f, 0x2b, 0xbd, 0x87, 0x72, 0xa4, 0x61, 0xeb, 0xba, 0xf8, 0x7f, - 0x87, 0x6a, 0xc4, 0x61, 0x2b, 0xab, 0xaa, 0xad, 0x8a, 0x93, 0x25, 0x62, 0x0a, 0xaa, 0x97, 0x8b, 0xec, 0xa3, 0xa7, 0x7a, 0x8a, 0x9a, 0x7b, 0xf5, 0xcf, 0xbc, 0x08, 0x83, 0xfb, 0x17, 0xbd, 0xaf, - 0xcf, 0xc4, 0x63, 0x51, 0xad, 0xaa, 0xaa, 0xb8, 0xf0, 0xc4, 0x8a, 0x9b, 0x09, 0x3f, 0x2b, 0x8b, 0xda, 0xd6, 0xec, 0x9b, 0x0d, 0x0b, 0x01, 0x00, 0xda, 0xd6, 0x9a, 0xce, 0xaa, 0xab, 0xea, 0xaa, - 0xda, 0xd6, 0x99, 0xd6, 0xaa, 0xbe, 0xae, 0xaa, 0xdb, 0xd6, 0xba, 0xd6, 0xd5, 0x5d, 0x9f, 0xdd, 0xdb, 0xde, 0x99, 0xce, 0xaf, 0xbe, 0xbe, 0xaa, 0xbb, 0xde, 0xd9, 0xce, 0xfb, 0xab, 0xaa, 0xaa, - 0xda, 0xd6, 0xba, 0xce, 0xaa, 0xaa, 0xaa, 0x2e, 0xdb, 0xd6, 0x9a, 0xce, 0xaa, 0xea, 0xaa, 0xaa, 0xdb, 0xde, 0xba, 0xce, 0xff, 0xff, 0xff, 0xef, 0x9a, 0xd6, 0xdb, 0xce, 0xfa, 0xba, 0xfa, 0xae, - 0x99, 0xd6, 0xdb, 0xce, 0xaa, 0xaa, 0xaa, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0x2a, 0xa2, 0xaa, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xb2, 0x28, 0xa2, 0xbb, 0xd6, 0x9a, 0xce, 0xea, 0x2a, 0xaa, 0xaa, - 0xba, 0xd6, 0x9a, 0xce, 0xa2, 0xaa, 0xbe, 0xfa, 0xbb, 0xd6, 0x9a, 0xce, 0xba, 0xae, 0xaa, 0xff, 0x9b, 0xd6, 0xba, 0xce, 0xae, 0xae, 0xfe, 0xfe, 0x99, 0xd6, 0xbb, 0xce, 0xfe, 0xbb, 0xfe, 0xaa, - 0xbb, 0xd6, 0x9a, 0xce, 0xfb, 0xee, 0xff, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xef, 0xde, 0xfd, 0xf7, 0xbb, 0xd6, 0x99, 0xce, 0xfa, 0xfb, 0xfe, 0xff, 0xbb, 0xd6, 0x99, 0xce, 0xae, 0xfe, 0xff, 0xf7, - 0xbb, 0xd6, 0x99, 0xce, 0xba, 0xeb, 0xdf, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xfe, 0xfb, 0xd7, 0x57, 0xbb, 0xd6, 0x99, 0xce, 0x7a, 0xd7, 0xdf, 0x55, 0xba, 0xce, 0x9a, 0xce, 0x59, 0x55, 0x55, 0x5b, - 0xba, 0xd6, 0x9a, 0xce, 0xdf, 0x57, 0x55, 0x55, 0xba, 0xd6, 0x7a, 0xce, 0xfe, 0xfe, 0xff, 0xef, 0xbb, 0xd6, 0x99, 0xce, 0x75, 0xd5, 0xf7, 0xf5, 0xba, 0xd6, 0x9a, 0xce, 0x5d, 0x5d, 0xd7, 0x79, - 0x9a, 0xd6, 0xbb, 0xce, 0xfa, 0xbc, 0xbe, 0xb7, 0xbb, 0xd6, 0x9a, 0xce, 0x7d, 0xdd, 0x9b, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0x5d, 0x7f, 0xdf, 0xfb, 0xbb, 0xd6, 0x9a, 0xce, 0x5d, 0xff, 0xff, 0xef, - 0xbb, 0xd6, 0x9a, 0xce, 0x5f, 0xd7, 0xff, 0xaf, 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xb7, 0xea, 0xaa, 0x9a, 0xd6, 0xbb, 0xce, 0xff, 0xde, 0xff, 0xfb, 0x9a, 0xd6, 0xbb, 0xce, 0xf7, 0xaf, 0xbf, 0xff, - 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xba, 0xae, 0xaa, 0xbb, 0xd6, 0x9a, 0xce, 0xfe, 0xf9, 0xfb, 0xbe, 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xbf, 0xab, 0xb8, 0xbb, 0xd6, 0x9a, 0xce, 0xbe, 0x6f, 0xff, 0xaa, - 0xbb, 0xd6, 0x9a, 0xce, 0xef, 0xf6, 0xaa, 0xaa, 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xae, 0xab, 0xaa, 0xbb, 0xd6, 0x9a, 0xce, 0xbf, 0xef, 0xae, 0xaa, 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xe6, 0xaa, 0xca, - 0x9a, 0xce, 0x7a, 0xc6, 0xdd, 0x57, 0xef, 0x7a, 0x9a, 0xce, 0x7a, 0xc6, 0x5d, 0xfd, 0xff, 0xfb, 0x9a, 0xce, 0x79, 0xc6, 0x5f, 0xe5, 0xff, 0xf7, 0x7a, 0xce, 0x9a, 0xc6, 0xaa, 0xaa, 0xea, 0xfa, - 0x9a, 0xce, 0x79, 0xc6, 0xbd, 0x6d, 0xea, 0xaa, 0x9a, 0xce, 0x7a, 0xc6, 0xbf, 0xaf, 0xbe, 0xaa, 0x9a, 0xce, 0x79, 0xc6, 0x9e, 0xab, 0xaf, 0xae, 0x9a, 0xce, 0x7a, 0xc6, 0xab, 0xab, 0xaa, 0xaa, - 0x9a, 0xce, 0x7a, 0xc6, 0xea, 0xea, 0xab, 0xaa, 0x79, 0xce, 0x9a, 0xc6, 0xb7, 0xbe, 0xf5, 0xaa, 0x9a, 0xce, 0x79, 0xc6, 0xaa, 0xaa, 0x22, 0xaa, 0x79, 0xce, 0xba, 0xc6, 0xae, 0xae, 0xaa, 0xaa, - 0x9a, 0xce, 0x7a, 0xce, 0x84, 0xaa, 0xf2, 0xf2, 0x9a, 0xce, 0x7a, 0xc6, 0xab, 0xae, 0x20, 0x22, 0x9a, 0xce, 0x7a, 0xc6, 0x88, 0xaa, 0xaa, 0xaa, 0x9a, 0xce, 0x79, 0xc6, 0x80, 0xa0, 0xab, 0xa8, - 0x9b, 0xce, 0x79, 0xc6, 0x0a, 0xa8, 0x80, 0xa0, 0x9a, 0xce, 0x79, 0xc6, 0x8e, 0xaa, 0xc2, 0xa8, 0x9a, 0xce, 0x79, 0xc6, 0x08, 0x8a, 0x0a, 0xaa, 0x9b, 0xce, 0x7a, 0xce, 0x0b, 0xb2, 0x5e, 0xa8, - 0x79, 0xce, 0x9b, 0xc6, 0xff, 0xaa, 0xea, 0xba, 0x7a, 0xce, 0x99, 0xc6, 0xaf, 0x82, 0xff, 0xea, 0x9a, 0xce, 0x7a, 0xc6, 0x02, 0xa8, 0xe2, 0xaa, 0x79, 0xce, 0x9a, 0xc6, 0xde, 0xbe, 0xbf, 0xff, - 0x9a, 0xce, 0x7a, 0xce, 0x2b, 0xec, 0x36, 0x22, 0x9a, 0xce, 0x7a, 0xc6, 0x82, 0xaa, 0xab, 0x8a, 0x9a, 0xce, 0x79, 0xc6, 0x8a, 0x88, 0x22, 0x80, 0xba, 0xce, 0x79, 0xc6, 0xff, 0xef, 0xea, 0x2a, - 0xba, 0xd6, 0x79, 0xc6, 0xff, 0xff, 0xbe, 0xff, 0x9a, 0xce, 0x7a, 0xce, 0x8d, 0x02, 0x00, 0x80, 0xba, 0xd6, 0x79, 0xc6, 0xff, 0xfb, 0xef, 0xbb, 0xba, 0xce, 0x79, 0xce, 0xab, 0xfa, 0xea, 0xea, - 0xfa, 0xde, 0x05, 0x5a, 0x54, 0x58, 0x50, 0x60, 0x67, 0x6a, 0xe5, 0x61, 0x28, 0xc8, 0xd8, 0xd8, 0x46, 0x72, 0xa4, 0x59, 0x2a, 0xaa, 0xea, 0x6a, 0x46, 0x6a, 0x43, 0x51, 0xf8, 0x7e, 0xea, 0xba, - 0xa4, 0x61, 0x63, 0x51, 0x2f, 0xbd, 0xad, 0xe6, 0xa4, 0x61, 0x23, 0x51, 0x20, 0x7f, 0xfb, 0xdb, 0xe5, 0x61, 0x84, 0x59, 0x0f, 0x2f, 0xdd, 0x0b, 0x05, 0x6a, 0x84, 0x59, 0xb0, 0xaa, 0xd5, 0x5b, - 0x25, 0x6a, 0x83, 0x59, 0x20, 0x02, 0x8b, 0xdf, 0x47, 0x6a, 0xc4, 0x61, 0xde, 0xe2, 0xed, 0xff, 0x25, 0x6a, 0xa5, 0x61, 0xe2, 0xa9, 0x8b, 0xaa, 0x26, 0x72, 0x05, 0x62, 0x8f, 0xab, 0xd7, 0xdd, - 0x26, 0x72, 0xc5, 0x61, 0x50, 0xca, 0xaf, 0xea, 0x25, 0x6a, 0xa4, 0x61, 0x5b, 0xbd, 0xfc, 0x7a, 0x05, 0x6a, 0x63, 0x59, 0xfa, 0xe8, 0xaa, 0x7a, 0x05, 0x6a, 0x63, 0x59, 0x00, 0xaa, 0xdf, 0x55, - 0xe5, 0x69, 0x43, 0x59, 0xf8, 0x00, 0x8a, 0xdd, 0x04, 0x6a, 0x63, 0x59, 0xeb, 0xe2, 0x0a, 0xd5, 0x05, 0x6a, 0x43, 0x49, 0xa0, 0x7a, 0xfc, 0xaa, 0xe5, 0x69, 0x63, 0x59, 0x60, 0x7d, 0x79, 0x7e, - 0x25, 0x72, 0x63, 0x59, 0x8b, 0xef, 0x5d, 0xff, 0xe4, 0x69, 0x83, 0x51, 0xa0, 0xeb, 0xa9, 0x2a, 0x25, 0x72, 0x63, 0x59, 0x2f, 0xb5, 0x5f, 0xea, 0x25, 0x72, 0x43, 0x49, 0xf0, 0xf8, 0xbf, 0xb6, - 0x45, 0x72, 0x64, 0x59, 0x35, 0xa2, 0x2a, 0xfd, 0x24, 0x7a, 0xa3, 0x69, 0x80, 0x6a, 0xe8, 0xeb, 0x25, 0x72, 0xe3, 0x69, 0xad, 0x01, 0x6d, 0x30, 0x45, 0x7a, 0x82, 0x59, 0x02, 0xa2, 0xba, 0x7e, - 0x04, 0x72, 0x43, 0x49, 0xe8, 0x7e, 0xff, 0x5d, 0x64, 0x51, 0x03, 0x49, 0x6e, 0x7b, 0xfa, 0xfd, 0x24, 0x49, 0x03, 0x41, 0x3b, 0x10, 0x90, 0xce, 0x84, 0x51, 0xe3, 0x40, 0xff, 0xff, 0xf7, 0x8b, - 0xc4, 0x61, 0x03, 0x41, 0xd5, 0xd5, 0xbe, 0x02, 0x26, 0x72, 0x24, 0x49, 0xd5, 0x37, 0xaf, 0x82, 0x25, 0x6a, 0x44, 0x51, 0xf7, 0xb8, 0xb8, 0x02, 0x66, 0x6a, 0xc5, 0x61, 0x2b, 0xbf, 0x57, 0xea, - 0x67, 0x72, 0xc4, 0x59, 0x0b, 0xab, 0xf5, 0xae, 0x67, 0x72, 0x84, 0x59, 0x88, 0x7a, 0xab, 0xb2, 0x46, 0x6a, 0xe5, 0x61, 0x0f, 0x7f, 0xff, 0xda, 0x26, 0x6a, 0x23, 0x41, 0x50, 0xda, 0xd8, 0xda, - 0xc5, 0x59, 0x23, 0x49, 0xae, 0x2e, 0x87, 0x8e, 0xe5, 0x61, 0x22, 0x49, 0x29, 0x0b, 0x0a, 0x2a, 0x26, 0x6a, 0xa4, 0x59, 0x77, 0x8a, 0x0b, 0x2e, 0xc8, 0x7a, 0xc5, 0x61, 0xfd, 0xaf, 0xff, 0x3f, - 0x47, 0x72, 0xe5, 0x61, 0xbe, 0x2a, 0x6b, 0x20, 0x29, 0x83, 0x26, 0x6a, 0xbd, 0xbd, 0xb5, 0x3d, 0xaf, 0xac, 0xe8, 0x7a, 0xf5, 0xdd, 0xbf, 0xb3, 0x50, 0xc5, 0xaa, 0x9b, 0xf5, 0xf5, 0x75, 0x89, - 0x51, 0xcd, 0x49, 0x8b, 0xba, 0xae, 0x96, 0xf4, 0xdb, 0xde, 0x6e, 0xac, 0x3d, 0x2f, 0x0b, 0x01, 0xdb, 0xde, 0xba, 0xce, 0xfe, 0xff, 0xff, 0xff, 0xdb, 0xd6, 0x9a, 0xce, 0xaf, 0xff, 0xee, 0xbf, - 0xbb, 0xd6, 0x9a, 0xce, 0x80, 0x80, 0x02, 0x2a, 0xdb, 0xd6, 0x9a, 0xce, 0xaa, 0xaa, 0xbf, 0xea, 0xdb, 0xd6, 0xba, 0xce, 0xea, 0xff, 0xbe, 0xff, 0xdb, 0xd6, 0xba, 0xce, 0xff, 0xfe, 0xff, 0xfe, - 0xdb, 0xd6, 0x9a, 0xce, 0xaa, 0xaa, 0xaa, 0xaa, 0xdb, 0xde, 0x9a, 0xce, 0xbb, 0xfa, 0xff, 0xff, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xee, 0xef, 0xee, 0xdb, 0xde, 0x9a, 0xce, 0xfb, 0xfe, 0xff, 0xeb, - 0xdb, 0xd6, 0x9a, 0xce, 0xfa, 0xbf, 0xab, 0xae, 0xdb, 0xd6, 0xba, 0xce, 0xff, 0xff, 0xff, 0xfe, 0x9a, 0xd6, 0xbb, 0xce, 0xff, 0xea, 0xea, 0xea, 0x9a, 0xd6, 0xda, 0xce, 0xaa, 0xab, 0xaa, 0xaa, - 0xbb, 0xd6, 0x99, 0xce, 0xae, 0xee, 0xea, 0x8a, 0xbb, 0xd6, 0x99, 0xce, 0xfd, 0xff, 0xfe, 0xba, 0xbb, 0xd6, 0x99, 0xce, 0xff, 0xbb, 0xba, 0xea, 0xbb, 0xd6, 0x9a, 0xce, 0x57, 0xf7, 0x5f, 0xfe, - 0xbb, 0xd6, 0x9a, 0xce, 0xfd, 0xff, 0xfd, 0x5d, 0xbb, 0xd6, 0x9a, 0xce, 0x95, 0x5f, 0x55, 0xd5, 0x7a, 0xd6, 0x9a, 0xce, 0x56, 0x7d, 0xd5, 0x55, 0xbb, 0xd6, 0x7a, 0xce, 0xfe, 0xff, 0xff, 0xff, - 0xbb, 0xd6, 0x7a, 0xce, 0xfb, 0xfb, 0xff, 0xff, 0xba, 0xd6, 0x7a, 0xc6, 0xaa, 0xab, 0xfa, 0xfe, 0x9a, 0xd6, 0x7a, 0xce, 0xea, 0xea, 0x7a, 0xee, 0xba, 0xce, 0x9a, 0xce, 0x35, 0xf9, 0x55, 0x5d, - 0x9a, 0xce, 0x7a, 0xce, 0xc0, 0x00, 0x00, 0x00, 0xba, 0xce, 0x7a, 0xce, 0xfb, 0xff, 0xaf, 0xaa, 0xbb, 0xd6, 0x99, 0xce, 0xff, 0x5f, 0xd7, 0xff, 0x7a, 0xd6, 0xbb, 0xce, 0xfb, 0xfe, 0xef, 0xff, - 0xbb, 0xd6, 0x9a, 0xce, 0xdd, 0xe7, 0xff, 0xab, 0xbb, 0xd6, 0x9a, 0xce, 0xad, 0xae, 0xff, 0xea, 0x9a, 0xd6, 0xbb, 0xce, 0xbf, 0xeb, 0xff, 0xff, 0x9a, 0xd6, 0xbb, 0xce, 0xfa, 0xaf, 0xff, 0xfb, - 0x99, 0xd6, 0xbb, 0xce, 0x6f, 0xff, 0xbe, 0xfd, 0xbb, 0xd6, 0x9a, 0xce, 0xae, 0xaa, 0xab, 0x8a, 0xbb, 0xd6, 0x9a, 0xce, 0xab, 0xab, 0xaa, 0x2a, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xaa, 0xa8, 0xae, - 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xaa, 0xaa, 0x8b, 0x9a, 0xd6, 0xdb, 0xce, 0xaa, 0xbe, 0xee, 0xbe, 0x9a, 0xd6, 0xdb, 0xce, 0xfe, 0xba, 0xef, 0xfa, 0xbb, 0xd6, 0x99, 0xce, 0xa2, 0xa2, 0xaa, 0x0a, - 0xbb, 0xd6, 0xba, 0xce, 0x2f, 0x8a, 0x0a, 0xa0, 0xbb, 0xd6, 0x9a, 0xce, 0x8a, 0x20, 0x88, 0x00, 0xdb, 0xde, 0x9a, 0xce, 0xff, 0xfa, 0xef, 0xbf, 0xdb, 0xde, 0x9a, 0xce, 0xff, 0xff, 0xff, 0xae, - 0x7a, 0xce, 0x9a, 0xc6, 0xfa, 0xbe, 0xfa, 0xaf, 0x79, 0xce, 0x9a, 0xc6, 0xbc, 0xae, 0xff, 0xe2, 0x9b, 0xce, 0x79, 0xc6, 0xfe, 0xfe, 0xbe, 0xff, 0x7b, 0xce, 0x99, 0xc6, 0xeb, 0xab, 0x8a, 0xaa, - 0x7a, 0xce, 0x9a, 0xc6, 0xab, 0xea, 0xea, 0xff, 0x9a, 0xce, 0x7a, 0xc6, 0xbe, 0x9a, 0xfa, 0xba, 0x7a, 0xce, 0x9a, 0xc6, 0xef, 0xeb, 0xbb, 0xab, 0x9a, 0xce, 0x79, 0xc6, 0xaa, 0xaa, 0xbb, 0xfb, - 0x7a, 0xce, 0x9a, 0xc6, 0xed, 0xaa, 0xa9, 0xbf, 0x7a, 0xce, 0x9a, 0xc6, 0x5f, 0xaa, 0xaa, 0xb8, 0x9a, 0xce, 0x7a, 0xc6, 0xaa, 0xac, 0xaa, 0xff, 0x9a, 0xce, 0x79, 0xc6, 0x22, 0xa8, 0xaa, 0xa8, - 0x9a, 0xce, 0x79, 0xc6, 0x22, 0x88, 0xa2, 0x88, 0x9a, 0xce, 0x79, 0xc6, 0x8a, 0x82, 0xaa, 0xaa, 0x7a, 0xce, 0xba, 0xc6, 0xea, 0xee, 0xaa, 0xea, 0x79, 0xce, 0x9a, 0xc6, 0xbd, 0xb8, 0xbf, 0xab, - 0xba, 0xce, 0x79, 0xc6, 0xfa, 0xeb, 0xef, 0xfb, 0x9a, 0xce, 0x79, 0xc6, 0xa8, 0x8a, 0xea, 0xea, 0x9a, 0xce, 0x7a, 0xc6, 0xaa, 0xa8, 0x8a, 0x22, 0x9a, 0xce, 0x79, 0xc6, 0xa2, 0xea, 0x20, 0x82, - 0x79, 0xce, 0xba, 0xc6, 0xaa, 0x82, 0xfa, 0xba, 0x9b, 0xce, 0x79, 0xc6, 0xa8, 0xa8, 0x82, 0x00, 0xba, 0xce, 0x7a, 0xc6, 0xff, 0xea, 0xab, 0xaa, 0x9a, 0xd6, 0x79, 0xc6, 0xff, 0xbb, 0xee, 0xab, - 0x9a, 0xce, 0x79, 0xce, 0xf2, 0x20, 0x00, 0x00, 0xbb, 0xd6, 0x79, 0xc6, 0xef, 0xfb, 0xbe, 0xea, 0xbb, 0xd6, 0x7a, 0xc6, 0xff, 0xff, 0xea, 0xba, 0xbb, 0xd6, 0x99, 0xce, 0xd5, 0xd7, 0x5d, 0xf7, - 0xba, 0xd6, 0x99, 0xce, 0xfd, 0x7d, 0xff, 0xde, 0xbb, 0xd6, 0x99, 0xce, 0x7f, 0xdf, 0x5f, 0xfd, 0xbb, 0xd6, 0x99, 0xc6, 0xbe, 0xfe, 0xab, 0xaa, 0x9a, 0xd6, 0xba, 0xce, 0xbd, 0xbb, 0xab, 0xbf, - 0x1b, 0xdf, 0x66, 0x5a, 0x40, 0x40, 0x80, 0x00, 0xa8, 0x6a, 0xe5, 0x61, 0x58, 0xb0, 0xea, 0xfa, 0x46, 0x72, 0x63, 0x51, 0x7a, 0x0a, 0xa2, 0xfb, 0x46, 0x72, 0x43, 0x51, 0xb7, 0xa8, 0x8a, 0x9e, - 0x25, 0x72, 0x64, 0x59, 0x7f, 0xaa, 0x22, 0xea, 0xe4, 0x61, 0x43, 0x51, 0xd7, 0xfe, 0xe8, 0xea, 0x25, 0x62, 0x84, 0x59, 0x0b, 0xa8, 0x7b, 0x77, 0x05, 0x6a, 0x84, 0x51, 0xaa, 0xab, 0xfd, 0x0b, - 0x05, 0x62, 0x44, 0x59, 0xaa, 0xfe, 0x7e, 0x80, 0xe5, 0x69, 0x63, 0x59, 0xaa, 0x55, 0xf5, 0xb8, 0xe5, 0x69, 0x63, 0x59, 0xa0, 0x7f, 0x7f, 0xef, 0x05, 0x62, 0x64, 0x59, 0x02, 0x97, 0xf5, 0xae, - 0x05, 0x6a, 0xa4, 0x59, 0xe2, 0x69, 0x8a, 0x7a, 0xe5, 0x69, 0x64, 0x59, 0x7f, 0x2b, 0xfa, 0xdf, 0xa4, 0x61, 0x63, 0x51, 0xaf, 0x00, 0x0c, 0xef, 0xa4, 0x61, 0x03, 0x41, 0x0a, 0x00, 0x9c, 0xf6, - 0x84, 0x61, 0x42, 0x49, 0x88, 0xaa, 0xab, 0xfd, 0xe5, 0x61, 0x23, 0x51, 0x0a, 0xeb, 0xeb, 0xd5, 0xc5, 0x69, 0x43, 0x51, 0xa0, 0xeb, 0xa5, 0xab, 0xe5, 0x61, 0x64, 0x59, 0xc9, 0xad, 0xef, 0x2a, - 0xc4, 0x61, 0x43, 0x51, 0xba, 0x7a, 0x8a, 0x28, 0xc5, 0x61, 0x43, 0x51, 0x0a, 0xad, 0x8b, 0x2f, 0x05, 0x6a, 0xa3, 0x61, 0x2c, 0x2f, 0x3d, 0xbb, 0xc5, 0x61, 0x03, 0x41, 0x0c, 0x2c, 0xb7, 0xf7, - 0xe5, 0x61, 0x44, 0x49, 0x2a, 0xa2, 0xa2, 0xed, 0x45, 0x72, 0x43, 0x51, 0x2a, 0x3f, 0x2b, 0xa5, 0x25, 0x72, 0x83, 0x61, 0x80, 0xc8, 0x7a, 0xda, 0xc4, 0x61, 0x43, 0x59, 0xfa, 0x5e, 0xf7, 0xc2, - 0x64, 0x59, 0x23, 0x49, 0x78, 0x5c, 0xfe, 0x7e, 0x24, 0x49, 0x03, 0x41, 0xfc, 0x80, 0xc0, 0xcc, 0xc4, 0x61, 0xe3, 0x40, 0xdf, 0xf7, 0xbf, 0x8d, 0xa5, 0x61, 0x43, 0x51, 0xbd, 0xbe, 0xfe, 0x02, - 0x26, 0x6a, 0x64, 0x59, 0xad, 0xe5, 0xa5, 0x0b, 0x26, 0x6a, 0xa5, 0x59, 0xfa, 0x57, 0xfe, 0xb0, 0x87, 0x6a, 0xc4, 0x59, 0xf5, 0xff, 0xbd, 0x2e, 0xc8, 0x72, 0xc5, 0x59, 0xff, 0x5f, 0x7f, 0x8a, - 0xc8, 0x72, 0xe5, 0x61, 0xdf, 0x55, 0x75, 0x0a, 0xea, 0x72, 0xc5, 0x59, 0x55, 0xdf, 0xaf, 0xc0, 0xa8, 0x6a, 0xc5, 0x59, 0xff, 0xab, 0xa8, 0x7f, 0x88, 0x6a, 0x23, 0x41, 0xde, 0xfc, 0x77, 0xd7, - 0xe6, 0x61, 0x44, 0x49, 0xed, 0xa9, 0xaa, 0xa0, 0x26, 0x6a, 0xa4, 0x51, 0x95, 0x8a, 0x2a, 0xab, 0x67, 0x6a, 0x05, 0x62, 0x77, 0xba, 0xbd, 0xac, 0xa8, 0x72, 0x26, 0x62, 0x15, 0xb5, 0xeb, 0xbf, - 0x4a, 0x83, 0x46, 0x6a, 0x5f, 0xd5, 0x15, 0x85, 0xec, 0x9b, 0x47, 0x6a, 0xb5, 0x2f, 0x2d, 0xed, 0x31, 0xc5, 0xe8, 0x7a, 0xeb, 0xe2, 0x58, 0xf9, 0xb2, 0xd5, 0xab, 0x93, 0xab, 0xa3, 0xfd, 0xd5, - 0x51, 0xcd, 0x25, 0x6a, 0xe4, 0x70, 0xd6, 0xbe, 0x5d, 0xe7, 0xc8, 0x72, 0x00, 0x01, 0x03, 0x03, 0x9a, 0xd6, 0xbb, 0xce, 0x7b, 0xfe, 0xff, 0xff, 0x9a, 0xd6, 0xdb, 0xce, 0xae, 0xbf, 0xea, 0xaa, - 0xba, 0xd6, 0xdb, 0xce, 0x00, 0x88, 0xc2, 0x28, 0xba, 0xd6, 0xdb, 0xce, 0x20, 0x02, 0x0b, 0xa8, 0xdb, 0xd6, 0xba, 0xce, 0xff, 0xfb, 0xff, 0xbe, 0xdb, 0xd6, 0x9a, 0xce, 0xae, 0xee, 0xab, 0xaa, - 0xdb, 0xd6, 0xba, 0xce, 0xff, 0xfb, 0xef, 0xbb, 0xbb, 0xd6, 0x9a, 0xd6, 0x0a, 0xca, 0x08, 0x80, 0xdb, 0xd6, 0xba, 0xce, 0xbe, 0xfb, 0xfb, 0xff, 0x9a, 0xd6, 0xdb, 0xce, 0xef, 0xaa, 0xba, 0x8b, - 0xdb, 0xd6, 0x9a, 0xce, 0xaa, 0xaa, 0xaa, 0xef, 0xdb, 0xd6, 0xba, 0xce, 0xfa, 0xba, 0xff, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0x82, 0x02, 0x02, 0x2a, 0xbb, 0xd6, 0x9a, 0xce, 0x8e, 0xea, 0xa0, 0xa2, - 0x9a, 0xd6, 0xbb, 0xce, 0xbf, 0xee, 0xef, 0xff, 0x9a, 0xd6, 0xbb, 0xce, 0xea, 0x2f, 0xff, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xfa, 0xee, 0xfb, 0xab, 0xbb, 0xd6, 0x9a, 0xce, 0x7e, 0xfb, 0xfa, 0xbf, - 0xbb, 0xd6, 0x9a, 0xce, 0xfd, 0xfe, 0xde, 0x7f, 0xba, 0xd6, 0x9a, 0xce, 0x5f, 0xfd, 0x7d, 0xfe, 0xba, 0xce, 0x9a, 0xce, 0x55, 0x69, 0xbd, 0x55, 0x9b, 0xd6, 0x9a, 0xce, 0x55, 0x5f, 0x57, 0xb6, - 0xbb, 0xce, 0x9a, 0xce, 0xd5, 0x55, 0xde, 0xd5, 0xbb, 0xd6, 0x9a, 0xce, 0x55, 0x55, 0xdf, 0xbd, 0xbb, 0xd6, 0x7a, 0xce, 0xff, 0xff, 0xbf, 0xba, 0xba, 0xd6, 0x9a, 0xce, 0x5d, 0x75, 0x7f, 0xef, - 0xbb, 0xd6, 0x9a, 0xce, 0x75, 0x76, 0xf7, 0xfe, 0xbb, 0xd6, 0x99, 0xce, 0xfd, 0xbf, 0xfb, 0xae, 0xbb, 0xd6, 0x99, 0xce, 0xff, 0xbe, 0xfa, 0xab, 0x9b, 0xd6, 0xba, 0xce, 0xdf, 0xaf, 0xaa, 0xfe, - 0x9b, 0xd6, 0xba, 0xce, 0xeb, 0xab, 0xff, 0xeb, 0xbb, 0xd6, 0xba, 0xce, 0xd7, 0xbf, 0xeb, 0xe3, 0xbb, 0xd6, 0x9a, 0xce, 0xab, 0xa2, 0xaa, 0xaa, 0xdb, 0xd6, 0x9a, 0xce, 0xff, 0xfb, 0xfb, 0xbb, - 0xdb, 0xd6, 0x9a, 0xce, 0xff, 0xbb, 0xbf, 0xeb, 0xdb, 0xd6, 0x9a, 0xce, 0xeb, 0xbb, 0xaa, 0xaa, 0xdb, 0xd6, 0x9a, 0xce, 0xfe, 0xeb, 0xaf, 0xaa, 0xdb, 0xde, 0x9a, 0xce, 0xff, 0xff, 0xfa, 0xff, - 0xdb, 0xd6, 0x9a, 0xce, 0xaa, 0xab, 0xab, 0xaa, 0xda, 0xd6, 0x9a, 0xce, 0xeb, 0xaa, 0xab, 0xbb, 0xdb, 0xd6, 0xba, 0xce, 0xff, 0xea, 0xab, 0xee, 0xdb, 0xd6, 0x9a, 0xce, 0xef, 0xaa, 0xaa, 0xaa, - 0xdb, 0xd6, 0xba, 0xce, 0xff, 0xbf, 0xea, 0xba, 0xdb, 0xde, 0xba, 0xce, 0xff, 0xff, 0xba, 0xbf, 0xdb, 0xde, 0xba, 0xce, 0xff, 0xff, 0xff, 0xbf, 0xdb, 0xde, 0xba, 0xce, 0xfe, 0xff, 0xfe, 0xab, - 0x9b, 0xce, 0x79, 0xc6, 0xe9, 0xee, 0xff, 0xe2, 0x9a, 0xce, 0x79, 0xc6, 0x9e, 0xfe, 0xaf, 0xff, 0x7a, 0xce, 0x9a, 0xc6, 0xe8, 0xe8, 0xba, 0xbb, 0x9a, 0xce, 0x79, 0xc6, 0xff, 0xfb, 0xfe, 0xff, - 0x9a, 0xce, 0x7a, 0xc6, 0xaa, 0xff, 0xff, 0xef, 0x9b, 0xce, 0x79, 0xc6, 0xfb, 0x7f, 0xdf, 0xde, 0x9a, 0xce, 0x7a, 0xc6, 0xff, 0xff, 0x7f, 0xeb, 0x7b, 0xce, 0x99, 0xc6, 0xbe, 0xae, 0xe2, 0xfe, - 0x9a, 0xce, 0x7a, 0xc6, 0xfa, 0xff, 0xff, 0xff, 0x7a, 0xce, 0x9a, 0xc6, 0xde, 0xfa, 0xaa, 0xab, 0x9b, 0xce, 0x7a, 0xc6, 0xab, 0xbf, 0xbf, 0xff, 0x7a, 0xce, 0x9a, 0xc6, 0xab, 0xaa, 0xa7, 0xff, - 0x7a, 0xce, 0x9a, 0xc6, 0xbd, 0xae, 0xaa, 0xae, 0x9a, 0xce, 0x7a, 0xc6, 0xaa, 0x8b, 0x28, 0xa2, 0x79, 0xce, 0xba, 0xc6, 0xbe, 0xbf, 0xea, 0xbf, 0x9a, 0xce, 0x7a, 0xc6, 0x23, 0x8a, 0x00, 0x0a, - 0xba, 0xce, 0x7a, 0xce, 0xfe, 0xfb, 0xeb, 0xea, 0x9a, 0xce, 0x7a, 0xce, 0x83, 0x0a, 0x00, 0x00, 0xba, 0xce, 0x99, 0xce, 0x37, 0xef, 0xff, 0xff, 0xba, 0xce, 0x99, 0xce, 0x57, 0xff, 0xbf, 0xff, - 0xba, 0xce, 0x9a, 0xce, 0x55, 0x55, 0xdc, 0x15, 0xba, 0xce, 0x7a, 0xce, 0xff, 0xaa, 0xea, 0xaa, 0xbb, 0xce, 0x99, 0xce, 0xef, 0xff, 0xdd, 0x7f, 0xbb, 0xd6, 0x99, 0xc6, 0xef, 0xbb, 0xaa, 0xba, - 0xbb, 0xd6, 0x9a, 0xce, 0xdd, 0x57, 0xff, 0xff, 0xbb, 0xd6, 0x99, 0xc6, 0xfa, 0xea, 0xaa, 0xaa, 0x9b, 0xd6, 0xb9, 0xce, 0xff, 0xeb, 0xff, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xf7, 0xff, 0xdf, 0xa7, - 0xba, 0xd6, 0x9a, 0xce, 0xf7, 0x7f, 0xbb, 0xf7, 0x9a, 0xd6, 0xba, 0xce, 0xff, 0xff, 0x5d, 0xef, 0x9a, 0xd6, 0xba, 0xce, 0xf7, 0xff, 0xaf, 0xb5, 0x9b, 0xd6, 0xba, 0xce, 0xfa, 0xfa, 0xff, 0xfb, - 0xf9, 0xde, 0x9a, 0xce, 0x3d, 0xf5, 0xd7, 0x5d, 0x1a, 0xe7, 0xe5, 0x51, 0x57, 0x56, 0x54, 0x58, 0x87, 0x62, 0xe5, 0x59, 0x5d, 0x57, 0x5e, 0xd8, 0x25, 0x62, 0xa4, 0x59, 0xee, 0x28, 0x42, 0xf8, - 0x26, 0x6a, 0xc4, 0x59, 0xef, 0x8a, 0xfe, 0xd5, 0x05, 0x6a, 0x23, 0x49, 0xfa, 0x78, 0x5a, 0xba, 0xe5, 0x61, 0xa4, 0x51, 0xa2, 0xe9, 0x6d, 0xbf, 0x05, 0x62, 0xa4, 0x59, 0x27, 0xb5, 0xa9, 0xc2, - 0x05, 0x6a, 0xa4, 0x61, 0xea, 0xde, 0x7b, 0x5c, 0xc4, 0x61, 0x64, 0x51, 0xa0, 0x6b, 0x7a, 0xf6, 0x05, 0x62, 0x43, 0x51, 0xfa, 0xaf, 0xaf, 0x0d, 0x26, 0x62, 0x84, 0x59, 0xdd, 0xed, 0xeb, 0x22, - 0x06, 0x62, 0x85, 0x59, 0x5a, 0xfa, 0x0a, 0xa0, 0x05, 0x62, 0x43, 0x49, 0xbf, 0xde, 0xa8, 0x0a, 0x04, 0x62, 0x85, 0x59, 0x5f, 0xdd, 0xee, 0x8c, 0xe4, 0x61, 0x03, 0x41, 0xd7, 0xd7, 0xae, 0x88, - 0xa4, 0x61, 0x43, 0x51, 0xf5, 0x75, 0xab, 0xa0, 0x05, 0x6a, 0x64, 0x51, 0x7d, 0xb7, 0xaf, 0x0f, 0x05, 0x6a, 0xa4, 0x59, 0xbd, 0x7f, 0x0e, 0x0a, 0x25, 0x6a, 0x84, 0x59, 0x2b, 0xaa, 0xba, 0xde, - 0x25, 0x72, 0x23, 0x49, 0xa0, 0x20, 0xaa, 0x7a, 0xc5, 0x69, 0x43, 0x49, 0x2a, 0xa2, 0xfa, 0xad, 0xe4, 0x69, 0x23, 0x49, 0x80, 0xe8, 0x7b, 0x7a, 0xa4, 0x51, 0xe3, 0x40, 0xe5, 0x09, 0x2d, 0xaf, - 0xe3, 0x69, 0x24, 0x49, 0xed, 0xaa, 0xaa, 0x3f, 0x04, 0x72, 0x23, 0x49, 0xb7, 0xb7, 0x2a, 0x80, 0x25, 0x72, 0x83, 0x61, 0xb5, 0x5e, 0xfc, 0xd5, 0x05, 0x6a, 0x63, 0x51, 0xe0, 0xe8, 0x6a, 0x7b, - 0xe5, 0x59, 0x23, 0x49, 0x7f, 0xd7, 0xf5, 0x8a, 0xc5, 0x61, 0x23, 0x49, 0xf5, 0xad, 0xab, 0x00, 0x06, 0x6a, 0x63, 0x51, 0xed, 0xbe, 0x8a, 0x8a, 0x26, 0x6a, 0x83, 0x59, 0xfd, 0x2e, 0x2f, 0xff, - 0x47, 0x6a, 0xa4, 0x59, 0xa0, 0x22, 0xbc, 0xa7, 0x67, 0x6a, 0xc6, 0x51, 0xaa, 0xaa, 0x0a, 0xdf, 0x88, 0x6a, 0x64, 0x51, 0x02, 0x22, 0x20, 0x7a, 0x4a, 0x83, 0x64, 0x49, 0xfa, 0xf8, 0xff, 0xfd, - 0x0a, 0x7b, 0x43, 0x41, 0x8b, 0xab, 0xa2, 0xdf, 0xc8, 0x6a, 0x24, 0x41, 0xa0, 0xaa, 0x7a, 0xfe, 0x67, 0x62, 0xe3, 0x38, 0xa8, 0xff, 0x55, 0xbf, 0x05, 0x62, 0x23, 0x39, 0xbd, 0x95, 0xad, 0x02, - 0x47, 0x6a, 0x44, 0x41, 0x9e, 0xd7, 0xbe, 0x27, 0x46, 0x6a, 0xa4, 0x59, 0xa2, 0xb5, 0xad, 0x82, 0x46, 0x6a, 0xe5, 0x59, 0xee, 0x7a, 0xda, 0x3d, 0x67, 0x6a, 0x05, 0x5a, 0x00, 0xf9, 0x7f, 0xbf, - 0x67, 0x6a, 0xe5, 0x59, 0xdf, 0x5e, 0x8b, 0xe0, 0x4c, 0x9c, 0xe5, 0x59, 0xaf, 0xd5, 0xaf, 0x0d, 0x10, 0xbd, 0x87, 0x6a, 0x75, 0xeb, 0xab, 0xa2, 0xce, 0xbc, 0xe8, 0x7a, 0xad, 0x83, 0xb8, 0x82, - 0xfa, 0xde, 0x86, 0x72, 0xf6, 0xb7, 0x2e, 0x2e, 0xda, 0xde, 0xba, 0xd6, 0x56, 0x56, 0x55, 0x75, 0xbb, 0xd6, 0x99, 0xce, 0x8a, 0xa2, 0xa8, 0xa0, 0xdb, 0xd6, 0xba, 0xce, 0xff, 0xff, 0xff, 0xbb, - 0x9a, 0xd6, 0xdb, 0xce, 0xaa, 0xaa, 0xba, 0xaa, 0xbb, 0xd6, 0x9a, 0xce, 0x20, 0x82, 0x08, 0x00, 0xdb, 0xd6, 0xba, 0xce, 0xff, 0xff, 0xff, 0xbf, 0xdb, 0xd6, 0x9a, 0xce, 0xab, 0xab, 0xaa, 0xaa, - 0xdb, 0xd6, 0xba, 0xce, 0xff, 0xff, 0xeb, 0xbf, 0xbb, 0xd6, 0x9a, 0xce, 0x80, 0x02, 0x02, 0x00, 0xdb, 0xd6, 0x9a, 0xce, 0xab, 0xff, 0xba, 0xea, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xaa, 0x82, 0x0a, - 0x9a, 0xd6, 0xdb, 0xce, 0xfb, 0xfb, 0xfe, 0xaa, 0x9a, 0xd6, 0xdb, 0xce, 0xaf, 0xaa, 0xba, 0xaf, 0x9a, 0xd6, 0xdb, 0xce, 0xae, 0xaa, 0xef, 0xea, 0xbb, 0xd6, 0x9a, 0xce, 0xea, 0xaa, 0xaa, 0xaa, - 0x9a, 0xd6, 0xdb, 0xce, 0xff, 0xaa, 0xbb, 0xab, 0xda, 0xd6, 0x9a, 0xce, 0xff, 0xff, 0xff, 0xff, 0x9a, 0xd6, 0xbb, 0xce, 0xff, 0xfa, 0x7b, 0xfe, 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xfe, 0xbe, 0xaf, - 0xbb, 0xd6, 0x9a, 0xce, 0xbf, 0xaf, 0xfa, 0xaf, 0x9a, 0xd6, 0xbb, 0xce, 0xf0, 0xaf, 0xff, 0xb7, 0xbb, 0xd6, 0x9a, 0xce, 0xe5, 0xbd, 0xbd, 0xbb, 0xbb, 0xd6, 0x9a, 0xce, 0xf7, 0xbe, 0xee, 0xfb, - 0xbb, 0xd6, 0x9a, 0xce, 0xfd, 0xd5, 0xef, 0xab, 0x9a, 0xd6, 0xbb, 0xce, 0xff, 0xaa, 0xff, 0xbe, 0x9a, 0xd6, 0xba, 0xce, 0xf7, 0xaf, 0xf7, 0xff, 0x9b, 0xd6, 0xba, 0xce, 0x7b, 0xbb, 0xfd, 0xbf, - 0x9a, 0xd6, 0xbb, 0xce, 0xfb, 0xfa, 0xbf, 0xfa, 0xbb, 0xd6, 0x99, 0xce, 0xab, 0x2a, 0x8a, 0xaa, 0xbb, 0xd6, 0x9a, 0xce, 0xfa, 0xab, 0xee, 0x8a, 0x9a, 0xd6, 0xbb, 0xce, 0xba, 0xee, 0xf7, 0xbf, - 0x9a, 0xd6, 0xbb, 0xce, 0xeb, 0xff, 0xff, 0xfe, 0x9a, 0xd6, 0xbb, 0xce, 0xfa, 0xff, 0xbf, 0xae, 0x9a, 0xd6, 0xdb, 0xce, 0xaa, 0xbe, 0xaa, 0xaa, 0xbb, 0xd6, 0x9a, 0xce, 0xa8, 0x22, 0x2a, 0x22, - 0xbb, 0xd6, 0x9a, 0xce, 0x0a, 0x02, 0x00, 0x00, 0xdb, 0xd6, 0x9a, 0xce, 0xba, 0xea, 0xba, 0xab, 0xdb, 0xd6, 0xba, 0xd6, 0x55, 0x55, 0x56, 0x5e, 0xdb, 0xd6, 0xba, 0xce, 0xfe, 0xfe, 0xae, 0xa8, - 0xdb, 0xd6, 0xba, 0xd6, 0xe5, 0x7f, 0xf7, 0xef, 0xdb, 0xde, 0xba, 0xce, 0xff, 0xff, 0xff, 0xfa, 0xdb, 0xd6, 0xba, 0xce, 0xbf, 0xfa, 0xae, 0xac, 0xdb, 0xde, 0xba, 0xce, 0xff, 0xff, 0xff, 0xff, - 0xdb, 0xd6, 0xba, 0xce, 0xbf, 0xaf, 0xaa, 0x8e, 0xdb, 0xde, 0xba, 0xce, 0xeb, 0xeb, 0xff, 0xaa, 0xdb, 0xde, 0xba, 0xce, 0xfe, 0xff, 0xbb, 0xee, 0xdb, 0xde, 0xba, 0xd6, 0xdf, 0xff, 0xff, 0xff, - 0x9a, 0xce, 0x7a, 0xc6, 0xbe, 0xf5, 0xff, 0xff, 0x9a, 0xce, 0x79, 0xc6, 0xef, 0xf7, 0xff, 0xea, 0x7a, 0xce, 0x9a, 0xc6, 0xaa, 0xba, 0xaf, 0xaa, 0x9a, 0xce, 0x79, 0xc6, 0xff, 0xdf, 0xfe, 0xaf, - 0x9a, 0xce, 0x79, 0xc6, 0xff, 0xff, 0x7f, 0x7e, 0x7a, 0xce, 0x9a, 0xc6, 0xe8, 0xf6, 0xfa, 0xa2, 0x7a, 0xce, 0x9a, 0xc6, 0xf0, 0x7f, 0xfe, 0xaa, 0x9b, 0xce, 0x79, 0xc6, 0x75, 0xd7, 0xff, 0x3f, - 0x9a, 0xce, 0x7a, 0xc6, 0xff, 0xbf, 0xfe, 0xab, 0x7a, 0xce, 0x9a, 0xc6, 0xaf, 0x8d, 0xeb, 0xef, 0x7a, 0xce, 0x9a, 0xc6, 0xba, 0xab, 0xab, 0xf7, 0x9a, 0xce, 0x7a, 0xc6, 0xfb, 0xaa, 0xaa, 0xaa, - 0x9b, 0xce, 0x7a, 0xc6, 0x3a, 0xaa, 0x22, 0xa8, 0xba, 0xce, 0x7a, 0xc6, 0xae, 0xaa, 0xaa, 0xab, 0xbb, 0xce, 0x79, 0xce, 0xff, 0xbb, 0xaa, 0xea, 0xbb, 0xce, 0x79, 0xce, 0xab, 0xaa, 0xbf, 0xaa, - 0xbb, 0xd6, 0x9a, 0xce, 0xd5, 0xfd, 0xf5, 0xff, 0x9b, 0xd6, 0xba, 0xce, 0xbe, 0xef, 0xea, 0x9f, 0xbb, 0xd6, 0x9a, 0xce, 0xdd, 0x7f, 0xfa, 0xaf, 0xba, 0xd6, 0x9a, 0xce, 0xf7, 0xfd, 0x7f, 0xbf, - 0xba, 0xd6, 0x9a, 0xce, 0x7f, 0xfa, 0xfe, 0xba, 0xbb, 0xd6, 0x9a, 0xce, 0xef, 0xfd, 0xee, 0xbe, 0x99, 0xd6, 0xbb, 0xce, 0xea, 0xfd, 0xbf, 0xfb, 0x9a, 0xd6, 0xbb, 0xce, 0xff, 0xff, 0xf7, 0xbe, - 0xbb, 0xd6, 0x9a, 0xce, 0xdf, 0xff, 0xbb, 0xbe, 0xbb, 0xd6, 0x9a, 0xce, 0xbf, 0xbb, 0xfb, 0xfe, 0xba, 0xd6, 0x9a, 0xce, 0xff, 0xae, 0xff, 0xbb, 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xba, 0xaa, 0xba, - 0x9a, 0xd6, 0xbb, 0xce, 0xef, 0xef, 0xae, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xfe, 0xbf, 0xfa, 0xeb, 0xbb, 0xd6, 0x9a, 0xce, 0x7f, 0xfe, 0xfb, 0xfa, 0xbb, 0xd6, 0x9a, 0xce, 0xae, 0xbb, 0xff, 0xfe, - 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xbf, 0xbb, 0x6f, 0xfb, 0xde, 0xe8, 0x62, 0x40, 0x00, 0x00, 0x00, 0xaf, 0xa4, 0xc4, 0x51, 0x5f, 0xff, 0xfc, 0xfe, 0x67, 0x62, 0xc5, 0x51, 0xd5, 0xa2, 0xe2, 0x82, - 0x26, 0x62, 0xc5, 0x51, 0x27, 0x0a, 0xaa, 0x9d, 0x67, 0x6a, 0xe5, 0x59, 0xd7, 0x2b, 0x3b, 0xff, 0x45, 0x6a, 0xc4, 0x61, 0x7e, 0xfe, 0x7c, 0xea, 0x05, 0x6a, 0xc4, 0x61, 0x57, 0xfe, 0xaa, 0x2b, - 0x05, 0x6a, 0x43, 0x51, 0xaa, 0xea, 0xfe, 0x58, 0xe5, 0x61, 0x63, 0x51, 0xaf, 0x03, 0x83, 0xfd, 0x26, 0x62, 0x43, 0x49, 0x2a, 0xa2, 0xae, 0x75, 0x26, 0x5a, 0x02, 0x49, 0x28, 0x00, 0xaa, 0xf5, - 0x26, 0x62, 0x23, 0x49, 0xa0, 0xaa, 0xfb, 0xad, 0x25, 0x62, 0x84, 0x59, 0x2a, 0xaa, 0xdd, 0x95, 0x05, 0x6a, 0x44, 0x51, 0xa8, 0xd6, 0xde, 0xa8, 0x05, 0x62, 0x63, 0x51, 0x03, 0x29, 0xaf, 0xaa, - 0xe4, 0x69, 0xa3, 0x59, 0x7e, 0x77, 0xfa, 0xf8, 0xe4, 0x69, 0x63, 0x51, 0x0f, 0x5f, 0xef, 0xa8, 0xe5, 0x69, 0x23, 0x51, 0xa0, 0xf5, 0x8a, 0xfb, 0xe5, 0x61, 0x44, 0x49, 0xdf, 0x00, 0x82, 0xba, - 0xe4, 0x61, 0xe3, 0x38, 0x8a, 0x80, 0xea, 0x7a, 0xc5, 0x61, 0xe3, 0x30, 0x00, 0xa2, 0x7a, 0xfd, 0xa5, 0x59, 0xc3, 0x30, 0xe8, 0xff, 0xdd, 0xd6, 0xc4, 0x69, 0xa2, 0x38, 0xaf, 0xab, 0x3f, 0x37, - 0x04, 0x72, 0x63, 0x51, 0x2d, 0x83, 0xa2, 0xa2, 0x45, 0x72, 0xa3, 0x61, 0x6d, 0xe1, 0xfe, 0xfe, 0xe5, 0x69, 0xa4, 0x61, 0x30, 0xae, 0x6e, 0xc2, 0xe4, 0x69, 0x23, 0x49, 0xe8, 0x7c, 0x7e, 0x57, - 0xc4, 0x61, 0x23, 0x49, 0x2b, 0xb7, 0xad, 0xad, 0x05, 0x6a, 0x83, 0x61, 0xfe, 0xbd, 0xed, 0x0b, 0x26, 0x6a, 0x63, 0x51, 0x5f, 0x0a, 0xaa, 0x20, 0x26, 0x6a, 0x84, 0x51, 0x5f, 0x0a, 0x8a, 0xa8, - 0x26, 0x6a, 0x63, 0x49, 0xe7, 0x00, 0x02, 0xea, 0x05, 0x6a, 0x63, 0x49, 0x57, 0x0f, 0xaa, 0xeb, 0x05, 0x62, 0x24, 0x49, 0xde, 0x02, 0x00, 0x00, 0xe8, 0x7a, 0x84, 0x51, 0x55, 0x8b, 0x22, 0x2f, - 0x69, 0x8b, 0xc5, 0x59, 0xd7, 0x5e, 0xff, 0x82, 0x67, 0x6a, 0x23, 0x49, 0xaa, 0xab, 0xa0, 0x60, 0xe6, 0x59, 0xe3, 0x38, 0xae, 0x2f, 0x2f, 0xb5, 0x46, 0x62, 0x85, 0x51, 0xff, 0xe8, 0xf2, 0x7b, - 0x26, 0x62, 0x03, 0x39, 0x0f, 0x07, 0x0d, 0x0d, 0x26, 0x62, 0xe5, 0x59, 0x8f, 0x8a, 0x8b, 0x6d, 0x26, 0x62, 0xe5, 0x59, 0x2b, 0x02, 0x2e, 0x21, 0x87, 0x6a, 0xe5, 0x61, 0xba, 0x37, 0xab, 0x0a, - 0xf0, 0xb4, 0xc5, 0x59, 0xff, 0x5f, 0x35, 0x2f, 0xaf, 0xac, 0x68, 0x6a, 0xa9, 0x29, 0x0a, 0xf8, 0x0f, 0xbd, 0xcc, 0x93, 0x0a, 0xb8, 0x7a, 0x8d, 0x93, 0xcd, 0x8a, 0x93, 0xab, 0xed, 0xa9, 0x3a, - 0xdb, 0xd6, 0xf1, 0xa4, 0x09, 0x00, 0x00, 0x00, 0xdb, 0xd6, 0x9a, 0xce, 0xaa, 0xba, 0xaa, 0xaa, 0xdb, 0xde, 0xba, 0xce, 0xff, 0xff, 0xbb, 0xff, 0xdb, 0xd6, 0xba, 0xce, 0xfe, 0xea, 0xfe, 0xaa, - 0xdb, 0xd6, 0xba, 0xce, 0xef, 0xaf, 0x8b, 0xaf, 0xdb, 0xd6, 0xba, 0xce, 0xff, 0xff, 0xae, 0xbe, 0xdb, 0xd6, 0xba, 0xce, 0xef, 0xbf, 0xfb, 0xfa, 0xdb, 0xd6, 0x9a, 0xce, 0xaa, 0xaa, 0xea, 0xaa, - 0xbb, 0xde, 0xba, 0xce, 0xff, 0xeb, 0xaa, 0xbb, 0xdb, 0xd6, 0x9a, 0xce, 0xab, 0xaa, 0xaa, 0xaa, 0xbb, 0xde, 0xba, 0xce, 0xff, 0xff, 0xfb, 0xaa, 0xdb, 0xd6, 0x9a, 0xce, 0xab, 0xaa, 0xaa, 0xaa, - 0xdb, 0xde, 0xba, 0xce, 0xff, 0xff, 0xff, 0xfe, 0xdb, 0xd6, 0xba, 0xce, 0xff, 0xeb, 0xbf, 0xea, 0xba, 0xd6, 0xdb, 0xce, 0x82, 0xeb, 0xaa, 0x82, 0xdb, 0xd6, 0x9a, 0xce, 0xee, 0xfb, 0xaa, 0xaa, - 0xdb, 0xd6, 0x9a, 0xce, 0xfb, 0xfe, 0xaa, 0xaa, 0xbb, 0xd6, 0xba, 0xce, 0xbf, 0x2a, 0x2a, 0x20, 0xdb, 0xd6, 0xba, 0xce, 0xff, 0xff, 0xff, 0xba, 0xdb, 0xd6, 0x9a, 0xce, 0xfb, 0xaf, 0xab, 0xea, - 0xbb, 0xd6, 0x99, 0xce, 0xea, 0x8a, 0xa2, 0x82, 0xdb, 0xd6, 0x9a, 0xce, 0xef, 0xff, 0xbf, 0xaa, 0xdb, 0xd6, 0x9a, 0xce, 0xff, 0xfb, 0xfb, 0xaa, 0xbb, 0xd6, 0x99, 0xce, 0xee, 0x8a, 0xa0, 0x08, - 0xdb, 0xd6, 0x9a, 0xce, 0xff, 0xff, 0xea, 0xaa, 0xdb, 0xd6, 0x9a, 0xce, 0xff, 0xef, 0xab, 0xaa, 0xdb, 0xd6, 0x9a, 0xce, 0xff, 0xff, 0xfb, 0xaa, 0xdb, 0xd6, 0x9a, 0xce, 0xff, 0xfe, 0xfb, 0xaa, - 0xbb, 0xd6, 0x9a, 0xce, 0x2a, 0xab, 0x22, 0x00, 0xbb, 0xd6, 0xba, 0xce, 0xa0, 0x0a, 0x00, 0x8a, 0xdb, 0xd6, 0x9a, 0xce, 0xbf, 0xbe, 0xbb, 0xaa, 0xdb, 0xd6, 0x9a, 0xce, 0xff, 0xea, 0xae, 0xab, - 0xdb, 0xde, 0xba, 0xce, 0xff, 0xff, 0xff, 0xbf, 0xdb, 0xd6, 0x9a, 0xce, 0xff, 0xbe, 0xaa, 0xae, 0xdb, 0xd6, 0x9a, 0xce, 0xbf, 0xff, 0xab, 0xab, 0xdb, 0xd6, 0x9a, 0xce, 0xfe, 0xfe, 0xea, 0xea, - 0xdb, 0xd6, 0x9a, 0xce, 0xba, 0xfe, 0xba, 0xae, 0xdb, 0xd6, 0x9a, 0xce, 0xaa, 0xaf, 0xaa, 0xaa, 0xdb, 0xd6, 0x9a, 0xce, 0xaa, 0xae, 0xbe, 0xaa, 0xdb, 0xd6, 0x9a, 0xd6, 0xae, 0xea, 0xaa, 0xee, - 0xdb, 0xde, 0xba, 0xce, 0xba, 0xff, 0xff, 0xff, 0xdb, 0xd6, 0xba, 0xce, 0xfe, 0xaf, 0xbf, 0xea, 0xdb, 0xd6, 0x9a, 0xce, 0xaa, 0xaa, 0xaa, 0xaa, 0xdb, 0xd6, 0x9a, 0xce, 0xaa, 0xea, 0xab, 0xba, - 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xab, 0xfa, 0xbe, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xaa, 0xbe, 0xae, 0xdb, 0xde, 0xba, 0xce, 0xab, 0xfe, 0xfe, 0xef, 0xdb, 0xde, 0xba, 0xce, 0xaa, 0xfb, 0xbb, 0xfe, - 0x79, 0xce, 0x9a, 0xc6, 0xaa, 0xaf, 0xf7, 0xaa, 0x9a, 0xce, 0x79, 0xc6, 0xbb, 0xaf, 0x0a, 0x8a, 0x7a, 0xce, 0x9a, 0xc6, 0xaa, 0xaa, 0xb5, 0xaa, 0x9a, 0xce, 0x79, 0xc6, 0xeb, 0x28, 0x0a, 0x2a, - 0x9a, 0xce, 0x7a, 0xc6, 0xbe, 0xaa, 0xe8, 0x22, 0x79, 0xce, 0x9a, 0xc6, 0xee, 0xd7, 0xb8, 0xfd, 0x9a, 0xce, 0x79, 0xc6, 0xa8, 0x8a, 0xaa, 0x88, 0x7a, 0xce, 0x9a, 0xc6, 0xb6, 0xaa, 0xff, 0xea, - 0x9b, 0xce, 0x7a, 0xc6, 0xa3, 0x8a, 0xaa, 0x8a, 0x9b, 0xce, 0x79, 0xc6, 0xab, 0xea, 0xa8, 0x0a, 0x9a, 0xce, 0x7a, 0xc6, 0x0a, 0xa2, 0x0e, 0x00, 0xba, 0xce, 0x7a, 0xc6, 0xaf, 0xbf, 0xaa, 0xba, - 0xba, 0xce, 0x9a, 0xce, 0x57, 0x55, 0x5b, 0x76, 0xba, 0xce, 0x9a, 0xce, 0x55, 0xed, 0xa4, 0xb5, 0xbb, 0xd6, 0x99, 0xce, 0xd5, 0xfd, 0xfd, 0xbb, 0xbb, 0xd6, 0x9a, 0xce, 0x7d, 0xff, 0xff, 0xeb, - 0xbb, 0xd6, 0x9a, 0xce, 0xfd, 0xee, 0xfb, 0x88, 0x9a, 0xd6, 0xbb, 0xce, 0xbf, 0xfe, 0xf5, 0xbf, 0x9a, 0xd6, 0xbb, 0xce, 0xbf, 0xfd, 0xbf, 0xba, 0x9a, 0xd6, 0xbb, 0xce, 0xf8, 0xee, 0xf5, 0xff, - 0xbb, 0xd6, 0x9a, 0xce, 0xee, 0xe2, 0xaa, 0xab, 0xbb, 0xd6, 0x9a, 0xce, 0xae, 0xbb, 0xea, 0xab, 0xbb, 0xd6, 0x9a, 0xce, 0x9e, 0xfa, 0xfe, 0x8e, 0xbb, 0xd6, 0x9a, 0xce, 0xbe, 0xab, 0xeb, 0x88, - 0xbb, 0xd6, 0x9a, 0xce, 0xb3, 0xbe, 0xfb, 0xaa, 0x9a, 0xd6, 0xbb, 0xce, 0xab, 0xaf, 0xfe, 0xef, 0x9a, 0xd6, 0xbb, 0xce, 0xfc, 0xe2, 0xff, 0xbf, 0x9a, 0xd6, 0xbb, 0xce, 0xee, 0xbf, 0xaa, 0x72, - 0xbb, 0xd6, 0x9a, 0xce, 0x66, 0xfa, 0xbb, 0xea, 0xbb, 0xd6, 0x9a, 0xce, 0xbe, 0xaa, 0x8b, 0xba, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0x9a, 0xaa, 0xab, 0x99, 0xd6, 0xbb, 0xce, 0x5f, 0xfe, 0xff, 0xfa, - 0xbb, 0xd6, 0x9a, 0xce, 0xf9, 0xf9, 0xbf, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xeb, 0xfd, 0xef, 0x3b, 0xe7, 0xc5, 0x51, 0x5c, 0x58, 0x50, 0xc0, 0xa8, 0x6a, 0xa6, 0x49, 0x0b, 0xd5, 0xfc, 0xc0, - 0x47, 0x62, 0xe6, 0x51, 0xf4, 0xb7, 0xa8, 0x03, 0x87, 0x62, 0xc5, 0x51, 0xff, 0xd5, 0xab, 0xe8, 0x67, 0x6a, 0x64, 0x41, 0xaa, 0x7a, 0x80, 0x02, 0x25, 0x62, 0x43, 0x41, 0xaa, 0xf5, 0x00, 0xa8, - 0xe5, 0x61, 0x84, 0x51, 0x48, 0xfd, 0xf8, 0xb2, 0xe4, 0x61, 0x43, 0x49, 0xde, 0x2a, 0x82, 0xaa, 0xe4, 0x61, 0x03, 0x49, 0xbf, 0xe8, 0x5a, 0xaa, 0x84, 0x59, 0x02, 0x41, 0x70, 0x7e, 0x55, 0xb8, - 0xe4, 0x61, 0x23, 0x41, 0x0d, 0x25, 0xd7, 0xff, 0x05, 0x62, 0x64, 0x51, 0x02, 0x8a, 0xaf, 0xe5, 0xe5, 0x61, 0x84, 0x59, 0xe8, 0x2a, 0x2c, 0x77, 0xe5, 0x61, 0x43, 0x59, 0xae, 0xa0, 0xa6, 0x5d, - 0x05, 0x62, 0x83, 0x59, 0x57, 0xbe, 0x2b, 0x2b, 0x05, 0x62, 0x64, 0x59, 0x57, 0x7b, 0xa0, 0x2a, 0x25, 0x6a, 0x44, 0x51, 0x7f, 0x6f, 0x82, 0xaa, 0xc5, 0x59, 0x24, 0x49, 0x57, 0xf7, 0xbe, 0x22, - 0xa4, 0x59, 0x03, 0x39, 0x7f, 0x7f, 0x7a, 0x58, 0x44, 0x51, 0xe2, 0x30, 0x5f, 0xed, 0xfe, 0x3f, 0x03, 0x6a, 0xc2, 0x30, 0xd7, 0xbf, 0x2b, 0x02, 0x25, 0x72, 0x83, 0x59, 0xd5, 0x7e, 0xaa, 0x82, - 0xe4, 0x69, 0x23, 0x49, 0x08, 0x97, 0xa8, 0xaa, 0xc4, 0x61, 0x62, 0x59, 0x80, 0x02, 0x6e, 0x68, 0xe4, 0x69, 0x23, 0x49, 0xaa, 0xe8, 0xd7, 0xba, 0xa4, 0x69, 0x43, 0x51, 0x75, 0xdf, 0xff, 0xa8, - 0xc5, 0x61, 0x43, 0x49, 0xaf, 0x2a, 0xff, 0x6a, 0x06, 0x6a, 0x23, 0x41, 0x0a, 0xaa, 0xff, 0x57, 0x26, 0x6a, 0x44, 0x49, 0x00, 0xbf, 0x5f, 0x2b, 0x46, 0x6a, 0x64, 0x51, 0xa8, 0xaa, 0x55, 0xea, - 0xe5, 0x61, 0xe2, 0x30, 0x78, 0xda, 0xaa, 0xa8, 0xe5, 0x61, 0x64, 0x51, 0x83, 0xdd, 0xaa, 0xdd, 0xc8, 0x6a, 0xa5, 0x59, 0xfd, 0x5d, 0xe5, 0x83, 0x6e, 0x9c, 0x84, 0x51, 0x7b, 0xfb, 0x5f, 0x3a, - 0x2d, 0xa4, 0x66, 0x6a, 0x5d, 0xd7, 0xef, 0x0a, 0x09, 0x7b, 0xc2, 0x38, 0x7a, 0xaa, 0xa0, 0xa8, 0x67, 0x62, 0xe3, 0x38, 0xf5, 0xaa, 0x20, 0x80, 0x26, 0x62, 0x44, 0x41, 0xea, 0x68, 0xe8, 0x68, - 0x47, 0x6a, 0x44, 0x49, 0xbd, 0xab, 0xab, 0x0a, 0xa9, 0x6a, 0xc5, 0x59, 0x7d, 0x2a, 0x8a, 0xa8, 0xcb, 0x8b, 0xe6, 0x59, 0x5d, 0xf7, 0xef, 0xe2, 0x0d, 0x9c, 0x47, 0x62, 0xd5, 0x5d, 0xbd, 0x3f, - 0xcf, 0xb4, 0xc9, 0x72, 0xbd, 0x07, 0x09, 0x0b, 0xef, 0xbc, 0xec, 0x9b, 0xf4, 0x58, 0x37, 0x8a, 0xd9, 0xe6, 0x2c, 0xa4, 0xfd, 0xff, 0x5f, 0x17, 0xdb, 0xd6, 0x11, 0xbd, 0x35, 0x0d, 0x02, 0x00, - 0xdb, 0xd6, 0xba, 0xce, 0xae, 0xbf, 0xae, 0xaa, 0xdb, 0xd6, 0xba, 0xd6, 0xb7, 0x7d, 0x7f, 0xdf, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xab, 0xbb, 0xa2, 0xdb, 0xd6, 0xba, 0xd6, 0xfe, 0xe5, 0xae, 0x6f, - 0xdb, 0xd6, 0xba, 0xd6, 0x7d, 0x57, 0xb6, 0x9f, 0xdb, 0xde, 0xba, 0xce, 0xff, 0xae, 0xaf, 0xae, 0xdb, 0xde, 0xba, 0xce, 0xfb, 0xff, 0xfb, 0xfa, 0xdb, 0xde, 0xba, 0xce, 0xbf, 0xef, 0xff, 0xae, - 0xdb, 0xd6, 0xba, 0xce, 0xeb, 0xaa, 0x2a, 0xaa, 0xdb, 0xd6, 0xba, 0xd6, 0x6f, 0xbb, 0xae, 0xff, 0xdb, 0xde, 0xba, 0xce, 0xef, 0xfe, 0xff, 0xaf, 0xda, 0xd6, 0xba, 0xce, 0xea, 0xa0, 0xa0, 0x00, - 0xdb, 0xde, 0xba, 0xce, 0xef, 0xff, 0xaa, 0xab, 0xdb, 0xd6, 0xba, 0xd6, 0x56, 0x8b, 0xea, 0xfe, 0xdb, 0xde, 0xba, 0xce, 0xff, 0xff, 0xea, 0xaa, 0xdb, 0xde, 0xba, 0xce, 0xff, 0xfe, 0xab, 0xaa, - 0xdb, 0xd6, 0xba, 0xd6, 0xdb, 0xeb, 0xab, 0x99, 0xdb, 0xde, 0xba, 0xce, 0xff, 0xae, 0xab, 0xab, 0xdb, 0xde, 0xba, 0xce, 0xef, 0xfb, 0xba, 0xaa, 0xdb, 0xde, 0xba, 0xce, 0xfe, 0xab, 0xaa, 0xaa, - 0xdb, 0xde, 0xba, 0xd6, 0xfd, 0xfd, 0xfa, 0xeb, 0xdb, 0xde, 0xba, 0xce, 0xbf, 0xba, 0xba, 0xeb, 0xdb, 0xde, 0xba, 0xce, 0xff, 0xef, 0xee, 0xea, 0xdb, 0xde, 0xba, 0xce, 0xbf, 0xff, 0xaa, 0xaa, - 0xdb, 0xde, 0xba, 0xd6, 0x5f, 0x7d, 0xbe, 0xff, 0xdb, 0xde, 0xba, 0xce, 0xff, 0xef, 0xab, 0xae, 0xdb, 0xde, 0xba, 0xd6, 0xd7, 0xff, 0xff, 0xff, 0xdb, 0xde, 0xba, 0xce, 0xff, 0xff, 0xea, 0xab, - 0xdb, 0xd6, 0xba, 0xce, 0xef, 0xeb, 0xa2, 0x28, 0xdb, 0xde, 0xba, 0xce, 0xff, 0xff, 0xff, 0xaa, 0xdb, 0xde, 0xba, 0xce, 0xfa, 0xff, 0xaa, 0xba, 0xdb, 0xde, 0xba, 0xce, 0xff, 0xbf, 0xaa, 0xaa, - 0xdb, 0xde, 0xba, 0xce, 0xbf, 0xfe, 0xea, 0xaa, 0xdb, 0xde, 0xba, 0xce, 0xff, 0xfe, 0xeb, 0xaa, 0xdb, 0xde, 0xba, 0xce, 0xbf, 0xef, 0xfb, 0xea, 0xdb, 0xde, 0xba, 0xd6, 0xff, 0xff, 0xdf, 0xaf, - 0xdb, 0xde, 0xba, 0xce, 0xfe, 0xab, 0xae, 0xaa, 0xdb, 0xde, 0xba, 0xce, 0xef, 0xaf, 0xaa, 0xaa, 0xdb, 0xde, 0xba, 0xd6, 0xd7, 0xff, 0xff, 0xea, 0xdb, 0xde, 0xba, 0xce, 0xea, 0xbf, 0xaa, 0xaa, - 0xdb, 0xde, 0xba, 0xd6, 0xfd, 0xdd, 0xff, 0xee, 0xdb, 0xde, 0xba, 0xce, 0xbf, 0xab, 0xaa, 0xaa, 0xda, 0xde, 0xbb, 0xce, 0xfe, 0xba, 0xaa, 0xaa, 0xdb, 0xd6, 0xba, 0xd6, 0xa7, 0xf6, 0xaf, 0xeb, - 0xdb, 0xd6, 0xba, 0xd6, 0x6e, 0xef, 0xef, 0xb8, 0xdb, 0xde, 0x9a, 0xce, 0xaa, 0xae, 0xea, 0xaa, 0xdb, 0xde, 0xba, 0xce, 0xef, 0xfe, 0xff, 0xbf, 0xda, 0xd6, 0xbb, 0xd6, 0x7e, 0x7e, 0xbf, 0xf3, - 0x9b, 0xce, 0x79, 0xc6, 0xca, 0x02, 0xa2, 0x00, 0x79, 0xce, 0x9a, 0xc6, 0xfe, 0xda, 0xa8, 0xba, 0x9a, 0xce, 0x79, 0xc6, 0x0a, 0xa0, 0x20, 0x08, 0x9a, 0xd6, 0x79, 0xc6, 0xbf, 0xaa, 0xaa, 0xaa, - 0xbb, 0xce, 0x79, 0xc6, 0xef, 0xae, 0xae, 0xaa, 0xba, 0xce, 0x7a, 0xce, 0xbf, 0xbe, 0xba, 0xea, 0xbb, 0xd6, 0x79, 0xc6, 0xef, 0xef, 0xfa, 0xaa, 0xba, 0xd6, 0x99, 0xc6, 0xff, 0xff, 0xbf, 0xba, - 0xba, 0xd6, 0x99, 0xc6, 0xff, 0xff, 0xff, 0xab, 0xbb, 0xd6, 0x99, 0xc6, 0xff, 0xff, 0xfb, 0xbb, 0xbb, 0xd6, 0x9a, 0xce, 0x55, 0x55, 0xdd, 0xf7, 0xbb, 0xd6, 0x9a, 0xce, 0xfd, 0xdf, 0xf7, 0xbb, - 0xbb, 0xd6, 0x99, 0xce, 0xdd, 0xff, 0xfb, 0x9f, 0xbb, 0xd6, 0x99, 0xce, 0xfd, 0xbf, 0xaf, 0xaf, 0x9a, 0xd6, 0xbb, 0xce, 0xff, 0xbb, 0xdf, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xae, 0xbb, 0xea, 0xea, - 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xbf, 0xaa, 0xae, 0xdb, 0xd6, 0x9a, 0xce, 0xef, 0xff, 0xea, 0xaf, 0xbb, 0xd6, 0x99, 0xce, 0xaa, 0xa3, 0xaa, 0xaa, 0x9a, 0xd6, 0xdb, 0xce, 0xaa, 0xba, 0xaf, 0xab, - 0x9a, 0xd6, 0xdb, 0xce, 0xab, 0xaa, 0xfa, 0xfe, 0x9a, 0xd6, 0xdb, 0xce, 0xae, 0xaa, 0xae, 0xea, 0x9a, 0xd6, 0xdb, 0xce, 0xfa, 0xaf, 0xaa, 0xaa, 0xdb, 0xd6, 0x9a, 0xce, 0xee, 0xff, 0xff, 0xaa, - 0x9a, 0xd6, 0xdb, 0xce, 0xaa, 0xea, 0xee, 0xbf, 0x9a, 0xd6, 0xdb, 0xce, 0xaa, 0xeb, 0xab, 0xbe, 0x9a, 0xd6, 0xbb, 0xce, 0xff, 0xbf, 0xbf, 0xff, 0x9a, 0xd6, 0xbb, 0xce, 0xff, 0xfe, 0xff, 0xf7, - 0xbb, 0xd6, 0x9a, 0xce, 0xbb, 0xbf, 0xaf, 0xea, 0xbb, 0xd6, 0x9a, 0xce, 0xf6, 0xfb, 0xff, 0xbb, 0xbb, 0xd6, 0x9a, 0xce, 0xfb, 0xbf, 0xee, 0xeb, 0xbb, 0xd6, 0x9a, 0xce, 0xbf, 0xba, 0xe9, 0xaa, - 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xbf, 0x7f, 0xef, 0xbb, 0xd6, 0x9a, 0xce, 0xbf, 0xbf, 0xbb, 0xab, 0xfb, 0xde, 0xad, 0x83, 0x40, 0x00, 0x00, 0x00, 0xf5, 0xc5, 0x06, 0x5a, 0x55, 0x55, 0x55, 0x54, - 0x88, 0x62, 0xe3, 0x38, 0x82, 0xaf, 0xb6, 0xb0, 0x68, 0x62, 0xe4, 0x51, 0x20, 0xf9, 0xfd, 0x97, 0x67, 0x62, 0xc4, 0x51, 0x0a, 0xaf, 0xd7, 0x82, 0x26, 0x6a, 0xa4, 0x51, 0xfe, 0x5e, 0xb7, 0x08, - 0x45, 0x6a, 0x84, 0x59, 0x5a, 0x5d, 0xba, 0xa8, 0xe4, 0x61, 0x43, 0x49, 0xfb, 0xde, 0x78, 0x54, 0xe5, 0x59, 0x03, 0x41, 0xfb, 0xaa, 0xd7, 0x2e, 0xe4, 0x61, 0xe2, 0x38, 0xea, 0x5e, 0xae, 0x80, - 0xe5, 0x61, 0x43, 0x51, 0xf5, 0x8a, 0x0a, 0x02, 0xc4, 0x61, 0x03, 0x49, 0xad, 0xaa, 0xa8, 0x80, 0xe5, 0x61, 0x63, 0x59, 0xa2, 0x02, 0x22, 0x29, 0x04, 0x62, 0x63, 0x51, 0x7d, 0x7c, 0x62, 0xca, - 0x06, 0x6a, 0x23, 0x49, 0xad, 0x2f, 0xbf, 0xff, 0x05, 0x6a, 0xc4, 0x59, 0xb5, 0xae, 0xaa, 0xed, 0x05, 0x62, 0xa4, 0x59, 0x7c, 0xb0, 0xd8, 0x5a, 0xe5, 0x61, 0x43, 0x51, 0x7e, 0xa8, 0xa8, 0xef, - 0x84, 0x51, 0x82, 0x20, 0xfc, 0xfc, 0xd6, 0x7e, 0xc4, 0x61, 0x82, 0x20, 0x2f, 0x2f, 0x2f, 0x2d, 0xe4, 0x71, 0x83, 0x59, 0x0b, 0xaa, 0xab, 0x37, 0x04, 0x72, 0x62, 0x59, 0x62, 0xfa, 0x5e, 0xf0, - 0xc4, 0x61, 0x63, 0x59, 0xfb, 0xbf, 0x2f, 0xfb, 0xa4, 0x61, 0x23, 0x51, 0xe0, 0x7e, 0x7c, 0xf7, 0x44, 0x51, 0x02, 0x41, 0x2d, 0x2a, 0xa8, 0x0a, 0x84, 0x61, 0x22, 0x49, 0x82, 0xab, 0xf7, 0x0f, - 0xc3, 0x61, 0x84, 0x59, 0xbd, 0xe3, 0x97, 0xbd, 0x25, 0x72, 0x64, 0x59, 0xba, 0x3b, 0x7b, 0x6a, 0x66, 0x72, 0x64, 0x59, 0xfe, 0xb8, 0x7f, 0x7d, 0x05, 0x6a, 0x84, 0x59, 0x54, 0x7c, 0xeb, 0xab, - 0x87, 0x6a, 0xa4, 0x61, 0xfd, 0xbd, 0xad, 0x0b, 0x0d, 0x9c, 0x06, 0x62, 0xf5, 0xf5, 0x2f, 0x8b, 0xab, 0x93, 0x46, 0x62, 0xff, 0xf5, 0x0b, 0xed, 0xef, 0xb4, 0xc5, 0x61, 0x03, 0x5f, 0xfa, 0xbf, - 0xae, 0xb4, 0xa4, 0x59, 0xe0, 0x75, 0xeb, 0xea, 0xe9, 0x7a, 0x03, 0x49, 0x8a, 0xbf, 0xa8, 0x7a, 0x68, 0x6a, 0x23, 0x49, 0xa0, 0xea, 0xfa, 0xd5, 0x06, 0x5a, 0xc2, 0x30, 0xf0, 0x9e, 0x9f, 0x9e, - 0x88, 0x6a, 0xc6, 0x51, 0xf5, 0x2e, 0xbb, 0xaf, 0x0a, 0x7b, 0x06, 0x5a, 0xb7, 0x8a, 0x3d, 0xb5, 0xcc, 0x93, 0x47, 0x62, 0x5c, 0xf8, 0x8f, 0xad, 0x30, 0xbd, 0x05, 0x5a, 0xfe, 0xab, 0xa8, 0xde, - 0x30, 0xc5, 0x09, 0x7b, 0xa3, 0xbf, 0x5a, 0xaf, 0x76, 0xde, 0x66, 0x6a, 0xbf, 0xea, 0x5b, 0x3e, 0xfb, 0xde, 0xa8, 0x6a, 0x36, 0x01, 0x02, 0x00, 0xdb, 0xd6, 0xba, 0xd6, 0x7d, 0xde, 0x5e, 0x7d, - 0xdb, 0xde, 0xba, 0xce, 0xff, 0xff, 0xbe, 0xba, 0xdb, 0xd6, 0xba, 0xd6, 0xff, 0x55, 0x75, 0x69, 0xdb, 0xd6, 0xba, 0xd6, 0xbd, 0x55, 0xdd, 0xeb, 0xdb, 0xd6, 0xba, 0xce, 0x2a, 0xae, 0xaa, 0xaa, - 0xdb, 0xde, 0xba, 0xce, 0xfb, 0xef, 0xee, 0xaf, 0xdb, 0xde, 0xba, 0xce, 0xfe, 0xfb, 0xfa, 0xaf, 0xdb, 0xde, 0xba, 0xce, 0xab, 0xeb, 0xff, 0xaa, 0xdb, 0xd6, 0xba, 0xd6, 0xaa, 0xbb, 0xc2, 0x6a, - 0xdb, 0xde, 0xba, 0xce, 0xfb, 0xef, 0xaf, 0xaa, 0xda, 0xd6, 0xbb, 0xd6, 0x8a, 0x6a, 0xfa, 0xab, 0xdb, 0xde, 0xba, 0xd6, 0xff, 0xff, 0xdf, 0xfb, 0xdb, 0xde, 0xba, 0xce, 0xfb, 0xaa, 0xaa, 0xaa, - 0xdb, 0xde, 0xba, 0xd6, 0xff, 0xff, 0xba, 0xef, 0xdb, 0xde, 0xba, 0xd6, 0xff, 0xaa, 0xfe, 0xff, 0xda, 0xd6, 0xbb, 0xd6, 0x2a, 0xbc, 0x0a, 0x20, 0xdb, 0xde, 0xba, 0xce, 0xbe, 0xaa, 0xaa, 0xa8, - 0xdb, 0xde, 0xba, 0xd6, 0xb7, 0xbf, 0xbf, 0xaa, 0xfb, 0xd6, 0xba, 0xd6, 0xfb, 0xfa, 0xfe, 0xaa, 0xdb, 0xde, 0xba, 0xd6, 0xba, 0xaf, 0xaa, 0xaa, 0xfb, 0xde, 0xba, 0xd6, 0xff, 0xee, 0xbe, 0xba, - 0xfb, 0xde, 0xda, 0xd6, 0x57, 0xff, 0xff, 0xf7, 0xfb, 0xde, 0xba, 0xd6, 0xff, 0xff, 0xbe, 0xab, 0xfb, 0xde, 0xba, 0xd6, 0xfa, 0xef, 0xab, 0xee, 0xfb, 0xde, 0xba, 0xd6, 0xff, 0xea, 0xea, 0xaa, - 0xfb, 0xde, 0xda, 0xd6, 0x57, 0xd7, 0xd7, 0xff, 0xfb, 0xde, 0xda, 0xd6, 0x55, 0xff, 0xff, 0xf5, 0xfb, 0xde, 0xba, 0xd6, 0xff, 0xef, 0xab, 0xaa, 0xfb, 0xde, 0xba, 0xd6, 0xff, 0xfb, 0xee, 0xab, - 0xfb, 0xde, 0xda, 0xd6, 0x55, 0x57, 0xff, 0xff, 0xda, 0xde, 0xbb, 0xd6, 0xff, 0xaa, 0xa0, 0x20, 0xfb, 0xde, 0xda, 0xd6, 0x55, 0x77, 0xf5, 0xff, 0xdb, 0xde, 0xba, 0xd6, 0xfe, 0xaa, 0xb2, 0x88, - 0xfb, 0xde, 0xba, 0xd6, 0xff, 0xab, 0xeb, 0xab, 0xdb, 0xde, 0xba, 0xd6, 0xab, 0xba, 0xa8, 0x2a, 0xfb, 0xde, 0xda, 0xd6, 0x55, 0x5d, 0xff, 0xef, 0xfa, 0xde, 0xbb, 0xd6, 0xff, 0xbe, 0xaa, 0xaa, - 0xdb, 0xde, 0xba, 0xd6, 0xff, 0xbe, 0xaa, 0xa2, 0xfb, 0xde, 0xba, 0xd6, 0xfb, 0xbf, 0xab, 0xaf, 0xdb, 0xde, 0xba, 0xd6, 0xee, 0xe8, 0xaa, 0x08, 0xdb, 0xde, 0xba, 0xd6, 0xab, 0xaa, 0x8a, 0x22, - 0xfa, 0xde, 0xdb, 0xd6, 0x7d, 0x5f, 0xff, 0x6d, 0xdb, 0xde, 0xba, 0xd6, 0xee, 0xaf, 0x2a, 0x82, 0xda, 0xde, 0xbb, 0xd6, 0x7e, 0xab, 0xbe, 0x8a, 0xdb, 0xde, 0xba, 0xd6, 0xff, 0xfa, 0xee, 0xa2, - 0xdb, 0xde, 0xba, 0xd6, 0xfd, 0xff, 0xba, 0x2a, 0xdb, 0xde, 0xba, 0xce, 0xbf, 0xaa, 0xaa, 0xaa, 0xdb, 0xde, 0xba, 0xce, 0xbf, 0xef, 0xaa, 0xaa, 0xdb, 0xde, 0xba, 0xd6, 0xff, 0xef, 0xfb, 0xfe, - 0xbb, 0xce, 0x99, 0xce, 0xf5, 0xff, 0xdb, 0x7b, 0x9a, 0xce, 0x7a, 0xc6, 0x08, 0x00, 0x00, 0x00, 0xba, 0xce, 0x9a, 0xce, 0x55, 0xe5, 0xf5, 0x55, 0x9b, 0xd6, 0xba, 0xc6, 0xaf, 0xef, 0xaf, 0xaa, - 0xba, 0xd6, 0x9a, 0xce, 0xdd, 0x55, 0x7d, 0xfd, 0xbb, 0xce, 0x9a, 0xce, 0x55, 0x95, 0x59, 0xdd, 0xbb, 0xce, 0x9a, 0xce, 0x5d, 0x75, 0x59, 0xaa, 0xbb, 0xce, 0x9a, 0xce, 0xc3, 0xf9, 0x79, 0xfe, - 0xbb, 0xd6, 0x9a, 0xc6, 0xaf, 0xaa, 0xaa, 0xaa, 0x9a, 0xd6, 0xbb, 0xce, 0xef, 0xef, 0xff, 0xfe, 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xff, 0x7f, 0xbb, 0xbb, 0xd6, 0x9a, 0xce, 0xef, 0xbb, 0xfe, 0x2e, - 0xbb, 0xd6, 0x9a, 0xce, 0xe6, 0xaf, 0xba, 0xba, 0xbb, 0xd6, 0x9a, 0xce, 0xfe, 0xaa, 0xbc, 0xab, 0xdb, 0xd6, 0x9a, 0xce, 0xff, 0xff, 0xbf, 0xaa, 0xdb, 0xd6, 0x9a, 0xce, 0xbf, 0xfa, 0xbf, 0xaf, - 0x9a, 0xd6, 0xdb, 0xce, 0xaa, 0xfa, 0xeb, 0xeb, 0x9a, 0xd6, 0xdb, 0xce, 0xaa, 0xaa, 0xef, 0xbb, 0x9a, 0xd6, 0xbb, 0xce, 0xad, 0xed, 0xde, 0xfa, 0x9a, 0xd6, 0xbb, 0xce, 0xfa, 0xef, 0xfd, 0xf7, - 0x9a, 0xd6, 0xdb, 0xce, 0xaa, 0xaf, 0xff, 0xba, 0x9a, 0xd6, 0xdb, 0xce, 0xae, 0xaa, 0xeb, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xba, 0x0b, 0x0a, 0xaa, 0xba, 0xd6, 0xdb, 0xce, 0xa8, 0x8a, 0xab, 0x2a, - 0x9a, 0xd6, 0xdb, 0xce, 0xee, 0xbe, 0xff, 0xfe, 0x9a, 0xd6, 0xdb, 0xce, 0xbf, 0xaa, 0xbf, 0xfe, 0xdb, 0xd6, 0x9a, 0xce, 0xeb, 0xab, 0xee, 0xea, 0x9a, 0xd6, 0xdb, 0xce, 0xfa, 0xab, 0xfe, 0xba, - 0xbb, 0xd6, 0x9a, 0xce, 0xbf, 0x3a, 0xaa, 0x20, 0xdb, 0xd6, 0x9a, 0xce, 0xfe, 0xeb, 0xfa, 0xfa, 0xdb, 0xd6, 0x9a, 0xce, 0xff, 0xbf, 0xaf, 0xea, 0xbb, 0xd6, 0x9a, 0xce, 0xbf, 0xfe, 0xaa, 0xaa, - 0x9a, 0xd6, 0xbb, 0xce, 0xf7, 0xff, 0xfa, 0xfd, 0xdb, 0xd6, 0x9a, 0xce, 0xff, 0xfe, 0xff, 0xaa, 0x9a, 0xd6, 0xbb, 0xce, 0x6c, 0xff, 0xff, 0x7f, 0x1a, 0xdf, 0x26, 0x5a, 0x54, 0x5c, 0x70, 0xc0, - 0xa9, 0x6a, 0x43, 0x51, 0x6e, 0xaa, 0xa0, 0xa2, 0x47, 0x62, 0x85, 0x51, 0x0b, 0x2b, 0x06, 0xf8, 0x87, 0x6a, 0x27, 0x5a, 0xff, 0xf7, 0xaf, 0x77, 0x67, 0x6a, 0x06, 0x62, 0x57, 0x7a, 0xc2, 0x2e, - 0x46, 0x72, 0xe5, 0x61, 0xf7, 0xff, 0x7f, 0xe0, 0x25, 0x6a, 0x84, 0x59, 0x72, 0xa6, 0xae, 0x82, 0x05, 0x62, 0x64, 0x59, 0xaa, 0xa8, 0x2a, 0x7e, 0x05, 0x6a, 0x44, 0x59, 0xa0, 0x0a, 0x00, 0xa9, - 0x05, 0x6a, 0x84, 0x61, 0x8a, 0xf2, 0xf8, 0x7a, 0xc4, 0x61, 0x43, 0x51, 0x60, 0xf8, 0xf0, 0xe8, 0x84, 0x59, 0x03, 0x41, 0x97, 0x56, 0xa8, 0x0e, 0xa4, 0x61, 0x03, 0x41, 0x2a, 0x95, 0xbf, 0xa0, - 0xe5, 0x61, 0x63, 0x59, 0x7f, 0xfa, 0xee, 0xa2, 0x05, 0x62, 0x43, 0x59, 0x8b, 0xad, 0xbf, 0xfa, 0xa4, 0x59, 0xa2, 0x28, 0xa8, 0xf8, 0x5a, 0xfa, 0x44, 0x51, 0xe3, 0x30, 0xae, 0xab, 0x29, 0x2a, - 0x63, 0x51, 0xc2, 0x38, 0x6a, 0xe2, 0xaa, 0xe8, 0x83, 0x59, 0xc2, 0x30, 0xad, 0xa9, 0x2b, 0x03, 0xe4, 0x69, 0x23, 0x49, 0x0d, 0x8a, 0x82, 0xa0, 0xa3, 0x61, 0x22, 0x51, 0xa8, 0x0d, 0xaa, 0xa2, - 0xa3, 0x61, 0x42, 0x51, 0xfe, 0x62, 0x5d, 0x2b, 0xc4, 0x61, 0x43, 0x51, 0xd7, 0xf5, 0x5f, 0xa8, 0xc4, 0x61, 0x43, 0x51, 0x5d, 0xe3, 0xa7, 0xba, 0xa4, 0x61, 0x43, 0x59, 0xe5, 0xbf, 0x2a, 0x08, - 0x05, 0x62, 0x84, 0x59, 0x9d, 0x3b, 0x2a, 0xeb, 0x25, 0x6a, 0x43, 0x49, 0xfa, 0xe8, 0x58, 0xde, 0xc4, 0x61, 0x83, 0x51, 0xa2, 0x8b, 0xbf, 0x8b, 0xe9, 0x7a, 0xa4, 0x61, 0xf5, 0x55, 0xbf, 0x37, - 0xe9, 0x7a, 0x05, 0x62, 0xfd, 0xaf, 0xfc, 0x5e, 0x09, 0x83, 0xc4, 0x59, 0x7a, 0xf2, 0xce, 0x7f, 0xc8, 0x72, 0x43, 0x49, 0xcb, 0xe2, 0xda, 0xf5, 0x6b, 0x8b, 0xc4, 0x59, 0xf3, 0xff, 0xf5, 0x2d, - 0x29, 0x8b, 0xc1, 0x40, 0x7b, 0xf3, 0xfa, 0xf8, 0xe4, 0x61, 0xe3, 0x40, 0xbd, 0xaf, 0x0a, 0x00, 0x88, 0x6a, 0x64, 0x51, 0x5d, 0xad, 0xbf, 0xa3, 0x06, 0x5a, 0xe3, 0x38, 0x9c, 0x96, 0xb4, 0xb4, - 0x29, 0x7b, 0xc5, 0x59, 0xfd, 0x5d, 0xd5, 0x2d, 0x2c, 0x9c, 0x67, 0x62, 0x7d, 0xd5, 0xbf, 0xf8, 0x8e, 0xac, 0x67, 0x6a, 0xf5, 0x7f, 0x3e, 0x2f, 0xef, 0xbc, 0x25, 0x5a, 0xaf, 0xae, 0x2a, 0xd0, - 0xd4, 0xc5, 0x69, 0x8b, 0xaf, 0xbb, 0xad, 0x3f, 0xfb, 0xd6, 0x8f, 0xa4, 0x03, 0x01, 0x02, 0x00, 0xdb, 0xd6, 0xba, 0xce, 0xfb, 0xa8, 0xea, 0xaa, 0xdb, 0xde, 0xba, 0xce, 0xfb, 0xff, 0xfb, 0xab, - 0xdb, 0xde, 0xba, 0xce, 0xbf, 0xaf, 0xbe, 0xaa, 0xdb, 0xd6, 0xba, 0xd6, 0x23, 0xab, 0xfe, 0xaa, 0xdb, 0xde, 0xba, 0xce, 0xeb, 0xab, 0xea, 0xaa, 0xda, 0xd6, 0xbb, 0xd6, 0xa3, 0x00, 0x20, 0xfa, - 0xda, 0xde, 0xbb, 0xd6, 0xfb, 0xee, 0xaf, 0xfa, 0xdb, 0xde, 0xba, 0xd6, 0xbf, 0xfb, 0xaa, 0xaa, 0xfb, 0xde, 0xba, 0xce, 0xff, 0xff, 0xea, 0xbe, 0xdb, 0xde, 0xda, 0xce, 0xff, 0xaa, 0xea, 0xba, - 0xfb, 0xde, 0xba, 0xd6, 0xff, 0xff, 0xfe, 0xfa, 0xfb, 0xde, 0xba, 0xce, 0xee, 0xba, 0xef, 0xbb, 0xfb, 0xde, 0xba, 0xd6, 0xef, 0xff, 0xfb, 0xff, 0xda, 0xde, 0xbb, 0xd6, 0xea, 0xff, 0xef, 0xff, - 0xdb, 0xde, 0xba, 0xd6, 0xae, 0xea, 0xff, 0xbb, 0xfb, 0xde, 0xba, 0xce, 0xbb, 0xaf, 0xaa, 0xaf, 0xdb, 0xde, 0xba, 0xce, 0xaa, 0xaa, 0xa8, 0xae, 0xfa, 0xde, 0xbb, 0xd6, 0xbe, 0xae, 0xbf, 0xfb, - 0xfb, 0xde, 0xda, 0xd6, 0xd5, 0x9d, 0xd7, 0xbd, 0xfb, 0xde, 0xda, 0xd6, 0xf7, 0xbf, 0xdf, 0xdf, 0xfa, 0xde, 0xdb, 0xd6, 0xdf, 0xf7, 0xff, 0x77, 0xfb, 0xde, 0xba, 0xd6, 0xaf, 0xae, 0xae, 0xaa, - 0xfb, 0xde, 0xda, 0xd6, 0xed, 0xfb, 0xd7, 0xff, 0xfb, 0xde, 0xda, 0xd6, 0xf6, 0xff, 0xff, 0xff, 0xfb, 0xde, 0xda, 0xd6, 0xff, 0xae, 0xbf, 0xab, 0xfb, 0xde, 0xda, 0xd6, 0xbb, 0xeb, 0xab, 0xea, - 0xfb, 0xde, 0xda, 0xd6, 0xbf, 0xfb, 0xea, 0xae, 0xfa, 0xde, 0xdb, 0xd6, 0xea, 0xae, 0xaf, 0xfb, 0xda, 0xde, 0xfb, 0xd6, 0xaa, 0xaa, 0xaf, 0xa8, 0xfb, 0xde, 0xda, 0xd6, 0xff, 0xbf, 0xfb, 0xff, - 0xdb, 0xde, 0xfa, 0xd6, 0x2f, 0xab, 0xee, 0xba, 0xfb, 0xde, 0xda, 0xd6, 0xef, 0xee, 0xff, 0xfa, 0xfb, 0xde, 0xda, 0xd6, 0xbe, 0xfa, 0xfe, 0x7b, 0xfb, 0xde, 0xba, 0xd6, 0xbe, 0xaa, 0xea, 0xaa, - 0xbb, 0xde, 0xfa, 0xd6, 0xfb, 0xff, 0xff, 0xff, 0xfb, 0xde, 0xba, 0xd6, 0xba, 0xaa, 0xaa, 0xab, 0xfb, 0xde, 0xda, 0xd6, 0xfb, 0xef, 0xfb, 0xf5, 0xdb, 0xde, 0xfa, 0xd6, 0xa8, 0xfa, 0xaa, 0xaa, - 0xda, 0xde, 0xfb, 0xd6, 0xea, 0xaa, 0xaa, 0xfa, 0xfb, 0xde, 0xda, 0xd6, 0xfe, 0xff, 0xff, 0xaf, 0xda, 0xde, 0xfb, 0xd6, 0xab, 0xbe, 0xaa, 0xba, 0xda, 0xde, 0xfb, 0xd6, 0xea, 0xaa, 0xaf, 0xaa, - 0xfb, 0xde, 0xda, 0xd6, 0xbe, 0xee, 0xfb, 0xef, 0xfa, 0xde, 0xdb, 0xd6, 0xdf, 0xab, 0xbe, 0xbb, 0xfa, 0xde, 0xdb, 0xd6, 0xfd, 0xee, 0xea, 0xaa, 0xfb, 0xde, 0xda, 0xd6, 0x7b, 0x6f, 0xef, 0xfa, - 0xdb, 0xde, 0xfa, 0xd6, 0x8a, 0xaa, 0xaf, 0xab, 0xfb, 0xde, 0xba, 0xd6, 0xee, 0xfe, 0xaa, 0xaa, 0xfb, 0xde, 0xba, 0xd6, 0xff, 0xff, 0xff, 0xbe, 0xfb, 0xde, 0xba, 0xd6, 0xee, 0xff, 0xff, 0xff, - 0xbb, 0xd6, 0x99, 0xc6, 0xff, 0xff, 0xff, 0xff, 0xba, 0xce, 0x99, 0xce, 0xfe, 0xff, 0xff, 0xfa, 0xba, 0xce, 0x9a, 0xce, 0xb5, 0xd5, 0x55, 0xdf, 0xbb, 0xce, 0x9a, 0xce, 0x5e, 0xb5, 0xdd, 0x2b, - 0xbb, 0xd6, 0x9a, 0xce, 0x75, 0xfd, 0xff, 0x7f, 0xbb, 0xd6, 0x9a, 0xce, 0xfd, 0x9f, 0xb7, 0xfd, 0xbb, 0xd6, 0x9a, 0xce, 0x6f, 0xff, 0xef, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xef, 0xdf, 0xbf, 0xff, - 0xbb, 0xd6, 0x9a, 0xce, 0xfb, 0xba, 0xba, 0x6a, 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xfa, 0xff, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xef, 0xef, 0xfe, 0xfe, 0xbb, 0xd6, 0x9a, 0xce, 0xaf, 0xeb, 0xef, 0xeb, - 0xbb, 0xd6, 0x9a, 0xce, 0xea, 0xbf, 0xff, 0xaf, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xaa, 0xaa, 0xba, 0x9a, 0xd6, 0xbb, 0xce, 0xdd, 0xff, 0xbe, 0xf7, 0x9a, 0xd6, 0xbb, 0xce, 0x9f, 0x97, 0xfe, 0xef, - 0x9a, 0xd6, 0xdb, 0xce, 0xba, 0xbe, 0xbb, 0xef, 0x9a, 0xd6, 0xdb, 0xce, 0xbe, 0xbe, 0xfa, 0xeb, 0x9a, 0xd6, 0xdb, 0xce, 0xfe, 0xef, 0xbb, 0xaf, 0xba, 0xd6, 0xdb, 0xce, 0xaa, 0xae, 0xa8, 0xa8, - 0xdb, 0xd6, 0x9a, 0xce, 0xff, 0xeb, 0xaf, 0xaf, 0xdb, 0xd6, 0xba, 0xce, 0xd7, 0x7d, 0x77, 0x7f, 0x9a, 0xd6, 0xdb, 0xce, 0xfa, 0xff, 0xea, 0xbf, 0xba, 0xd6, 0xdb, 0xce, 0x2e, 0x2a, 0xaa, 0x80, - 0x9a, 0xd6, 0xbb, 0xce, 0xff, 0xeb, 0x7f, 0xdf, 0x9a, 0xd6, 0xdb, 0xce, 0xaf, 0xfa, 0xff, 0xfe, 0xdb, 0xd6, 0x9a, 0xce, 0xee, 0xbe, 0xbb, 0xff, 0x9a, 0xd6, 0xbb, 0xce, 0xff, 0xbf, 0xfb, 0xbe, - 0xdb, 0xd6, 0x9a, 0xce, 0xbe, 0xae, 0xff, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0x28, 0x2e, 0x2a, 0xaa, 0x9a, 0xd6, 0xdb, 0xce, 0xfe, 0xaf, 0xaf, 0xaa, 0xba, 0xd6, 0xdb, 0xce, 0xbe, 0xa8, 0xaa, 0xaa, - 0xdb, 0xd6, 0x9a, 0xce, 0xae, 0xbf, 0xbf, 0xff, 0xdb, 0xd6, 0x9a, 0xce, 0xfb, 0xfe, 0xff, 0xff, 0x9a, 0xd6, 0xdb, 0xce, 0xef, 0xaa, 0xaa, 0xaa, 0x3b, 0xdf, 0xba, 0xce, 0x15, 0x55, 0x55, 0x55, - 0xfa, 0xde, 0xe5, 0x51, 0x54, 0x70, 0xc0, 0x80, 0x06, 0x5a, 0x44, 0x41, 0x70, 0xe2, 0x8a, 0x9e, 0x46, 0x6a, 0x42, 0x39, 0x00, 0xed, 0xbd, 0xaf, 0x26, 0x62, 0x83, 0x49, 0xfc, 0x0b, 0x82, 0xd7, - 0x26, 0x62, 0x63, 0x49, 0xa8, 0xaa, 0xb6, 0x5f, 0x26, 0x6a, 0xa4, 0x51, 0xfa, 0xca, 0xf5, 0xfd, 0xe5, 0x61, 0x83, 0x59, 0xf2, 0x2d, 0x21, 0xc2, 0xc4, 0x61, 0x83, 0x59, 0x5f, 0xdc, 0x3e, 0xfc, - 0xe5, 0x61, 0x02, 0x51, 0x8a, 0xae, 0xaa, 0x7e, 0xc4, 0x61, 0xc3, 0x48, 0xa0, 0xa0, 0x62, 0xab, 0xc4, 0x61, 0xe3, 0x40, 0xbf, 0xab, 0xb5, 0x07, 0xc4, 0x61, 0x43, 0x59, 0x3b, 0x0a, 0x75, 0x00, - 0xe4, 0x61, 0x84, 0x59, 0xa0, 0xaf, 0xbf, 0x82, 0xc4, 0x61, 0x22, 0x49, 0xa0, 0x7e, 0xfe, 0xea, 0x83, 0x51, 0xe2, 0x40, 0xa7, 0x8d, 0xfe, 0x2f, 0x64, 0x61, 0x02, 0x41, 0x5f, 0xef, 0xff, 0x0a, - 0x84, 0x61, 0xe2, 0x48, 0xa5, 0x2b, 0xff, 0x2a, 0xe5, 0x69, 0x02, 0x41, 0xbf, 0xbf, 0x27, 0x2e, 0xe4, 0x69, 0x43, 0x51, 0xa8, 0xea, 0x7a, 0xfe, 0xa4, 0x61, 0x62, 0x51, 0xfa, 0x7b, 0x76, 0xbb, - 0xc4, 0x69, 0x83, 0x59, 0xab, 0xad, 0xfa, 0xf0, 0xc4, 0x61, 0x63, 0x59, 0xb0, 0xab, 0xbe, 0xbd, 0xa4, 0x69, 0xc4, 0x51, 0x80, 0x7a, 0xea, 0xff, 0x05, 0x62, 0x84, 0x51, 0xdf, 0xef, 0xfe, 0xa2, - 0xe5, 0x61, 0xa4, 0x59, 0x7b, 0xf8, 0xaa, 0x80, 0xc4, 0x59, 0x03, 0x41, 0x36, 0xa7, 0x3f, 0x2b, 0x05, 0x62, 0x84, 0x59, 0xff, 0xb5, 0x95, 0x25, 0x08, 0x73, 0xe5, 0x61, 0xbd, 0xbf, 0x23, 0x7a, - 0xe8, 0x7a, 0xc5, 0x51, 0x3e, 0x7e, 0xa0, 0x7a, 0x47, 0x62, 0x43, 0x49, 0x60, 0xf8, 0xf4, 0xad, 0xc8, 0x7a, 0x42, 0x49, 0xfd, 0xaf, 0xff, 0x2f, 0xca, 0x93, 0xe5, 0x59, 0x85, 0xff, 0xf5, 0xf7, - 0xab, 0x93, 0x05, 0x62, 0x57, 0xdf, 0x0b, 0xba, 0x6d, 0xac, 0xe5, 0x61, 0xfd, 0xbd, 0xab, 0x0b, 0xce, 0xbc, 0x84, 0x49, 0xfa, 0xe2, 0x60, 0x60, 0x46, 0x62, 0xc3, 0x38, 0xb6, 0xbf, 0xbd, 0x2f, - 0xae, 0xac, 0xe6, 0x51, 0xd5, 0xf5, 0x25, 0x0a, 0x0f, 0xbd, 0x67, 0x62, 0xbd, 0xbd, 0x80, 0x6a, 0xcf, 0xb4, 0x64, 0x49, 0x88, 0x62, 0x56, 0xef, 0x8e, 0xa4, 0xc5, 0x51, 0x35, 0xad, 0x2f, 0x0b, - 0xba, 0xd6, 0x6e, 0xa4, 0x35, 0x05, 0x15, 0x0f, 0xdb, 0xd6, 0xba, 0xd6, 0xdb, 0x9e, 0x27, 0xfe, 0xdb, 0xd6, 0xba, 0xd6, 0x27, 0x82, 0xac, 0xae, 0xda, 0xde, 0xbb, 0xce, 0xba, 0xaa, 0xab, 0xef, - 0xda, 0xd6, 0xbb, 0xd6, 0xfb, 0x00, 0x20, 0xaa, 0xdb, 0xde, 0xba, 0xd6, 0xaf, 0xaf, 0xff, 0xfe, 0xdb, 0xde, 0xba, 0xd6, 0xbf, 0xbe, 0xae, 0xe7, 0xda, 0xde, 0xbb, 0xd6, 0xbe, 0xba, 0xaf, 0xff, - 0xdb, 0xde, 0xba, 0xce, 0xaa, 0xaa, 0xaa, 0xab, 0xfb, 0xde, 0xba, 0xd6, 0xbf, 0xbf, 0xfe, 0xff, 0xfb, 0xde, 0xba, 0xd6, 0xfe, 0xff, 0xfe, 0xff, 0xdb, 0xde, 0xba, 0xd6, 0xfb, 0xff, 0xfd, 0xff, - 0xdb, 0xd6, 0xba, 0xd6, 0x00, 0x2a, 0xfe, 0x28, 0xdb, 0xd6, 0xba, 0xd6, 0xaa, 0xaa, 0x30, 0x28, 0xdb, 0xde, 0xba, 0xd6, 0xf7, 0xff, 0xfe, 0xff, 0xfb, 0xd6, 0xba, 0xd6, 0xbb, 0xff, 0xfe, 0xff, - 0xdb, 0xd6, 0xba, 0xd6, 0x08, 0x0a, 0x2a, 0xb0, 0xda, 0xd6, 0xbb, 0xd6, 0xe8, 0x2a, 0x2a, 0x82, 0xda, 0xde, 0xbb, 0xd6, 0xeb, 0xaa, 0xab, 0xaf, 0xfb, 0xde, 0xba, 0xd6, 0xfb, 0xef, 0xff, 0xaf, - 0xfb, 0xde, 0xda, 0xd6, 0xf5, 0x57, 0x5d, 0x5f, 0xfb, 0xde, 0xba, 0xd6, 0xef, 0xfb, 0xff, 0xef, 0xfb, 0xde, 0xba, 0xd6, 0xaf, 0xaa, 0xea, 0xfb, 0xfb, 0xde, 0xba, 0xd6, 0xba, 0xbe, 0xbf, 0xbf, - 0xdb, 0xde, 0xba, 0xd6, 0x0a, 0x2a, 0xee, 0xaf, 0xfa, 0xde, 0xbb, 0xd6, 0xaa, 0xae, 0xbf, 0xff, 0xfb, 0xde, 0xba, 0xd6, 0xaa, 0xab, 0xfa, 0xfe, 0xda, 0xde, 0xfb, 0xd6, 0xae, 0xbf, 0xaa, 0xaa, - 0xfa, 0xde, 0xdb, 0xd6, 0xaa, 0xff, 0xff, 0xf5, 0xfa, 0xde, 0xdb, 0xd6, 0xfa, 0xfa, 0xbf, 0x77, 0xfb, 0xde, 0xda, 0xd6, 0xae, 0xff, 0xee, 0xff, 0xfb, 0xde, 0xda, 0xd6, 0xf9, 0xea, 0xaa, 0xbf, - 0xda, 0xde, 0xfb, 0xd6, 0xaa, 0xaa, 0xfb, 0xfe, 0xfb, 0xde, 0xda, 0xd6, 0xaa, 0xaf, 0xeb, 0xfd, 0xda, 0xde, 0xfb, 0xd6, 0xaa, 0xea, 0xaa, 0xbf, 0xfb, 0xde, 0xda, 0xd6, 0xaa, 0xfe, 0xbb, 0xff, - 0xdb, 0xde, 0xfa, 0xd6, 0xaa, 0xaa, 0xfa, 0xea, 0xfa, 0xde, 0xdb, 0xd6, 0xfb, 0xfa, 0xef, 0xfe, 0xfb, 0xde, 0xda, 0xd6, 0xff, 0xff, 0xbf, 0xf7, 0xfb, 0xde, 0xda, 0xd6, 0xfb, 0xff, 0xff, 0xdf, - 0xda, 0xde, 0xfb, 0xd6, 0xaa, 0xaa, 0xaa, 0xff, 0xdb, 0xde, 0xfa, 0xd6, 0xaa, 0xbb, 0xaf, 0xae, 0xfb, 0xde, 0xda, 0xd6, 0xae, 0xde, 0xff, 0xff, 0xdb, 0xde, 0xfa, 0xd6, 0xaa, 0xbf, 0xba, 0xbe, - 0xfb, 0xde, 0xda, 0xd6, 0xaa, 0xea, 0xba, 0xdf, 0xfa, 0xde, 0xdb, 0xd6, 0xea, 0xab, 0x77, 0xfe, 0xfb, 0xde, 0xda, 0xd6, 0xae, 0xda, 0xbb, 0xfb, 0xdb, 0xde, 0xfa, 0xd6, 0x2a, 0xaa, 0xfa, 0xea, - 0xfb, 0xde, 0xda, 0xd6, 0xfe, 0xee, 0xfe, 0x75, 0xfb, 0xde, 0xda, 0xd6, 0xff, 0xf7, 0xfa, 0xff, 0xfb, 0xde, 0xba, 0xd6, 0xfa, 0xaa, 0xaa, 0xfe, 0xfb, 0xde, 0xba, 0xd6, 0xee, 0xfb, 0xba, 0xff, - 0xba, 0xce, 0x7a, 0xce, 0xff, 0xfa, 0xba, 0xba, 0xba, 0xce, 0x9a, 0xce, 0xdd, 0xf5, 0xf5, 0x35, 0xbb, 0xce, 0x9a, 0xce, 0x57, 0xf5, 0xdd, 0x65, 0xbb, 0xd6, 0x9a, 0xce, 0xeb, 0x7f, 0xd7, 0x97, - 0xbb, 0xd6, 0x9a, 0xce, 0xbb, 0xff, 0xfd, 0xf7, 0xbb, 0xd6, 0x9a, 0xce, 0xdf, 0xbf, 0xff, 0xfa, 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xee, 0xbb, 0xae, 0xbb, 0xd6, 0x9a, 0xce, 0xe5, 0xef, 0xfe, 0x8e, - 0xbb, 0xd6, 0x9a, 0xce, 0xeb, 0xae, 0xbf, 0xfe, 0xbb, 0xd6, 0x9a, 0xce, 0xef, 0xba, 0xaa, 0xae, 0x9a, 0xd6, 0xbb, 0xce, 0xae, 0xef, 0xfa, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xfe, 0xaf, 0xba, 0xaf, - 0x9a, 0xd6, 0xbb, 0xce, 0xfd, 0xbb, 0xf7, 0xfb, 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xba, 0xaa, 0xbf, 0x9a, 0xd6, 0xbb, 0xce, 0xff, 0xab, 0xfb, 0xfe, 0xdb, 0xd6, 0xba, 0xce, 0xfd, 0xff, 0xf7, 0xd5, - 0xdb, 0xd6, 0x9a, 0xce, 0xaa, 0xaf, 0xaf, 0xaf, 0xbb, 0xd6, 0x9a, 0xce, 0x8b, 0x08, 0x22, 0x8a, 0xba, 0xd6, 0xdb, 0xce, 0x8b, 0xab, 0xaa, 0x8a, 0xdb, 0xd6, 0x9a, 0xce, 0xee, 0xaa, 0xaa, 0xaa, - 0x9a, 0xd6, 0xdb, 0xce, 0xef, 0xfb, 0xab, 0xef, 0xdb, 0xd6, 0xba, 0xce, 0x7f, 0x7f, 0xff, 0xbb, 0xba, 0xd6, 0xdb, 0xce, 0xaa, 0xaa, 0xaa, 0xaf, 0xba, 0xd6, 0xdb, 0xce, 0xab, 0xaa, 0x8a, 0xab, - 0xba, 0xd6, 0xdb, 0xce, 0x8b, 0xa8, 0xaa, 0xee, 0x9a, 0xd6, 0xdb, 0xce, 0xab, 0xaa, 0xbf, 0xbf, 0x9a, 0xd6, 0xdb, 0xce, 0xea, 0xfa, 0xfe, 0xeb, 0x9a, 0xd6, 0xbb, 0xce, 0xde, 0x5b, 0xff, 0xbf, - 0xbb, 0xd6, 0x9a, 0xce, 0xbe, 0xfa, 0xae, 0xae, 0xbb, 0xd6, 0x9a, 0xce, 0xae, 0xfa, 0xaa, 0xaa, 0x9a, 0xd6, 0xbb, 0xce, 0xff, 0xfa, 0xff, 0x7f, 0x9b, 0xd6, 0xba, 0xce, 0x7f, 0xf5, 0xd7, 0xb5, - 0xbb, 0xd6, 0x9a, 0xce, 0xbe, 0xca, 0xef, 0xbb, 0x9a, 0xd6, 0xbb, 0xce, 0xaf, 0xaf, 0xff, 0xbb, 0xbb, 0xd6, 0x9a, 0xce, 0xe3, 0xaa, 0xaa, 0xe8, 0x9b, 0xd6, 0xba, 0xce, 0x5f, 0xed, 0x55, 0xbf, - 0x1b, 0xdf, 0x26, 0x5a, 0x40, 0x40, 0xc0, 0x00, 0xe9, 0x6a, 0xc5, 0x51, 0x55, 0x7f, 0x7e, 0xa0, 0x46, 0x62, 0xa4, 0x49, 0xd5, 0xef, 0xff, 0xa0, 0x26, 0x62, 0xa4, 0x49, 0x6e, 0x62, 0xfa, 0xaa, - 0x26, 0x62, 0xa5, 0x51, 0x7d, 0xa0, 0x89, 0x2a, 0x05, 0x62, 0xa5, 0x59, 0xab, 0xbd, 0x2a, 0xb0, 0x25, 0x6a, 0xa4, 0x59, 0x57, 0xbf, 0xa0, 0xb2, 0xe5, 0x61, 0x43, 0x51, 0xdf, 0x5a, 0xea, 0xc0, - 0xe5, 0x69, 0x84, 0x59, 0xa3, 0x8f, 0xa9, 0xeb, 0xe4, 0x61, 0x63, 0x59, 0xe2, 0x6a, 0x5a, 0xab, 0xe5, 0x69, 0xe2, 0x48, 0x0f, 0xa9, 0xab, 0xad, 0xe4, 0x61, 0x43, 0x51, 0x08, 0x02, 0x8b, 0xdd, - 0xc5, 0x61, 0x43, 0x51, 0x00, 0x02, 0x32, 0xad, 0xc4, 0x59, 0xe2, 0x48, 0xe0, 0xe0, 0xe8, 0x7f, 0x83, 0x59, 0x22, 0x51, 0x2b, 0xab, 0xf9, 0xbd, 0xa3, 0x61, 0x02, 0x59, 0xaa, 0xff, 0xf7, 0x22, - 0xa3, 0x61, 0x22, 0x59, 0xab, 0xa3, 0xd7, 0x2e, 0xe4, 0x61, 0x42, 0x59, 0x2f, 0x2f, 0xe7, 0xff, 0xc4, 0x69, 0x63, 0x59, 0xd0, 0xf8, 0xeb, 0xd4, 0xe4, 0x69, 0x83, 0x59, 0xbf, 0x39, 0xb7, 0xda, - 0xc4, 0x69, 0x83, 0x59, 0xa8, 0xe0, 0xc8, 0xdf, 0xe5, 0x61, 0x83, 0x59, 0xa2, 0xfe, 0xba, 0x5f, 0xe5, 0x61, 0x63, 0x59, 0xaa, 0x2a, 0xac, 0xa5, 0x26, 0x6a, 0x84, 0x59, 0xff, 0xb8, 0xff, 0xd7, - 0x25, 0x62, 0x64, 0x51, 0xba, 0xa8, 0xff, 0xd7, 0xc5, 0x61, 0x02, 0x49, 0x2a, 0x82, 0x29, 0xba, 0x46, 0x6a, 0x63, 0x51, 0x0a, 0x2a, 0x8a, 0xf5, 0x8b, 0x93, 0x06, 0x62, 0x1a, 0xfb, 0xd5, 0x7d, - 0x09, 0x83, 0x43, 0x49, 0x78, 0x7a, 0x7e, 0xdf, 0x05, 0x62, 0x84, 0x51, 0xad, 0xab, 0x2b, 0x02, 0x49, 0x83, 0xc5, 0x59, 0xf5, 0xcb, 0xeb, 0x5f, 0x2c, 0x9c, 0xc5, 0x51, 0xa9, 0xaf, 0x2f, 0xf5, - 0x8e, 0xb4, 0x29, 0x83, 0xd7, 0xbf, 0xeb, 0x89, 0xee, 0xbc, 0x29, 0x8b, 0xab, 0xa2, 0xf7, 0xaa, 0x8d, 0xb4, 0x22, 0x49, 0x60, 0xea, 0xe0, 0xea, 0x8f, 0xa4, 0x64, 0x49, 0xb5, 0x87, 0x87, 0x57, - 0x0f, 0xbd, 0x64, 0x51, 0x02, 0xe0, 0x5e, 0x55, 0x8e, 0xac, 0x84, 0x49, 0xf8, 0xf5, 0x55, 0xf5, 0x4d, 0xa4, 0xa5, 0x51, 0x3f, 0x2f, 0x0b, 0x58, 0x72, 0xc5, 0x22, 0x49, 0x2a, 0xa2, 0xd7, 0xd5, - 0xfb, 0xde, 0x07, 0x5a, 0x00, 0x03, 0x09, 0x35, 0xda, 0xd6, 0xbb, 0xd6, 0xdd, 0xcb, 0x6f, 0x77, 0xdb, 0xd6, 0xba, 0xd6, 0xab, 0xbe, 0xeb, 0x96, 0xda, 0xde, 0xbb, 0xd6, 0xee, 0xff, 0xff, 0xff, - 0xdb, 0xd6, 0xba, 0xd6, 0x8e, 0xfa, 0xba, 0xb6, 0xdb, 0xd6, 0xba, 0xd6, 0xa8, 0xe2, 0x08, 0xe6, 0xdb, 0xd6, 0xba, 0xd6, 0xa8, 0xaf, 0xa3, 0xe8, 0xdb, 0xd6, 0xba, 0xd6, 0x82, 0x3a, 0x2a, 0xe2, - 0xdb, 0xde, 0xba, 0xce, 0xea, 0xbe, 0xba, 0xef, 0xdb, 0xd6, 0xba, 0xce, 0x0b, 0x00, 0xaa, 0xaa, 0xdb, 0xd6, 0xba, 0xd6, 0xa2, 0x28, 0x80, 0xba, 0xdb, 0xd6, 0xba, 0xd6, 0x29, 0x0a, 0x28, 0x28, - 0xdb, 0xde, 0xba, 0xce, 0xaa, 0xba, 0xaf, 0xff, 0xdb, 0xd6, 0xba, 0xd6, 0x8a, 0x80, 0xf0, 0xb0, 0xfa, 0xd6, 0xbb, 0xd6, 0xfa, 0xff, 0xff, 0xba, 0xdb, 0xde, 0xba, 0xd6, 0xff, 0xfb, 0xfd, 0xff, - 0xdb, 0xde, 0xba, 0xd6, 0xfe, 0xbf, 0xee, 0xff, 0xdb, 0xd6, 0xba, 0xd6, 0x0c, 0xfe, 0x82, 0x83, 0xdb, 0xde, 0xba, 0xd6, 0xfa, 0xff, 0xff, 0xff, 0xfb, 0xd6, 0xba, 0xd6, 0xab, 0xff, 0xff, 0xff, - 0xdb, 0xde, 0xba, 0xd6, 0xfb, 0xae, 0xfb, 0xff, 0xdb, 0xd6, 0xba, 0xd6, 0x88, 0x0a, 0x8a, 0xae, 0xdb, 0xd6, 0xba, 0xd6, 0x00, 0xac, 0xa0, 0x8a, 0xdb, 0xd6, 0xba, 0xd6, 0x0e, 0x03, 0xe8, 0x00, - 0xdb, 0xde, 0xba, 0xd6, 0x9b, 0xff, 0xff, 0xbb, 0xda, 0xde, 0xbb, 0xd6, 0xea, 0xff, 0xff, 0x7f, 0xdb, 0xde, 0xda, 0xce, 0xaa, 0xab, 0xab, 0xee, 0xfb, 0xde, 0xda, 0xd6, 0x7d, 0x55, 0x5d, 0x55, - 0xfb, 0xde, 0xda, 0xd6, 0xdf, 0xfd, 0xd5, 0x57, 0xfb, 0xd6, 0xda, 0xd6, 0x79, 0xf5, 0x57, 0x96, 0xfb, 0xd6, 0xda, 0xd6, 0x5a, 0x7f, 0xdd, 0x7e, 0xfb, 0xde, 0xda, 0xd6, 0xf7, 0xfd, 0xfd, 0xfd, - 0xfb, 0xde, 0xba, 0xd6, 0xae, 0xaf, 0xba, 0xbe, 0xfb, 0xde, 0xda, 0xd6, 0xf7, 0xff, 0x7d, 0x57, 0xfb, 0xde, 0xda, 0xd6, 0xbf, 0xf7, 0xf5, 0xf5, 0xfb, 0xde, 0xda, 0xd6, 0xdf, 0x5f, 0xff, 0xff, - 0xfc, 0xde, 0xda, 0xd6, 0x9f, 0xdf, 0x5f, 0x55, 0xfb, 0xde, 0xba, 0xd6, 0xbf, 0xff, 0xfe, 0xef, 0xfb, 0xde, 0xba, 0xd6, 0xfe, 0xaf, 0xfa, 0xfb, 0xfb, 0xde, 0xba, 0xd6, 0xbe, 0xbf, 0xba, 0xff, - 0xfb, 0xde, 0xda, 0xd6, 0xbf, 0xdd, 0xd5, 0x55, 0xfa, 0xde, 0xdb, 0xd6, 0xdf, 0x7f, 0x5d, 0x75, 0xfb, 0xde, 0xba, 0xce, 0xaa, 0xaa, 0xea, 0xee, 0xfb, 0xde, 0xda, 0xd6, 0xff, 0x7f, 0xdf, 0xf5, - 0xfb, 0xde, 0xda, 0xd6, 0xff, 0xfb, 0xff, 0xfd, 0xba, 0xde, 0xfb, 0xd6, 0xfe, 0xae, 0xea, 0xaf, 0xfb, 0xde, 0xba, 0xd6, 0xbb, 0xff, 0xbf, 0xbf, 0xfb, 0xd6, 0xba, 0xd6, 0xaf, 0xff, 0xae, 0xff, - 0xdb, 0xde, 0xba, 0xd6, 0xfa, 0xbe, 0xaf, 0xea, 0xfb, 0xd6, 0xba, 0xd6, 0xeb, 0xfe, 0xfa, 0xfa, 0xfb, 0xde, 0xda, 0xd6, 0x77, 0x55, 0x65, 0xd7, 0xfb, 0xd6, 0xba, 0xd6, 0xee, 0xfa, 0xff, 0xee, - 0xbb, 0xd6, 0x79, 0xce, 0xff, 0xff, 0xeb, 0xbe, 0xba, 0xd6, 0x9a, 0xce, 0x55, 0xd7, 0xdf, 0xff, 0xbb, 0xd6, 0x99, 0xc6, 0xbf, 0xff, 0xaf, 0xaa, 0xbb, 0xd6, 0x9a, 0xce, 0xfd, 0xfd, 0xdf, 0xff, - 0xbb, 0xce, 0x9a, 0xce, 0xfe, 0xf5, 0xf7, 0xd6, 0xbb, 0xce, 0x9a, 0xce, 0x6b, 0xef, 0xef, 0x6a, 0xba, 0xd6, 0x9a, 0xce, 0xbf, 0xef, 0xfe, 0xaf, 0xbb, 0xd6, 0xb9, 0xce, 0xff, 0x97, 0xbf, 0xfb, - 0x9a, 0xd6, 0xbb, 0xce, 0x6f, 0xfa, 0xff, 0xb5, 0x9a, 0xd6, 0xbb, 0xce, 0xfb, 0xff, 0xeb, 0xfe, 0x9a, 0xd6, 0xbb, 0xce, 0xf7, 0xef, 0xf5, 0x5a, 0x9a, 0xd6, 0xbb, 0xce, 0x8a, 0x7f, 0xff, 0xf5, - 0x9b, 0xd6, 0xba, 0xce, 0xbf, 0x5d, 0xff, 0x7f, 0xbb, 0xd6, 0xba, 0xce, 0xde, 0xaa, 0xab, 0x8a, 0xdb, 0xd6, 0x9a, 0xce, 0xff, 0xee, 0xfa, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xea, 0xea, 0xae, 0xac, - 0xdb, 0xd6, 0x9a, 0xce, 0xff, 0xae, 0xeb, 0xfb, 0x9a, 0xd6, 0xdb, 0xce, 0xfa, 0xaa, 0xab, 0xba, 0x9a, 0xd6, 0xdb, 0xce, 0xfb, 0xab, 0xbf, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0xff, 0xfe, 0xff, 0xff, - 0xdb, 0xd6, 0x9a, 0xce, 0xea, 0xea, 0xfb, 0xba, 0xdb, 0xd6, 0x9a, 0xce, 0xab, 0xaa, 0xbf, 0xbe, 0xdb, 0xd6, 0x9a, 0xce, 0xaa, 0xea, 0xef, 0xea, 0xdb, 0xd6, 0x9a, 0xce, 0xbf, 0xea, 0xaf, 0xaf, - 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0x28, 0xea, 0xa8, 0x9a, 0xd6, 0xdb, 0xce, 0xff, 0xea, 0xfe, 0xbe, 0xdb, 0xd6, 0x9a, 0xce, 0xbb, 0xfe, 0xfe, 0xab, 0x9a, 0xd6, 0xdb, 0xce, 0xaf, 0xae, 0xaa, 0xef, - 0xdb, 0xd6, 0x9a, 0xce, 0xff, 0xaf, 0xff, 0xfb, 0x9a, 0xd6, 0xdb, 0xce, 0xba, 0xaf, 0xfe, 0xea, 0x9a, 0xd6, 0xbb, 0xce, 0xef, 0xff, 0xff, 0xff, 0xdb, 0xd6, 0xba, 0xce, 0x57, 0xef, 0x7f, 0xde, - 0xba, 0xd6, 0xdb, 0xce, 0x2a, 0xe8, 0xaa, 0xea, 0x9a, 0xd6, 0xbb, 0xce, 0xee, 0xbd, 0xff, 0x75, 0xdb, 0xd6, 0x9a, 0xce, 0xff, 0xbb, 0xef, 0xeb, 0xdb, 0xd6, 0x9a, 0xce, 0xfb, 0xfa, 0xea, 0xfa, - 0x9a, 0xd6, 0xdb, 0xce, 0xaa, 0xaf, 0xba, 0xfa, 0xfb, 0xde, 0x27, 0x5a, 0x5c, 0x60, 0x80, 0x00, 0x1a, 0xdf, 0xc6, 0x51, 0x55, 0x55, 0x55, 0x58, 0x46, 0x62, 0xe5, 0x59, 0x2d, 0x0d, 0x78, 0xfa, - 0x26, 0x6a, 0xc4, 0x59, 0x28, 0xbc, 0xf6, 0xbb, 0x05, 0x62, 0xa4, 0x59, 0xf8, 0xfb, 0xdb, 0xf0, 0xe6, 0x61, 0xc4, 0x59, 0x88, 0xbd, 0x3d, 0xcb, 0xe5, 0x69, 0x43, 0x59, 0xe0, 0xe8, 0x6a, 0xe2, - 0xc4, 0x61, 0x22, 0x51, 0x0a, 0xbf, 0xfd, 0xa2, 0xc5, 0x61, 0x02, 0x51, 0xaa, 0x5e, 0x82, 0xae, 0xc4, 0x61, 0xc2, 0x40, 0x0d, 0x03, 0xab, 0xbf, 0xa4, 0x61, 0x63, 0x51, 0x54, 0xa0, 0x7b, 0xee, - 0xc4, 0x61, 0xc2, 0x38, 0x82, 0xa8, 0xaa, 0x7a, 0xa4, 0x61, 0x61, 0x20, 0x28, 0x0a, 0x0a, 0x25, 0x04, 0x6a, 0x63, 0x59, 0xbb, 0xa5, 0x2a, 0xef, 0x24, 0x72, 0xc3, 0x61, 0xf5, 0xab, 0xea, 0xef, - 0xe4, 0x69, 0x63, 0x51, 0xa8, 0xa0, 0x78, 0xf4, 0xc4, 0x61, 0x63, 0x59, 0xe6, 0xb0, 0xef, 0x82, 0x04, 0x6a, 0x43, 0x59, 0xbf, 0x8b, 0xd7, 0x0a, 0xe5, 0x69, 0x83, 0x49, 0xa2, 0xa8, 0x6a, 0xea, - 0xe5, 0x61, 0x23, 0x41, 0x28, 0x2a, 0x2f, 0x29, 0x05, 0x6a, 0x83, 0x51, 0xfa, 0x6a, 0xaa, 0x00, 0xe5, 0x69, 0x83, 0x51, 0x2f, 0xa9, 0x08, 0xa2, 0x05, 0x62, 0xa4, 0x59, 0xba, 0xf2, 0xa0, 0x7e, - 0xc5, 0x61, 0x63, 0x51, 0x09, 0xe9, 0x83, 0x83, 0x46, 0x62, 0xa4, 0x59, 0xbf, 0xbd, 0x29, 0xab, 0x87, 0x72, 0xe5, 0x61, 0xed, 0xe7, 0x83, 0x8b, 0x87, 0x72, 0x05, 0x62, 0xf0, 0xfd, 0xba, 0xf0, - 0x08, 0x83, 0xc2, 0x40, 0x57, 0xbf, 0xaa, 0x2a, 0x29, 0x83, 0xe2, 0x38, 0xbd, 0x2f, 0xaa, 0x20, 0x4d, 0xa4, 0xc4, 0x59, 0xd5, 0xf7, 0x2b, 0xaa, 0xae, 0xb4, 0x63, 0x51, 0xab, 0x2a, 0xa2, 0x7e, - 0x6d, 0xb4, 0x23, 0x49, 0x00, 0x88, 0xea, 0x55, 0x4c, 0xac, 0x83, 0x51, 0x20, 0xaa, 0x7f, 0xdb, 0xaa, 0x9b, 0x23, 0x41, 0x60, 0x5a, 0x5a, 0x5a, 0xa4, 0x51, 0x24, 0x49, 0xa0, 0xeb, 0xb5, 0xfb, - 0xc5, 0x51, 0x44, 0x49, 0xeb, 0x77, 0xbb, 0x3f, 0xcc, 0x9b, 0x64, 0x41, 0x25, 0xed, 0x8f, 0x9f, 0x8a, 0x93, 0x03, 0x39, 0x5c, 0x57, 0xf5, 0xf5, 0xcc, 0x9b, 0x43, 0x51, 0xf5, 0xf5, 0x9d, 0x0d, - 0xfb, 0xde, 0xe5, 0x61, 0x35, 0x1d, 0x2d, 0x2d, 0xda, 0xd6, 0xbb, 0xce, 0xaa, 0xaa, 0xaa, 0xaa, 0xba, 0xd6, 0xdb, 0xce, 0xab, 0xa8, 0x2a, 0x8b, 0xdb, 0xd6, 0xba, 0xce, 0xa8, 0xaa, 0xaa, 0xab, - 0xdb, 0xd6, 0xba, 0xd6, 0xbe, 0x26, 0xd6, 0xbd, 0xdb, 0xd6, 0xba, 0xd6, 0x7e, 0xbe, 0xfa, 0xf2, 0xdb, 0xd6, 0xba, 0xce, 0x8a, 0xaa, 0xeb, 0xea, 0xda, 0xd6, 0xbb, 0xce, 0xaa, 0xea, 0xee, 0x6b, - 0xdb, 0xd6, 0xba, 0xce, 0xba, 0xae, 0xaa, 0xaf, 0xdb, 0xd6, 0xba, 0xce, 0xab, 0xab, 0xaf, 0xaa, 0xbb, 0xd6, 0xda, 0xce, 0x02, 0x8a, 0xaf, 0xab, 0xdb, 0xde, 0xba, 0xce, 0xeb, 0xfe, 0xff, 0xff, - 0xdb, 0xd6, 0xba, 0xce, 0x2a, 0xa2, 0xaa, 0xaa, 0xdb, 0xde, 0xba, 0xce, 0xef, 0xfb, 0xfe, 0xef, 0xdb, 0xde, 0xba, 0xce, 0xab, 0xaf, 0xff, 0xff, 0xdb, 0xd6, 0xba, 0xce, 0x22, 0xaa, 0xaa, 0xaa, - 0xdb, 0xd6, 0xba, 0xd6, 0xef, 0x82, 0x88, 0xa6, 0xbb, 0xde, 0xda, 0xce, 0xfa, 0xfb, 0xff, 0xef, 0xdb, 0xd6, 0xba, 0xd6, 0xfa, 0xa8, 0x20, 0x88, 0xdb, 0xde, 0xba, 0xce, 0xbe, 0xbe, 0xfb, 0xeb, - 0xdb, 0xd6, 0xba, 0xd6, 0x2b, 0x3a, 0x82, 0x8a, 0xdb, 0xde, 0xba, 0xd6, 0xfd, 0xff, 0xbf, 0xff, 0xdb, 0xd6, 0xba, 0xd6, 0xc2, 0x80, 0x80, 0xb0, 0xdb, 0xde, 0xba, 0xce, 0xea, 0xfe, 0xaa, 0xaf, - 0xdb, 0xd6, 0xba, 0xd6, 0x18, 0x00, 0x30, 0x2b, 0xdb, 0xd6, 0xba, 0xd6, 0xf2, 0x02, 0xa2, 0x08, 0xdb, 0xd6, 0xba, 0xd6, 0x82, 0x22, 0x2e, 0xa4, 0xdb, 0xd6, 0xba, 0xd6, 0x00, 0x03, 0x2e, 0x08, - 0xdb, 0xd6, 0xba, 0xd6, 0x80, 0x03, 0x00, 0x00, 0xda, 0xd6, 0xbb, 0xd6, 0x00, 0xa0, 0x82, 0x38, 0xfb, 0xde, 0xba, 0xce, 0xae, 0xea, 0xef, 0xff, 0xdb, 0xd6, 0xba, 0xd6, 0x00, 0x02, 0x30, 0x88, - 0xdb, 0xde, 0xba, 0xd6, 0xae, 0xaf, 0xff, 0xbe, 0xfb, 0xde, 0xba, 0xce, 0xba, 0xef, 0xfe, 0xfb, 0xfb, 0xde, 0xba, 0xce, 0xaa, 0xae, 0xff, 0xff, 0xfb, 0xde, 0xba, 0xce, 0xaa, 0xff, 0xfb, 0xff, - 0xfb, 0xde, 0xba, 0xce, 0xab, 0xaf, 0xfb, 0xff, 0xfb, 0xde, 0xba, 0xce, 0xaa, 0xaf, 0xfb, 0xff, 0xdb, 0xde, 0xba, 0xce, 0xaa, 0xaa, 0xba, 0xaf, 0xdb, 0xde, 0xda, 0xce, 0xea, 0xaa, 0xfa, 0xfa, - 0xdb, 0xd6, 0xba, 0xce, 0x0a, 0xa8, 0xaa, 0xaa, 0xfb, 0xd6, 0xba, 0xd6, 0xff, 0xfb, 0xff, 0xff, 0xdb, 0xde, 0xba, 0xce, 0xaa, 0xef, 0xba, 0xea, 0xda, 0xde, 0xbb, 0xd6, 0xeb, 0xfa, 0xff, 0xbf, - 0xdb, 0xde, 0xba, 0xd6, 0xff, 0xfb, 0xeb, 0xff, 0xfb, 0xd6, 0xda, 0xd6, 0x65, 0x65, 0x55, 0x55, 0xfb, 0xd6, 0xba, 0xd6, 0xef, 0xab, 0xfe, 0xfb, 0xfb, 0xd6, 0xba, 0xd6, 0xea, 0xfa, 0xfe, 0xbe, - 0xdb, 0xde, 0xba, 0xd6, 0xbf, 0xaf, 0xeb, 0xae, 0xfb, 0xde, 0xba, 0xd6, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xde, 0xba, 0xd6, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xde, 0xba, 0xce, 0xaf, 0xef, 0xef, 0xff, - 0xbb, 0xd6, 0x9a, 0xce, 0xfd, 0xdf, 0xff, 0xfe, 0xbb, 0xd6, 0x9a, 0xce, 0x7b, 0xff, 0xef, 0xba, 0xbb, 0xd6, 0x9a, 0xce, 0x7f, 0xfe, 0xfb, 0xbe, 0x9a, 0xd6, 0xbb, 0xce, 0xba, 0xff, 0xf7, 0xf5, - 0xbb, 0xd6, 0x9a, 0xce, 0xbf, 0xab, 0xaa, 0x8f, 0x9a, 0xd6, 0xbb, 0xce, 0x6f, 0xfd, 0xbf, 0xfd, 0xdb, 0xd6, 0x9a, 0xce, 0xfe, 0xff, 0xff, 0xeb, 0xbb, 0xd6, 0x9a, 0xce, 0xee, 0x2a, 0xea, 0xac, - 0xdb, 0xd6, 0x9a, 0xce, 0xbf, 0xbf, 0xbb, 0xbf, 0xdb, 0xd6, 0x9a, 0xce, 0xab, 0xef, 0xff, 0xaa, 0x9a, 0xd6, 0xdb, 0xce, 0xaf, 0xaf, 0xea, 0xfe, 0x9a, 0xd6, 0xdb, 0xce, 0xaa, 0xaa, 0xff, 0xee, - 0x9a, 0xd6, 0xdb, 0xce, 0xba, 0xff, 0xbf, 0xbe, 0xba, 0xd6, 0xdb, 0xce, 0xea, 0xaa, 0xaa, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0xfd, 0xff, 0xff, 0xfb, 0xba, 0xd6, 0xdb, 0xce, 0xaa, 0xaa, 0xaa, 0x2e, - 0xba, 0xd6, 0xdb, 0xce, 0xe8, 0xaa, 0xba, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0xff, 0xdf, 0xbf, 0xff, 0xba, 0xd6, 0xdb, 0xce, 0xaa, 0xaa, 0xaa, 0xaf, 0xdb, 0xd6, 0xba, 0xce, 0xff, 0xd7, 0xfd, 0xf7, - 0xba, 0xd6, 0xdb, 0xce, 0xaa, 0xaa, 0x0a, 0xae, 0xba, 0xd6, 0xdb, 0xce, 0xeb, 0xa8, 0xba, 0xee, 0xba, 0xd6, 0xdb, 0xce, 0xbf, 0xea, 0xea, 0x2e, 0xdb, 0xd6, 0xba, 0xce, 0x7f, 0xd7, 0xff, 0xd7, - 0x9a, 0xd6, 0xbb, 0xce, 0xf7, 0xfd, 0xf7, 0xef, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xaa, 0xe2, 0xeb, 0xdb, 0xd6, 0x9a, 0xce, 0xbe, 0xeb, 0xef, 0xaf, 0x9a, 0xd6, 0xbb, 0xce, 0xf9, 0xbf, 0xdd, 0xff, - 0xbb, 0xd6, 0x9a, 0xce, 0xae, 0xaa, 0xaa, 0x2f, 0xbb, 0xd6, 0xba, 0xce, 0x7e, 0xff, 0xfd, 0x7a, 0x9a, 0xd6, 0xdb, 0xce, 0xfb, 0xfb, 0xbf, 0xaf, 0xbb, 0xd6, 0xba, 0xce, 0xeb, 0xeb, 0x7a, 0xfe, - 0x9a, 0xd6, 0xdb, 0xce, 0xfe, 0xab, 0xbb, 0xfe, 0x9b, 0xd6, 0xba, 0xce, 0xbb, 0xb5, 0x7b, 0xeb, 0x9a, 0xd6, 0xdb, 0xce, 0xae, 0xbf, 0xeb, 0xfb, 0xbb, 0xd6, 0xba, 0xce, 0x0b, 0x7e, 0xbf, 0xfd, - 0x9a, 0xd6, 0xdb, 0xce, 0xee, 0xeb, 0xfa, 0xea, 0xdb, 0xd6, 0x9a, 0xce, 0xea, 0xff, 0xfb, 0xaa, 0x1a, 0xe7, 0xba, 0xce, 0xcd, 0x15, 0x15, 0x9d, 0x87, 0x6a, 0x06, 0x5a, 0xfb, 0xf8, 0x62, 0x5b, - 0x47, 0x62, 0xe6, 0x59, 0xef, 0xff, 0xfe, 0xf2, 0x26, 0x62, 0xa4, 0x59, 0x7a, 0xfa, 0x2b, 0x8a, 0x05, 0x62, 0xa4, 0x59, 0xff, 0xfe, 0xba, 0x5c, 0xe5, 0x61, 0x43, 0x51, 0xe0, 0xa1, 0x82, 0x5b, - 0x25, 0x72, 0x02, 0x49, 0xea, 0xaa, 0xa7, 0x2f, 0xc4, 0x69, 0xc2, 0x38, 0x0a, 0x57, 0xff, 0xe0, 0xc4, 0x61, 0xc2, 0x38, 0xef, 0xad, 0xaf, 0x2b, 0x04, 0x6a, 0x43, 0x51, 0xd5, 0xba, 0xba, 0xa0, - 0xa3, 0x69, 0x22, 0x51, 0x5e, 0xe0, 0x80, 0xe0, 0x05, 0x72, 0xe2, 0x40, 0xb7, 0x09, 0x0b, 0x02, 0x25, 0x72, 0xa4, 0x61, 0x5a, 0x2a, 0xab, 0xaa, 0x24, 0x72, 0xa3, 0x61, 0xeb, 0x7c, 0x7f, 0x5f, - 0xe4, 0x61, 0x83, 0x59, 0xf5, 0xa4, 0xa2, 0x5f, 0x83, 0x69, 0xe5, 0x51, 0x2a, 0xff, 0x5d, 0x5f, 0x05, 0x62, 0x64, 0x41, 0x2a, 0xaa, 0xd7, 0xaa, 0x05, 0x62, 0x84, 0x49, 0xe8, 0xe7, 0x7d, 0xee, - 0xe5, 0x59, 0x64, 0x41, 0x81, 0xbb, 0x2d, 0xaf, 0x04, 0x62, 0x83, 0x51, 0xaa, 0x7c, 0xbe, 0xaa, 0x05, 0x62, 0x84, 0x51, 0xbb, 0x7d, 0x7c, 0xfe, 0x05, 0x5a, 0x43, 0x41, 0x58, 0x7f, 0xf5, 0xdf, - 0x05, 0x52, 0x44, 0x49, 0x5d, 0xf5, 0x8d, 0xab, 0x29, 0x7b, 0xa5, 0x51, 0xf7, 0xf7, 0x85, 0x8b, 0xa7, 0x72, 0xa5, 0x59, 0xe2, 0x7e, 0xd8, 0xa8, 0x09, 0x7b, 0xa5, 0x59, 0xff, 0x55, 0x2b, 0x00, - 0xe9, 0x7a, 0xc5, 0x59, 0x3d, 0xfa, 0xfc, 0x97, 0x2c, 0xa4, 0x84, 0x51, 0xaf, 0x2f, 0xea, 0x78, 0xab, 0x93, 0x43, 0x49, 0xa8, 0xfe, 0x5f, 0xd5, 0x25, 0x6a, 0x03, 0x41, 0x78, 0xbf, 0xff, 0xfa, - 0x09, 0x83, 0x03, 0x49, 0xf5, 0xab, 0x2d, 0xad, 0x6a, 0x93, 0x43, 0x49, 0x72, 0x70, 0x58, 0x5e, 0x29, 0x83, 0x03, 0x39, 0x52, 0x57, 0x57, 0x57, 0x85, 0x49, 0x23, 0x39, 0xfa, 0x3b, 0x3e, 0x17, - 0xc5, 0x59, 0xe3, 0x38, 0xb5, 0xaa, 0x2a, 0xf8, 0xc8, 0x7a, 0xc2, 0x30, 0xfb, 0x5b, 0x5c, 0xfe, 0xa7, 0x7a, 0x03, 0x39, 0xd5, 0x55, 0xf5, 0x8b, 0x2c, 0xac, 0x63, 0x51, 0xad, 0x8d, 0xf5, 0xe2, - 0xfb, 0xde, 0x87, 0x72, 0x3d, 0x1d, 0x35, 0x1d, 0xbb, 0xd6, 0xda, 0xce, 0xea, 0xaa, 0xca, 0xae, 0xdb, 0xd6, 0xba, 0xce, 0xba, 0xba, 0xaa, 0x6a, 0xba, 0xd6, 0xdb, 0xce, 0xfa, 0xaa, 0x8a, 0x8b, - 0xdb, 0xd6, 0xba, 0xce, 0xbe, 0xeb, 0xef, 0xbf, 0xdb, 0xd6, 0xba, 0xce, 0xae, 0xaa, 0xeb, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0xae, 0xae, 0xaa, 0xfa, 0xdb, 0xd6, 0xba, 0xce, 0xea, 0xfa, 0xbe, 0xea, - 0xba, 0xd6, 0xdb, 0xce, 0x00, 0x2a, 0xbf, 0xa8, 0xdb, 0xd6, 0x9a, 0xce, 0xaf, 0xaa, 0xae, 0xea, 0xdb, 0xd6, 0xba, 0xce, 0xbe, 0xbe, 0xea, 0xaf, 0xdb, 0xd6, 0xba, 0xd6, 0xd6, 0x96, 0xf6, 0xd5, - 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xaa, 0xef, 0xba, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xaa, 0xef, 0xab, 0xdb, 0xd6, 0xba, 0xce, 0x2a, 0xae, 0xab, 0xab, 0xdb, 0xd6, 0xba, 0xce, 0xa8, 0xaa, 0xbe, 0xee, - 0xbb, 0xd6, 0xda, 0xce, 0x80, 0xaa, 0xfe, 0xfa, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xaa, 0xba, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0xa2, 0xaa, 0xfa, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0xa2, 0xaa, 0xab, 0xee, - 0xdb, 0xd6, 0xba, 0xd6, 0xb3, 0xaa, 0xaf, 0x77, 0xba, 0xd6, 0xdb, 0xce, 0xae, 0x0b, 0xa0, 0xba, 0xdb, 0xd6, 0xba, 0xce, 0x08, 0x2a, 0xaa, 0xaf, 0xdb, 0xde, 0xba, 0xce, 0xae, 0xef, 0xbe, 0xff, - 0xdb, 0xd6, 0xba, 0xce, 0x08, 0xaa, 0xaa, 0xab, 0xdb, 0xd6, 0xba, 0xce, 0x0a, 0xaa, 0xaa, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0x0a, 0x88, 0xaa, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0x00, 0xaa, 0xaa, 0xae, - 0xda, 0xd6, 0xbb, 0xd6, 0xa0, 0x88, 0x82, 0x82, 0xdb, 0xd6, 0xba, 0xce, 0x82, 0xaa, 0xaa, 0xa8, 0xdb, 0xd6, 0xba, 0xce, 0xa8, 0x8a, 0x8a, 0xaa, 0xdb, 0xd6, 0xba, 0xd6, 0x00, 0x0b, 0xaa, 0x9f, - 0xfb, 0xd6, 0xba, 0xd6, 0xbc, 0xfa, 0xff, 0xff, 0xdb, 0xd6, 0xba, 0xd6, 0xce, 0xae, 0x0a, 0xbf, 0xdb, 0xd6, 0xba, 0xce, 0x28, 0xaa, 0x8a, 0xaa, 0xda, 0xd6, 0xbb, 0xce, 0xaa, 0xaa, 0xaa, 0xaa, - 0xdb, 0xd6, 0xba, 0xd6, 0xa0, 0xe8, 0xb8, 0x02, 0xdb, 0xd6, 0xba, 0xce, 0xa0, 0x0a, 0xaa, 0x08, 0xdb, 0xd6, 0xba, 0xd6, 0x02, 0x80, 0x88, 0x83, 0xfb, 0xd6, 0xba, 0xd6, 0xab, 0xbf, 0xef, 0xff, - 0xdb, 0xd6, 0xba, 0xd6, 0x2c, 0x82, 0x2a, 0xae, 0xdb, 0xde, 0xba, 0xd6, 0xee, 0xff, 0xff, 0xef, 0xdb, 0xd6, 0xba, 0xd6, 0x0e, 0x28, 0x00, 0x82, 0xfb, 0xde, 0xba, 0xd6, 0xbf, 0xff, 0xff, 0xff, - 0xdb, 0xd6, 0xba, 0xd6, 0x08, 0x30, 0x08, 0x20, 0xdb, 0xd6, 0xba, 0xd6, 0x2a, 0x03, 0x00, 0x38, 0xfb, 0xde, 0xda, 0xce, 0xbb, 0xff, 0xfb, 0xbf, 0xdb, 0xde, 0xda, 0xce, 0xeb, 0xaa, 0xaa, 0xab, - 0xfb, 0xde, 0xda, 0xd6, 0x5f, 0xd5, 0x55, 0x55, 0xfb, 0xde, 0xba, 0xd6, 0xfe, 0xff, 0xfa, 0xff, 0xfb, 0xd6, 0xba, 0xd6, 0xfa, 0xfb, 0xff, 0xfe, 0xdb, 0xde, 0xba, 0xd6, 0xbe, 0xaf, 0xfb, 0xfa, - 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xff, 0xbe, 0xeb, 0x9a, 0xd6, 0xbb, 0xce, 0xfd, 0xdf, 0xff, 0xaa, 0x9a, 0xd6, 0xbb, 0xce, 0xef, 0xfa, 0xff, 0x77, 0x9a, 0xd6, 0xbb, 0xce, 0xaf, 0xff, 0xff, 0xff, - 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xbe, 0xa2, 0xab, 0x9a, 0xd6, 0xbb, 0xce, 0xfa, 0x5f, 0xff, 0xef, 0xdb, 0xd6, 0x9a, 0xce, 0xff, 0xae, 0xfa, 0xab, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xaa, 0xaa, 0xa0, - 0xdb, 0xd6, 0x9a, 0xce, 0xaa, 0xfa, 0xea, 0xea, 0xbb, 0xd6, 0x9a, 0xce, 0xe2, 0x2a, 0xa2, 0xaa, 0xba, 0xd6, 0xdb, 0xce, 0xaa, 0x8a, 0xff, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0xbf, 0xf7, 0xff, 0xfb, - 0x9a, 0xd6, 0xdb, 0xce, 0xff, 0xff, 0xaf, 0xff, 0xdb, 0xd6, 0xba, 0xce, 0xff, 0x77, 0x75, 0xed, 0xbb, 0xd6, 0xba, 0xce, 0xa2, 0xba, 0xeb, 0xa3, 0xdb, 0xd6, 0x9a, 0xce, 0xeb, 0xff, 0xaa, 0xfb, - 0xdb, 0xd6, 0x9a, 0xce, 0xfe, 0xba, 0xee, 0xbe, 0xdb, 0xd6, 0x9a, 0xce, 0xff, 0xfe, 0xff, 0xae, 0xba, 0xd6, 0xdb, 0xce, 0xaa, 0xab, 0xef, 0xaa, 0xba, 0xd6, 0xdb, 0xce, 0xaa, 0x2a, 0xea, 0xa2, - 0xdb, 0xd6, 0xba, 0xce, 0xf5, 0xfb, 0xfe, 0xfd, 0xba, 0xd6, 0xdb, 0xce, 0x8a, 0xaf, 0xea, 0xba, 0x9a, 0xd6, 0xdb, 0xce, 0xbf, 0xea, 0xff, 0xff, 0x9a, 0xd6, 0xdb, 0xce, 0xae, 0xbe, 0xab, 0xef, - 0x9a, 0xd6, 0xbb, 0xce, 0xfe, 0xff, 0xff, 0xb7, 0x9a, 0xd6, 0xdb, 0xce, 0xae, 0xaa, 0xeb, 0xfa, 0xdb, 0xd6, 0x9a, 0xce, 0xff, 0xff, 0xbf, 0xff, 0xdb, 0xd6, 0x9a, 0xce, 0xff, 0xff, 0xff, 0xff, - 0x9a, 0xd6, 0xdb, 0xce, 0xaa, 0xaf, 0xaa, 0xef, 0x9a, 0xd6, 0xbb, 0xce, 0xbe, 0xff, 0xab, 0xff, 0x9a, 0xd6, 0xdb, 0xce, 0xea, 0xff, 0xaf, 0xeb, 0xba, 0xd6, 0xdb, 0xce, 0xaa, 0xea, 0xaa, 0x2f, - 0xba, 0xd6, 0xdb, 0xce, 0x2b, 0xaa, 0xaa, 0x0a, 0xba, 0xd6, 0xdb, 0xce, 0xe8, 0xaa, 0x0f, 0xe0, 0xdb, 0xd6, 0x9a, 0xce, 0xbb, 0xaf, 0xee, 0xbb, 0xda, 0xd6, 0x9b, 0xce, 0xae, 0xaa, 0xaa, 0xaa, - 0xba, 0xd6, 0x9b, 0xce, 0x20, 0xaa, 0x28, 0xa8, 0x9b, 0xd6, 0xda, 0xce, 0xff, 0xbe, 0xaa, 0xee, 0xfb, 0xd6, 0x9a, 0xce, 0x3f, 0x6b, 0xff, 0xff, 0x3b, 0xdf, 0xc5, 0x49, 0x5e, 0x50, 0x50, 0x00, - 0xac, 0x83, 0xa4, 0x51, 0x55, 0x5f, 0xff, 0xfc, 0x46, 0x62, 0xc5, 0x51, 0x55, 0x7e, 0xb8, 0x28, 0x25, 0x62, 0x63, 0x51, 0xf5, 0xaa, 0xa8, 0xe0, 0x05, 0x6a, 0x84, 0x59, 0x75, 0xeb, 0xaa, 0x2b, - 0xe5, 0x69, 0x63, 0x59, 0xfa, 0xaf, 0xae, 0x78, 0xc4, 0x61, 0x02, 0x49, 0xc0, 0xea, 0x7e, 0xaf, 0xa4, 0x61, 0x82, 0x30, 0x2f, 0x7f, 0xb5, 0x2e, 0xe4, 0x69, 0xc2, 0x38, 0xaa, 0xb5, 0x0a, 0x00, - 0xe3, 0x69, 0x22, 0x51, 0x5b, 0x0a, 0x2a, 0xa8, 0x24, 0x72, 0x63, 0x61, 0xfd, 0x82, 0xfc, 0xfe, 0x05, 0x6a, 0x63, 0x61, 0xb7, 0x7f, 0xbb, 0x2a, 0x83, 0x61, 0x05, 0x5a, 0xa2, 0xe8, 0xdb, 0xad, - 0x47, 0x62, 0xa4, 0x51, 0xfd, 0xa7, 0xbf, 0x3a, 0x88, 0x6a, 0xa4, 0x51, 0xff, 0x7f, 0xd6, 0xfc, 0x26, 0x5a, 0x84, 0x51, 0x82, 0xf7, 0x2b, 0xaa, 0x06, 0x62, 0x84, 0x49, 0xde, 0xba, 0xfc, 0xfe, - 0xe5, 0x59, 0x24, 0x41, 0xae, 0x2c, 0xb6, 0xba, 0x05, 0x5a, 0x64, 0x49, 0xbf, 0x8a, 0xf5, 0xa8, 0xe5, 0x59, 0x44, 0x51, 0x20, 0xaa, 0xd7, 0xaa, 0xc5, 0x51, 0x44, 0x49, 0x88, 0xc2, 0x5e, 0xae, - 0x06, 0x5a, 0x65, 0x49, 0x2d, 0xbf, 0xf5, 0xf3, 0x47, 0x62, 0x84, 0x51, 0x0a, 0xab, 0xfd, 0x75, 0x46, 0x62, 0x83, 0x49, 0x88, 0xbe, 0x6e, 0xff, 0xa8, 0x72, 0xa5, 0x51, 0xca, 0xeb, 0xd5, 0xab, - 0x09, 0x7b, 0xa5, 0x49, 0x3f, 0x3f, 0x37, 0xb5, 0x69, 0x83, 0xa4, 0x51, 0x54, 0x56, 0xfe, 0xaa, 0x29, 0x7b, 0x84, 0x51, 0x55, 0xdf, 0x8a, 0xf8, 0xe8, 0x72, 0x43, 0x49, 0x57, 0x7f, 0x28, 0xbf, - 0x0c, 0x9c, 0x63, 0x49, 0xfd, 0xab, 0xd8, 0xd7, 0x8b, 0x93, 0xe2, 0x38, 0xfc, 0x5e, 0x5e, 0xf8, 0xe4, 0x61, 0xa2, 0x30, 0xf7, 0x2d, 0x82, 0x08, 0xc7, 0x7a, 0x02, 0x49, 0xf5, 0xff, 0x2f, 0x3f, - 0xcb, 0x9b, 0x43, 0x51, 0xf5, 0xf5, 0x2a, 0x38, 0xec, 0xa3, 0x63, 0x51, 0xd6, 0xfa, 0xbe, 0x58, 0x6d, 0xb4, 0x23, 0x49, 0xa2, 0xaf, 0xfe, 0x2d, 0x4c, 0xac, 0x25, 0x6a, 0x2d, 0xaa, 0xed, 0xfe, - 0xdb, 0xd6, 0x87, 0x72, 0x35, 0x2d, 0x3d, 0x2d, 0x9a, 0xd6, 0xbb, 0xce, 0xf5, 0xde, 0xff, 0xf7, 0xdb, 0xd6, 0xba, 0xce, 0xbe, 0x7f, 0x7b, 0xf7, 0xbb, 0xd6, 0xba, 0xce, 0xba, 0x0a, 0xaa, 0xaa, - 0xbb, 0xd6, 0xda, 0xce, 0x0a, 0xaa, 0xa3, 0xab, 0xdb, 0xd6, 0xba, 0xce, 0xbf, 0xbe, 0xdf, 0xef, 0xdb, 0xd6, 0x9a, 0xce, 0xba, 0xaa, 0xbe, 0xfa, 0xdb, 0xd6, 0x9a, 0xce, 0xaa, 0xfa, 0xaa, 0xea, - 0xdb, 0xd6, 0xba, 0xce, 0xff, 0xef, 0x7f, 0xf7, 0xbb, 0xd6, 0xba, 0xce, 0xaa, 0xba, 0xa2, 0xb8, 0xdb, 0xd6, 0x9a, 0xce, 0xaa, 0xaa, 0xfa, 0xba, 0xdb, 0xd6, 0xba, 0xce, 0xbf, 0xfd, 0x7f, 0xfd, - 0xbb, 0xd6, 0xba, 0xce, 0x8b, 0xe2, 0xea, 0xb7, 0xbb, 0xd6, 0xda, 0xce, 0x20, 0xcb, 0xaf, 0xba, 0x9a, 0xd6, 0xdb, 0xce, 0xff, 0xbf, 0xab, 0xbe, 0xdb, 0xd6, 0x9a, 0xce, 0xea, 0xaa, 0xbb, 0xaf, - 0xdb, 0xd6, 0x9a, 0xce, 0xaa, 0xea, 0xeb, 0xae, 0xbb, 0xd6, 0xda, 0xce, 0x80, 0x2e, 0xa8, 0xea, 0xdb, 0xd6, 0xba, 0xce, 0xff, 0xbf, 0xe7, 0xfd, 0xdb, 0xd6, 0xba, 0xce, 0x76, 0xbf, 0xbe, 0x7f, - 0xbb, 0xd6, 0xba, 0xce, 0x22, 0xae, 0xee, 0xea, 0xbb, 0xd6, 0xba, 0xce, 0xa0, 0xaa, 0xaa, 0xff, 0xda, 0xd6, 0xbb, 0xce, 0xfb, 0xff, 0xf5, 0xfb, 0xbb, 0xd6, 0xba, 0xce, 0xa0, 0x2f, 0x2a, 0x8a, - 0xdb, 0xd6, 0xba, 0xd6, 0xd5, 0xfe, 0x5f, 0x25, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xba, 0xea, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xab, 0xaa, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xaa, 0xaa, 0xa8, - 0xdb, 0xde, 0xba, 0xce, 0xff, 0xff, 0xff, 0xaf, 0xdb, 0xd6, 0xba, 0xd6, 0x6b, 0xf6, 0xe6, 0x02, 0xdb, 0xd6, 0xba, 0xd6, 0xca, 0xe0, 0x7f, 0xa0, 0xdb, 0xd6, 0xba, 0xce, 0x8a, 0xaa, 0x0a, 0x02, - 0xdb, 0xd6, 0xba, 0xd6, 0x0b, 0xc3, 0xbc, 0xaa, 0xdb, 0xd6, 0xba, 0xd6, 0xba, 0x02, 0x00, 0x80, 0xda, 0xd6, 0xbb, 0xd6, 0xaa, 0x02, 0xea, 0x00, 0xdb, 0xde, 0xba, 0xce, 0xfb, 0xfe, 0xae, 0xaa, - 0xdb, 0xde, 0xba, 0xce, 0xab, 0xef, 0xea, 0xaa, 0xdb, 0xd6, 0xba, 0xd6, 0x2f, 0xbc, 0x20, 0x08, 0xfb, 0xd6, 0xba, 0xd6, 0xaa, 0xbf, 0xbe, 0xaf, 0xdb, 0xde, 0xba, 0xd6, 0xbf, 0xfe, 0xff, 0xef, - 0xdb, 0xd6, 0xba, 0xd6, 0xc0, 0xc0, 0x02, 0x02, 0xfb, 0xde, 0xba, 0xd6, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xde, 0xba, 0xd6, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xde, 0xda, 0xd6, 0x77, 0x55, 0xd5, 0x55, - 0xfb, 0xd6, 0xba, 0xd6, 0xff, 0xeb, 0xfa, 0xfe, 0xfb, 0xd6, 0xda, 0xd6, 0x55, 0x57, 0x59, 0x55, 0xdb, 0xde, 0xba, 0xce, 0x2a, 0xaa, 0xae, 0xaa, 0xfb, 0xde, 0xba, 0xce, 0xfa, 0xfb, 0xaf, 0xfe, - 0xdb, 0xd6, 0xba, 0xd6, 0x00, 0xa3, 0x8a, 0x08, 0xfb, 0xde, 0xda, 0xd6, 0x55, 0x5d, 0x55, 0x57, 0xfb, 0xde, 0xba, 0xd6, 0xbf, 0xaf, 0xff, 0xff, 0xdb, 0xde, 0xba, 0xce, 0xea, 0xaa, 0xaa, 0xaf, - 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xfa, 0xff, 0xea, 0x9a, 0xd6, 0xbb, 0xce, 0x7d, 0xf7, 0xff, 0xfa, 0x9a, 0xd6, 0xbb, 0xce, 0x5b, 0x7f, 0xff, 0xdf, 0xdb, 0xd6, 0x9a, 0xce, 0xff, 0xfa, 0xab, 0xbf, - 0xba, 0xd6, 0xdb, 0xce, 0xa2, 0xaf, 0xaa, 0x0a, 0xba, 0xd6, 0xdb, 0xce, 0x80, 0xaa, 0x2a, 0xae, 0xba, 0xd6, 0xdb, 0xce, 0x82, 0xab, 0x82, 0xaa, 0xba, 0xd6, 0xdb, 0xce, 0xaa, 0xaa, 0xa8, 0xae, - 0xba, 0xd6, 0xdb, 0xce, 0xa2, 0x00, 0xbc, 0xaa, 0x9a, 0xd6, 0xdb, 0xce, 0xef, 0xfa, 0xfe, 0xee, 0x9a, 0xd6, 0xdb, 0xce, 0xaf, 0xea, 0xeb, 0xab, 0x9a, 0xd6, 0xdb, 0xce, 0xfb, 0xfb, 0xab, 0xfa, - 0x9b, 0xd6, 0xba, 0xce, 0xfd, 0xfd, 0xff, 0xeb, 0x9a, 0xd6, 0xdb, 0xce, 0xff, 0xef, 0xbb, 0xea, 0xba, 0xd6, 0xdb, 0xce, 0xc2, 0xa2, 0xba, 0xaa, 0x9b, 0xd6, 0xda, 0xce, 0xaa, 0xbb, 0xee, 0xaa, - 0xdb, 0xd6, 0x9a, 0xce, 0xfb, 0xfe, 0xee, 0xbf, 0x9a, 0xd6, 0xdb, 0xce, 0xbb, 0xfe, 0xbe, 0xbe, 0xdb, 0xd6, 0x9a, 0xce, 0xfa, 0xff, 0xff, 0xff, 0xba, 0xd6, 0x9b, 0xce, 0xaa, 0xaa, 0xaf, 0xbb, - 0xdb, 0xd6, 0x9a, 0xce, 0xea, 0xea, 0xff, 0xfe, 0xbb, 0xd6, 0x9a, 0xce, 0x80, 0xaa, 0xaa, 0xbf, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xa8, 0xaa, 0xef, 0x9a, 0xd6, 0xbb, 0xce, 0xfe, 0xd7, 0x6f, 0xff, - 0x9b, 0xd6, 0xda, 0xce, 0xba, 0xaf, 0xab, 0xaa, 0xbb, 0xd6, 0x9a, 0xce, 0xba, 0xbf, 0xaa, 0xe8, 0xdb, 0xd6, 0x9a, 0xce, 0xef, 0xbe, 0xff, 0xbf, 0x9a, 0xd6, 0xdb, 0xce, 0xaa, 0xab, 0xfa, 0xfb, - 0xdb, 0xd6, 0x9a, 0xce, 0xff, 0xeb, 0xff, 0xff, 0xbb, 0xd6, 0xba, 0xce, 0xaa, 0xad, 0x5f, 0xef, 0xdb, 0xd6, 0xba, 0xce, 0xef, 0x5e, 0x55, 0x75, 0xdb, 0xd6, 0xba, 0xce, 0xdb, 0x55, 0xe5, 0x5f, - 0x9b, 0xd6, 0xba, 0xce, 0xbf, 0xfd, 0x55, 0xd5, 0xbb, 0xd6, 0x9a, 0xce, 0xe2, 0x8a, 0x2a, 0xeb, 0xdb, 0xd6, 0x9a, 0xce, 0xbf, 0xff, 0xfe, 0xfa, 0xdb, 0xd6, 0x9a, 0xce, 0xea, 0xea, 0xeb, 0xbf, - 0x9a, 0xd6, 0xdb, 0xce, 0xaa, 0xfb, 0xff, 0xfb, 0xbb, 0xd6, 0xba, 0xce, 0x0a, 0xdf, 0xa2, 0xe0, 0xbb, 0xd6, 0xba, 0xce, 0x62, 0xaf, 0xfe, 0xff, 0xdb, 0xd6, 0x9a, 0xce, 0xea, 0xee, 0xef, 0xeb, - 0x1b, 0xdf, 0xe5, 0x49, 0x58, 0x70, 0x40, 0xc0, 0x67, 0x6a, 0x06, 0x52, 0xff, 0xfd, 0x55, 0x78, 0x26, 0x5a, 0x84, 0x51, 0xa0, 0x7a, 0xfe, 0x82, 0xc4, 0x61, 0x63, 0x51, 0xa2, 0xbf, 0xd5, 0x6a, - 0xa4, 0x59, 0x23, 0x49, 0xb0, 0x80, 0x8a, 0x57, 0xe5, 0x69, 0x23, 0x49, 0x6a, 0x7f, 0xbf, 0x02, 0x05, 0x6a, 0xa2, 0x38, 0xad, 0x8a, 0x00, 0x00, 0x24, 0x6a, 0x83, 0x59, 0xaf, 0x7e, 0xef, 0xa3, - 0x24, 0x6a, 0x63, 0x59, 0xff, 0xfd, 0xea, 0xa0, 0xe5, 0x69, 0x83, 0x51, 0xae, 0xf5, 0xfc, 0x5f, 0x05, 0x62, 0x84, 0x51, 0xa2, 0xff, 0xfe, 0xad, 0x25, 0x62, 0x64, 0x41, 0x7e, 0x0b, 0xaa, 0x82, - 0x46, 0x62, 0xe3, 0x40, 0xaa, 0xe8, 0xaa, 0x78, 0x0a, 0x7b, 0xe2, 0x40, 0xf8, 0xff, 0xff, 0xfd, 0xe5, 0x59, 0xa4, 0x51, 0xc8, 0xbe, 0xd8, 0x16, 0x26, 0x62, 0xc5, 0x59, 0x5d, 0x5f, 0xdd, 0x50, - 0x05, 0x62, 0x64, 0x49, 0x6f, 0xbe, 0x2a, 0x2f, 0x05, 0x62, 0x84, 0x51, 0xfd, 0xfc, 0xfa, 0x5f, 0xc6, 0x59, 0x83, 0x49, 0x20, 0x88, 0xb8, 0x6f, 0x46, 0x62, 0x23, 0x41, 0xbe, 0xfe, 0xaa, 0x3d, - 0xec, 0x8b, 0x43, 0x41, 0x57, 0xd5, 0xf5, 0xe0, 0x68, 0x62, 0xa5, 0x51, 0xfd, 0xff, 0xad, 0x2b, 0x87, 0x6a, 0x43, 0x41, 0xa3, 0xaf, 0xfe, 0xd8, 0x47, 0x62, 0x43, 0x41, 0x88, 0xaa, 0xbf, 0xb6, - 0x67, 0x62, 0x64, 0x49, 0x03, 0xaa, 0xaa, 0xd6, 0x47, 0x6a, 0x64, 0x51, 0x88, 0x8a, 0x5f, 0xfd, 0x06, 0x62, 0x64, 0x51, 0x78, 0xd5, 0xb7, 0xb5, 0x49, 0x8b, 0x23, 0x39, 0x35, 0x2f, 0x8b, 0x2f, - 0x87, 0x72, 0x43, 0x41, 0xdc, 0xd4, 0xf7, 0xbe, 0x26, 0x6a, 0xa4, 0x51, 0xa2, 0xee, 0xbe, 0xde, 0x66, 0x72, 0x03, 0x49, 0xaa, 0x0a, 0x8a, 0x7e, 0x49, 0x8b, 0x02, 0x41, 0xab, 0x00, 0xfb, 0xb9, - 0x4d, 0xac, 0xe4, 0x61, 0xc2, 0x7d, 0xc3, 0xe2, 0x4e, 0xac, 0x22, 0x49, 0xb6, 0xfc, 0xfe, 0xb7, 0xeb, 0xa3, 0xe5, 0x61, 0xe8, 0xfa, 0xbd, 0x22, 0x8d, 0xb4, 0xe5, 0x61, 0xaf, 0xbe, 0x0b, 0x78, - 0xfb, 0xde, 0xc8, 0x82, 0x27, 0x0f, 0x0f, 0x09, 0xdb, 0xd6, 0x9a, 0xce, 0xfa, 0xbe, 0xeb, 0xbf, 0x9a, 0xd6, 0xdb, 0xce, 0xaa, 0xea, 0xbf, 0xef, 0xdb, 0xd6, 0xba, 0xce, 0xae, 0xf7, 0xff, 0xfe, - 0xbb, 0xd6, 0x9a, 0xce, 0x2c, 0xaa, 0x28, 0x08, 0xdb, 0xd6, 0xba, 0xce, 0xef, 0xfe, 0xbf, 0xeb, 0xdb, 0xd6, 0xba, 0xce, 0x7e, 0xfd, 0x6f, 0xfa, 0x9a, 0xd6, 0xdb, 0xce, 0xff, 0xfe, 0xbf, 0xfb, - 0xba, 0xd6, 0xdb, 0xce, 0xa2, 0x8a, 0xb8, 0x8b, 0xdb, 0xd6, 0x9a, 0xce, 0xab, 0xaf, 0xee, 0xfa, 0x9a, 0xd6, 0xdb, 0xce, 0xff, 0xee, 0xbf, 0xab, 0xdb, 0xd6, 0x9a, 0xce, 0xfb, 0xfe, 0xae, 0xba, - 0xdb, 0xd6, 0x9a, 0xce, 0xfb, 0xab, 0xaa, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0xdf, 0xff, 0xdf, 0xfe, 0xba, 0xd6, 0xdb, 0xce, 0xb2, 0xa0, 0x02, 0x8a, 0xdb, 0xd6, 0x9a, 0xce, 0xee, 0xab, 0xaf, 0xab, - 0xdb, 0xd6, 0xba, 0xce, 0xae, 0x7a, 0xff, 0xae, 0xbb, 0xd6, 0x9a, 0xce, 0x32, 0x0a, 0x02, 0x00, 0xda, 0xd6, 0xbb, 0xce, 0x9e, 0xeb, 0xea, 0xba, 0xba, 0xd6, 0xdb, 0xce, 0x78, 0xaa, 0x0a, 0xe2, - 0xdb, 0xd6, 0xba, 0xce, 0xbe, 0xaa, 0xaa, 0xaa, 0xdb, 0xde, 0xba, 0xce, 0xff, 0xff, 0xbf, 0xab, 0xdb, 0xd6, 0xba, 0xd6, 0x7f, 0xb2, 0xa5, 0xee, 0xda, 0xd6, 0xbb, 0xd6, 0x67, 0x2f, 0x0e, 0x21, - 0xdb, 0xde, 0xba, 0xce, 0xff, 0xbf, 0xfb, 0xaf, 0xdb, 0xd6, 0xba, 0xd6, 0x04, 0xab, 0xf2, 0x00, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0x02, 0x0a, 0x02, 0xfb, 0xd6, 0xba, 0xd6, 0xee, 0xfe, 0xfa, 0xba, - 0xfb, 0xde, 0xda, 0xd6, 0x75, 0x55, 0x75, 0x75, 0xfb, 0xd6, 0xda, 0xd6, 0x9d, 0x55, 0xd5, 0x5f, 0xfb, 0xde, 0xba, 0xd6, 0xfe, 0xff, 0xff, 0xbb, 0xfb, 0xd6, 0xda, 0xd6, 0x57, 0x55, 0x65, 0xad, - 0xfb, 0xd6, 0xda, 0xd6, 0xd5, 0x57, 0x55, 0xb7, 0xfb, 0xde, 0xda, 0xd6, 0x55, 0x55, 0xf5, 0xd7, 0xfb, 0xde, 0xda, 0xd6, 0xd5, 0x5f, 0x75, 0x7d, 0xfb, 0xde, 0xda, 0xd6, 0x5d, 0x5d, 0x77, 0xff, - 0xfb, 0xde, 0xda, 0xd6, 0x55, 0x7e, 0x7d, 0x75, 0xfb, 0xde, 0xba, 0xd6, 0xbf, 0xee, 0xea, 0xeb, 0xfb, 0xde, 0xba, 0xd6, 0xbb, 0xfe, 0xff, 0xef, 0xfb, 0xd6, 0xba, 0xd6, 0xff, 0xae, 0xaa, 0xba, - 0xfb, 0xde, 0xba, 0xd6, 0xbb, 0xff, 0xff, 0xff, 0xfb, 0xd6, 0xba, 0xd6, 0xab, 0xbe, 0xfb, 0xff, 0xfb, 0xd6, 0xba, 0xd6, 0xff, 0xff, 0xff, 0xef, 0xfb, 0xde, 0xba, 0xce, 0xea, 0xfe, 0xff, 0xff, - 0xdb, 0xd6, 0xba, 0xd6, 0x02, 0x82, 0xc0, 0xb2, 0xdb, 0xde, 0xba, 0xce, 0xab, 0xaa, 0xaf, 0xab, 0xdb, 0xd6, 0xba, 0xd6, 0xa8, 0xc2, 0xac, 0x08, 0xdb, 0xd6, 0xba, 0xd6, 0xab, 0x0b, 0x2b, 0xec, - 0xdb, 0xde, 0xba, 0xce, 0xea, 0xab, 0xaa, 0xbe, 0xfb, 0xde, 0xba, 0xce, 0xfa, 0xff, 0xee, 0xff, 0xbb, 0xde, 0xda, 0xce, 0xaa, 0xff, 0xff, 0xfe, 0xdb, 0xd6, 0xba, 0xd6, 0xc0, 0xeb, 0x8f, 0xfd, - 0xbb, 0xd6, 0x9a, 0xce, 0xfa, 0xef, 0xff, 0xfd, 0xbb, 0xd6, 0x9a, 0xce, 0xaf, 0xfb, 0xab, 0xb7, 0xbb, 0xd6, 0x9a, 0xce, 0xae, 0x7b, 0xaf, 0xfe, 0xbb, 0xd6, 0x9a, 0xce, 0x2a, 0xef, 0xeb, 0xbf, - 0xdb, 0xd6, 0x9a, 0xce, 0xab, 0xef, 0xff, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xaa, 0xea, 0xbb, 0xdb, 0xd6, 0x9a, 0xce, 0xeb, 0xfe, 0xff, 0xbb, 0xdb, 0xd6, 0x9a, 0xce, 0xff, 0xef, 0xbf, 0xff, - 0xdb, 0xd6, 0x9a, 0xce, 0xff, 0xff, 0xff, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xba, 0xbf, 0xaa, 0x9b, 0xd6, 0xda, 0xce, 0xea, 0xba, 0xea, 0xaa, 0x9b, 0xd6, 0xba, 0xce, 0xf5, 0xd5, 0xd5, 0xae, - 0x9b, 0xd6, 0xba, 0xce, 0xfb, 0xde, 0xf5, 0xff, 0x9a, 0xd6, 0xdb, 0xce, 0xea, 0xef, 0xba, 0xff, 0xbb, 0xd6, 0xba, 0xce, 0xea, 0xef, 0x6e, 0x5f, 0xbb, 0xd6, 0xba, 0xce, 0xfb, 0xab, 0x6a, 0x77, - 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0x0e, 0xbb, 0xfa, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xae, 0xe7, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xea, 0xef, 0xff, 0xfa, 0xbb, 0xd6, 0x9a, 0xce, 0xeb, 0xfa, 0xff, 0xff, - 0xbb, 0xd6, 0x9a, 0xce, 0xbf, 0xfa, 0xfb, 0xfa, 0x9b, 0xd6, 0xba, 0xce, 0xf7, 0xba, 0xed, 0xdd, 0xbb, 0xd6, 0x9a, 0xc6, 0xaa, 0xba, 0xaa, 0xaa, 0x9a, 0xd6, 0xbb, 0xce, 0xad, 0xff, 0xd5, 0xb7, - 0xba, 0xd6, 0x9b, 0xce, 0xea, 0xea, 0xae, 0xe7, 0x9a, 0xd6, 0xbb, 0xce, 0x7b, 0x7d, 0x7f, 0x57, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xbb, 0xaf, 0xba, 0xdb, 0xd6, 0xba, 0xce, 0x57, 0x77, 0xff, 0x55, - 0x9a, 0xd6, 0xdb, 0xce, 0xbf, 0xab, 0xfe, 0xbe, 0x9a, 0xd6, 0xbb, 0xce, 0xff, 0xbf, 0xff, 0x7b, 0x9a, 0xd6, 0xdb, 0xce, 0xae, 0xaa, 0xaf, 0xfb, 0xdb, 0xd6, 0x9a, 0xce, 0xff, 0xff, 0xef, 0xfe, - 0x9a, 0xd6, 0xdb, 0xce, 0xee, 0xfb, 0xab, 0xaa, 0x9b, 0xd6, 0xda, 0xce, 0xeb, 0xeb, 0xea, 0xfe, 0xbb, 0xd6, 0x9a, 0xce, 0x22, 0xaa, 0xaa, 0x3a, 0xbb, 0xd6, 0xba, 0xce, 0x88, 0xef, 0xdd, 0xbe, - 0xdb, 0xd6, 0x9a, 0xce, 0xff, 0xef, 0xbf, 0xee, 0x9a, 0xd6, 0xdb, 0xce, 0xfe, 0xbf, 0xaa, 0xba, 0xdb, 0xd6, 0x9a, 0xce, 0xeb, 0xff, 0xff, 0xea, 0xdb, 0xd6, 0x9a, 0xce, 0xef, 0xff, 0xab, 0xfb, - 0x3c, 0xdf, 0xf7, 0xbd, 0x6a, 0x2a, 0xaa, 0xaa, 0xf9, 0xde, 0xc5, 0x51, 0x55, 0x57, 0x54, 0x58, 0x26, 0x62, 0x64, 0x49, 0x7f, 0x82, 0xea, 0xf6, 0xe5, 0x59, 0x43, 0x49, 0xa7, 0xfa, 0xaa, 0x00, - 0xc5, 0x59, 0x84, 0x51, 0x85, 0xab, 0x0f, 0x08, 0x06, 0x62, 0xa4, 0x59, 0xae, 0x03, 0xae, 0xa6, 0x26, 0x6a, 0xc4, 0x61, 0xfa, 0xc2, 0xff, 0x89, 0x06, 0x6a, 0xc4, 0x61, 0x2b, 0xea, 0xcb, 0x42, - 0x05, 0x6a, 0x43, 0x51, 0xa0, 0xaa, 0xaa, 0xc1, 0x05, 0x62, 0x43, 0x49, 0xea, 0xa2, 0xaa, 0x2d, 0x47, 0x62, 0x84, 0x51, 0xf5, 0xdf, 0xab, 0x2e, 0x47, 0x62, 0x84, 0x51, 0xfb, 0x5a, 0xb7, 0x80, - 0xa8, 0x6a, 0x02, 0x41, 0x7f, 0xaf, 0xaa, 0x2a, 0x87, 0x6a, 0x23, 0x51, 0xad, 0xea, 0xaa, 0xf8, 0x05, 0x62, 0xa4, 0x59, 0xbe, 0x1f, 0xbc, 0x17, 0x05, 0x62, 0x64, 0x41, 0xf8, 0xf8, 0x7e, 0xf7, - 0x26, 0x5a, 0x23, 0x49, 0xae, 0xef, 0xf7, 0xe2, 0x47, 0x62, 0x44, 0x41, 0xff, 0xff, 0x0b, 0x7f, 0x88, 0x62, 0x64, 0x41, 0xef, 0xbf, 0x82, 0xf5, 0xa8, 0x62, 0x64, 0x49, 0xfd, 0x02, 0x7e, 0x7f, - 0xea, 0x72, 0x43, 0x41, 0x2f, 0xfa, 0x57, 0xfd, 0x68, 0x6a, 0x23, 0x39, 0x78, 0x57, 0xff, 0x7f, 0xc5, 0x51, 0x03, 0x39, 0x71, 0x02, 0x02, 0xdf, 0x06, 0x5a, 0x23, 0x41, 0xd7, 0xbf, 0xa8, 0x0f, - 0x27, 0x5a, 0x83, 0x51, 0xfd, 0xfa, 0xd7, 0xe0, 0x26, 0x62, 0x23, 0x41, 0xaa, 0xba, 0x22, 0x7f, 0x06, 0x62, 0x24, 0x41, 0xaa, 0x80, 0x7a, 0xd7, 0x09, 0x83, 0x23, 0x41, 0xbf, 0x6f, 0x0d, 0xff, - 0xe6, 0x61, 0x43, 0x41, 0x2c, 0x2d, 0xab, 0xa2, 0xe6, 0x59, 0x64, 0x51, 0x97, 0x80, 0xab, 0x0a, 0xa7, 0x72, 0x64, 0x49, 0x2a, 0x57, 0xfd, 0xff, 0x6b, 0x93, 0xa4, 0x59, 0x37, 0x35, 0x35, 0x02, - 0xad, 0xbc, 0x63, 0x59, 0xaa, 0x02, 0x58, 0x57, 0xcb, 0xa3, 0x23, 0x49, 0x28, 0x7a, 0xf5, 0xd5, 0xec, 0xab, 0x23, 0x51, 0x7c, 0x95, 0xea, 0xe3, 0xb0, 0xbc, 0xc4, 0x61, 0xed, 0xda, 0x35, 0xff, - 0x1c, 0xdf, 0x89, 0x6a, 0x0d, 0x01, 0x01, 0x03, 0xbb, 0xd6, 0xba, 0xce, 0xba, 0xe8, 0x0a, 0x20, 0xdb, 0xd6, 0x9a, 0xce, 0xff, 0xaa, 0xaa, 0xaa, 0xdb, 0xde, 0x9a, 0xce, 0xef, 0xbf, 0xaf, 0xeb, - 0xdb, 0xd6, 0xba, 0xce, 0xfe, 0xfe, 0xaa, 0xeb, 0xdb, 0xd6, 0xba, 0xce, 0xeb, 0xba, 0xba, 0xaa, 0xdb, 0xd6, 0x9a, 0xce, 0xee, 0xaa, 0xaa, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0xbf, 0xba, 0xbe, 0x2a, - 0xdb, 0xd6, 0xba, 0xce, 0xab, 0xfe, 0xae, 0xaa, 0xdb, 0xd6, 0x9a, 0xce, 0xbf, 0xbf, 0xaa, 0xaa, 0xbb, 0xd6, 0xda, 0xce, 0xa2, 0xab, 0xea, 0xea, 0xdb, 0xd6, 0xba, 0xce, 0xfb, 0xb5, 0x66, 0xfe, - 0xdb, 0xd6, 0x9a, 0xce, 0xaf, 0xfe, 0xba, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0xf9, 0xea, 0xba, 0xba, 0xdb, 0xd6, 0xba, 0xce, 0xed, 0xae, 0xba, 0xaa, 0xdb, 0xd6, 0xba, 0xd6, 0x5d, 0x5f, 0x6f, 0x57, - 0xdb, 0xd6, 0xba, 0xce, 0xfe, 0xaa, 0xaa, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xea, 0xaa, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xaa, 0xaa, 0xaa, 0xdb, 0xd6, 0xba, 0xd6, 0xb7, 0xf0, 0xbe, 0x3a, - 0xdb, 0xd6, 0xba, 0xd6, 0xbe, 0xe0, 0x22, 0x70, 0xdb, 0xd6, 0xba, 0xd6, 0xa2, 0x2a, 0x3e, 0x03, 0xdb, 0xde, 0xba, 0xce, 0xff, 0xae, 0xae, 0xaa, 0xdb, 0xde, 0xba, 0xce, 0xff, 0xea, 0xaa, 0xaa, - 0xdb, 0xde, 0xba, 0xd6, 0xff, 0xff, 0xaf, 0xee, 0xfb, 0xde, 0xba, 0xd6, 0xff, 0xff, 0xff, 0xef, 0xdb, 0xde, 0xba, 0xd6, 0xef, 0xfa, 0xaa, 0xaa, 0xfb, 0xd6, 0xba, 0xd6, 0xab, 0xaa, 0xba, 0xea, - 0xfb, 0xde, 0xda, 0xd6, 0x57, 0xdd, 0xfd, 0xfd, 0xfb, 0xde, 0xba, 0xd6, 0xea, 0xae, 0xaf, 0xfe, 0xdb, 0xde, 0xda, 0xce, 0xaa, 0xaa, 0xba, 0xaa, 0xfb, 0xd6, 0xda, 0xd6, 0x75, 0x75, 0x76, 0x55, - 0xfb, 0xde, 0xda, 0xd6, 0x7f, 0xf5, 0x75, 0xf7, 0xfb, 0xde, 0xda, 0xd6, 0xb5, 0xd5, 0x55, 0x7d, 0xfb, 0xde, 0xda, 0xd6, 0x7d, 0x7f, 0x55, 0xb5, 0xfb, 0xde, 0xda, 0xd6, 0x7d, 0x75, 0xd5, 0x77, - 0xfb, 0xde, 0xda, 0xd6, 0x75, 0xd5, 0x5f, 0x5d, 0xdb, 0xde, 0xba, 0xd6, 0xaa, 0xfa, 0xba, 0xaa, 0xfb, 0xde, 0xba, 0xd6, 0xbe, 0xff, 0xff, 0xff, 0xdb, 0xde, 0xba, 0xd6, 0xab, 0xae, 0xab, 0xaf, - 0xfb, 0xd6, 0xba, 0xd6, 0xfb, 0xfb, 0xbf, 0xff, 0xdb, 0xde, 0xba, 0xce, 0xaa, 0xaa, 0xaa, 0xaa, 0xdb, 0xde, 0xba, 0xce, 0xaa, 0xaf, 0xba, 0xff, 0xdb, 0xd6, 0xba, 0xd6, 0x02, 0x80, 0x00, 0xfa, - 0xdb, 0xd6, 0xba, 0xd6, 0xaa, 0x02, 0x3a, 0xe0, 0xdb, 0xd6, 0xba, 0xd6, 0xe8, 0x2a, 0xaa, 0xde, 0xdb, 0xd6, 0xba, 0xd6, 0x3b, 0x82, 0x92, 0xff, 0xdb, 0xd6, 0xba, 0xd6, 0x88, 0xea, 0x2e, 0x76, - 0xdb, 0xd6, 0xba, 0xd6, 0xef, 0x80, 0xc2, 0x2e, 0xdb, 0xd6, 0xba, 0xd6, 0xe0, 0xa0, 0x08, 0xa2, 0xdb, 0xd6, 0xba, 0xd6, 0xfd, 0x8f, 0x23, 0x88, 0xda, 0xd6, 0xbb, 0xce, 0xa2, 0xaa, 0x0a, 0xaa, - 0xbb, 0xd6, 0x9a, 0xce, 0x7f, 0xff, 0x7f, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0x7f, 0xb7, 0xf7, 0xfd, 0xbb, 0xce, 0x9a, 0xce, 0x5a, 0xaa, 0x7d, 0xdf, 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xff, 0x75, 0xfe, - 0xbb, 0xce, 0x9a, 0xce, 0xed, 0xfa, 0x7e, 0xa9, 0xbb, 0xd6, 0x9a, 0xce, 0xaf, 0xff, 0xfb, 0xed, 0x9a, 0xd6, 0xbb, 0xce, 0xff, 0xaa, 0x57, 0xad, 0xbb, 0xd6, 0x9a, 0xce, 0xaf, 0xab, 0xfe, 0xab, - 0xba, 0xd6, 0x9b, 0xce, 0xb8, 0xfa, 0xfa, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xab, 0xff, 0xaf, 0xbb, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xbe, 0xff, 0x7f, 0xbb, 0xd6, 0x9a, 0xce, 0xef, 0xff, 0xef, 0xfe, - 0xbb, 0xd6, 0x9a, 0xce, 0xee, 0xfb, 0xff, 0xfb, 0xbb, 0xd6, 0x9a, 0xce, 0xab, 0xfe, 0xff, 0xff, 0xdb, 0xce, 0x9a, 0xce, 0xff, 0xff, 0x3f, 0xf7, 0xbb, 0xd6, 0x9a, 0xce, 0xfe, 0xef, 0xab, 0xfa, - 0xbb, 0xd6, 0x9a, 0xce, 0xbb, 0xfd, 0xff, 0xfe, 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xff, 0xfe, 0x7f, 0xbb, 0xd6, 0x9a, 0xce, 0xfd, 0xff, 0xfd, 0x7d, 0xbb, 0xce, 0x9a, 0xce, 0xec, 0xbd, 0x5f, 0x5a, - 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xf9, 0xff, 0xf5, 0x9b, 0xd6, 0xba, 0xce, 0x7b, 0x7b, 0x77, 0xaa, 0xbb, 0xd6, 0x9a, 0xce, 0xfa, 0xef, 0xfd, 0xbf, 0x9b, 0xd6, 0xba, 0xce, 0xfe, 0x5e, 0xbd, 0xfe, - 0xba, 0xd6, 0x9b, 0xce, 0xea, 0xeb, 0xab, 0xba, 0xbb, 0xd6, 0x9a, 0xce, 0xaf, 0xeb, 0xaa, 0xbb, 0xda, 0xd6, 0x9b, 0xce, 0xfe, 0xff, 0xff, 0xf7, 0xbb, 0xd6, 0x9a, 0xce, 0xea, 0xbe, 0xfa, 0xf3, - 0xbb, 0xd6, 0xda, 0xce, 0x2a, 0xaa, 0xfa, 0xa6, 0x9b, 0xd6, 0xba, 0xce, 0xf7, 0x55, 0xaf, 0x55, 0xba, 0xd6, 0x9b, 0xce, 0xab, 0xaa, 0xaa, 0xaf, 0xbb, 0xd6, 0xba, 0xce, 0xaa, 0xa7, 0xff, 0x7e, - 0xda, 0xd6, 0xbb, 0xce, 0xd5, 0xf5, 0xfd, 0xf5, 0x9a, 0xd6, 0xbb, 0xce, 0x7f, 0xab, 0xff, 0xfe, 0x9a, 0xd6, 0xbb, 0xce, 0xad, 0xff, 0xff, 0xff, 0xdb, 0xd6, 0xba, 0xce, 0x5b, 0xfd, 0xad, 0xff, - 0x9b, 0xd6, 0xda, 0xce, 0xbb, 0xfb, 0xfe, 0xfa, 0xbb, 0xd6, 0xda, 0xce, 0xba, 0xb0, 0x2f, 0xab, 0xda, 0xd6, 0xbb, 0xce, 0xfd, 0xef, 0xfb, 0xef, 0xdb, 0xd6, 0x9a, 0xce, 0xfa, 0xbb, 0xaf, 0xfe, - 0xdb, 0xd6, 0x9a, 0xce, 0xaa, 0xfe, 0xaf, 0xbe, 0x1b, 0xdf, 0x26, 0x5a, 0x50, 0x60, 0x40, 0x00, 0xc9, 0x6a, 0x44, 0x41, 0xae, 0xea, 0xaa, 0x78, 0x47, 0x5a, 0xa5, 0x49, 0x7a, 0xa2, 0xe8, 0xad, - 0x47, 0x5a, 0x63, 0x49, 0xef, 0xca, 0xad, 0x8a, 0x27, 0x62, 0x43, 0x49, 0x8b, 0x9e, 0xaa, 0x8a, 0x67, 0x62, 0xc4, 0x59, 0x7f, 0x57, 0xd5, 0x71, 0x05, 0x62, 0x84, 0x51, 0xde, 0xfe, 0xb6, 0x2f, - 0x26, 0x62, 0x84, 0x51, 0xb6, 0xaf, 0x0a, 0xaa, 0x26, 0x62, 0x23, 0x41, 0x82, 0x0a, 0x00, 0x6a, 0x67, 0x62, 0xa5, 0x51, 0x22, 0x8a, 0x6a, 0x7d, 0x67, 0x62, 0x03, 0x41, 0x00, 0xe0, 0xab, 0x5f, - 0xea, 0x72, 0xe3, 0x38, 0x2a, 0xf5, 0xd7, 0xbf, 0xea, 0x72, 0xc3, 0x30, 0xfe, 0xff, 0xeb, 0x5c, 0xa5, 0x59, 0x82, 0x18, 0xa0, 0xae, 0xaa, 0x55, 0x85, 0x49, 0xa2, 0x18, 0x00, 0x00, 0x0a, 0x55, - 0xc5, 0x51, 0xe3, 0x38, 0xaa, 0xa2, 0xaa, 0xd5, 0xe5, 0x59, 0x44, 0x49, 0xef, 0xf2, 0x7d, 0x7f, 0xa5, 0x51, 0xc3, 0x28, 0x02, 0x00, 0xea, 0x7a, 0xe6, 0x59, 0xa2, 0x20, 0x82, 0x00, 0x2f, 0xd5, - 0x06, 0x52, 0x03, 0x41, 0xea, 0x2a, 0xe2, 0x5f, 0xc5, 0x49, 0xa2, 0x28, 0x0b, 0xa8, 0x55, 0xff, 0x06, 0x5a, 0xe3, 0x30, 0x80, 0x82, 0xfd, 0x5f, 0x06, 0x5a, 0xc3, 0x30, 0x00, 0x2a, 0xd5, 0xd5, - 0x06, 0x5a, 0x03, 0x39, 0x08, 0xfa, 0x57, 0x5d, 0x26, 0x5a, 0xe3, 0x40, 0xa0, 0xf7, 0xd7, 0xf5, 0xa6, 0x59, 0xc2, 0x30, 0x0a, 0xff, 0x5f, 0xbf, 0xa5, 0x61, 0x23, 0x41, 0xab, 0x55, 0xd7, 0x2f, - 0xa4, 0x61, 0x43, 0x49, 0x3a, 0xad, 0xf5, 0x0a, 0xa4, 0x59, 0x03, 0x39, 0xea, 0xfe, 0x7f, 0x08, 0xe5, 0x69, 0xc3, 0x30, 0xd7, 0xf7, 0xaa, 0x00, 0x05, 0x62, 0x03, 0x41, 0xeb, 0x5f, 0xab, 0x22, - 0x0d, 0xac, 0xe2, 0x40, 0xfe, 0xbd, 0x0b, 0x72, 0xae, 0xc4, 0x03, 0x49, 0xbf, 0x8b, 0x7e, 0xd5, 0xcf, 0xb4, 0xe2, 0x38, 0x2a, 0x5b, 0xb5, 0x0b, 0xfa, 0xde, 0xa3, 0x59, 0xba, 0x2d, 0x0a, 0x00, - 0xdb, 0xd6, 0x95, 0xbd, 0x01, 0x00, 0x00, 0x00, 0xdb, 0xde, 0xba, 0xce, 0xff, 0xfe, 0xeb, 0xfe, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xaa, 0xaa, 0x8a, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xaa, 0xae, 0x22, - 0xdb, 0xd6, 0xba, 0xce, 0xab, 0xaa, 0x8a, 0xaa, 0xdb, 0xd6, 0xba, 0xd6, 0x5d, 0xbf, 0xaa, 0x8a, 0xdb, 0xd6, 0xba, 0xd6, 0x7c, 0x3e, 0xaf, 0x82, 0xdb, 0xd6, 0xba, 0xd6, 0xce, 0xba, 0xa8, 0x2d, - 0xda, 0xd6, 0xbb, 0xd6, 0x0b, 0xea, 0x26, 0xea, 0xdb, 0xde, 0xba, 0xce, 0xbf, 0xbf, 0xef, 0xba, 0xdb, 0xd6, 0xba, 0xd6, 0x7b, 0x2b, 0xf8, 0x3e, 0xdb, 0xd6, 0xba, 0xce, 0xef, 0xbe, 0xaa, 0xaa, - 0xdb, 0xde, 0xba, 0xce, 0xff, 0xfb, 0xff, 0xff, 0xdb, 0xd6, 0xba, 0xce, 0xeb, 0xaa, 0xaa, 0xa8, 0xdb, 0xd6, 0xba, 0xd6, 0x77, 0xa2, 0x0e, 0x03, 0xdb, 0xde, 0xba, 0xce, 0xea, 0xff, 0xff, 0xaa, - 0xdb, 0xd6, 0xba, 0xd6, 0xb2, 0xca, 0xeb, 0x00, 0xdb, 0xd6, 0xba, 0xd6, 0xaa, 0x0f, 0x03, 0x2a, 0xfb, 0xd6, 0xba, 0xce, 0xae, 0xaa, 0xea, 0xaa, 0xdb, 0xde, 0xba, 0xd6, 0xff, 0xff, 0xaa, 0xbe, - 0xdb, 0xd6, 0xba, 0xd6, 0xab, 0x2e, 0x00, 0xb0, 0xdb, 0xde, 0xba, 0xd6, 0xfe, 0xaf, 0xef, 0xee, 0xdb, 0xde, 0xba, 0xd6, 0xaf, 0xbe, 0xab, 0xff, 0xfb, 0xde, 0xda, 0xd6, 0x57, 0x55, 0x57, 0xdf, - 0xfb, 0xde, 0xda, 0xd6, 0xed, 0x55, 0x55, 0xd7, 0xfb, 0xde, 0xba, 0xd6, 0xbe, 0xbf, 0xbe, 0xbf, 0xdb, 0xde, 0xda, 0xd6, 0x55, 0xfe, 0xab, 0xfe, 0xfb, 0xde, 0xba, 0xd6, 0xae, 0xff, 0xaa, 0xaa, - 0xfb, 0xde, 0xba, 0xd6, 0xab, 0xef, 0xff, 0xee, 0xba, 0xde, 0xfb, 0xd6, 0xff, 0xff, 0xaf, 0xbf, 0xfb, 0xde, 0xba, 0xd6, 0xea, 0xff, 0xfb, 0xbf, 0xfb, 0xde, 0xba, 0xd6, 0xee, 0xff, 0xbb, 0xef, - 0xfb, 0xde, 0xda, 0xd6, 0x5f, 0xf5, 0xdd, 0xe5, 0xfb, 0xde, 0xda, 0xd6, 0xff, 0x55, 0xd5, 0x9d, 0xfb, 0xde, 0xba, 0xd6, 0xbe, 0xff, 0xbf, 0xef, 0xfb, 0xde, 0xba, 0xd6, 0xef, 0xef, 0xbe, 0xfe, - 0xfb, 0xde, 0xba, 0xd6, 0xbb, 0xff, 0xfa, 0xff, 0xfb, 0xde, 0xba, 0xd6, 0xaf, 0xff, 0xfe, 0xff, 0xdb, 0xd6, 0xba, 0xd6, 0x00, 0x00, 0xc0, 0x80, 0xdb, 0xde, 0xba, 0xd6, 0xfb, 0xbf, 0xf7, 0xff, - 0xdb, 0xde, 0xba, 0xce, 0xaa, 0xfe, 0xfe, 0xfb, 0xdb, 0xd6, 0xba, 0xce, 0x08, 0xaa, 0xaa, 0xaa, 0xdb, 0xd6, 0xba, 0xd6, 0x08, 0xee, 0x89, 0xfa, 0xdb, 0xd6, 0xba, 0xce, 0x88, 0x22, 0xae, 0x8a, - 0xdc, 0xde, 0xba, 0xce, 0xfa, 0xff, 0xbf, 0xff, 0xdb, 0xd6, 0xba, 0xd6, 0xff, 0x2a, 0x3a, 0x9c, 0xdb, 0xd6, 0xba, 0xce, 0x22, 0xaa, 0xa2, 0x88, 0xdb, 0xd6, 0xba, 0xd6, 0x42, 0xbf, 0x3a, 0x77, - 0xdb, 0xd6, 0xba, 0xd6, 0xbf, 0x3e, 0xac, 0x03, 0xda, 0xd6, 0xbb, 0xd6, 0xae, 0xbe, 0xfa, 0x82, 0xdb, 0xd6, 0xba, 0xd6, 0x0e, 0x2a, 0x0b, 0x2b, 0xdb, 0xde, 0xba, 0xd6, 0xee, 0xff, 0xef, 0xae, - 0xbb, 0xce, 0x9a, 0xce, 0x67, 0xeb, 0xb7, 0x57, 0xbb, 0xce, 0x9a, 0xce, 0xdd, 0xef, 0x56, 0x55, 0xbb, 0xce, 0x9a, 0xc6, 0xa3, 0xea, 0xc3, 0xbe, 0xbb, 0xd6, 0x9a, 0xce, 0xd5, 0xfd, 0x5f, 0xfd, - 0xbb, 0xce, 0x9a, 0xce, 0x2b, 0xfd, 0xf5, 0xb5, 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xeb, 0xff, 0x77, 0xbb, 0xd6, 0x9a, 0xce, 0xfe, 0xff, 0xff, 0x7f, 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xff, 0xd7, 0x7f, - 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0x7b, 0x77, 0xfd, 0xbb, 0xd6, 0x9a, 0xc6, 0xba, 0xfa, 0xef, 0xea, 0xba, 0xd6, 0x9b, 0xce, 0xff, 0xdf, 0xff, 0xfd, 0xba, 0xd6, 0x9b, 0xce, 0xdf, 0x7f, 0xd7, 0xd7, - 0xba, 0xd6, 0x7b, 0xce, 0xab, 0xae, 0xfb, 0xfa, 0xbb, 0xd6, 0x9a, 0xc6, 0xfa, 0xbe, 0xff, 0xeb, 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xd5, 0x55, 0x55, 0xbb, 0xce, 0x9a, 0xce, 0x7d, 0xf5, 0x75, 0x56, - 0xbb, 0xce, 0x9a, 0xce, 0x57, 0x55, 0x75, 0x59, 0xba, 0xce, 0x7b, 0xce, 0xea, 0xab, 0xaa, 0xba, 0xba, 0xd6, 0x7b, 0xc6, 0xae, 0xaa, 0xfb, 0xbf, 0xbb, 0xd6, 0x7a, 0xc6, 0xae, 0xae, 0xaf, 0xab, - 0xbb, 0xd6, 0x9a, 0xc6, 0xfa, 0xbe, 0xfe, 0xbf, 0xbb, 0xd6, 0x9a, 0xc6, 0xba, 0xef, 0xaa, 0xaf, 0xba, 0xd6, 0x9b, 0xce, 0xde, 0xff, 0xf7, 0x5f, 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xfb, 0xdf, 0x7d, - 0x9b, 0xd6, 0xba, 0xc6, 0xaa, 0xea, 0xea, 0xff, 0x9b, 0xd6, 0xba, 0xc6, 0xaa, 0xab, 0xaf, 0xfa, 0xbb, 0xce, 0x9a, 0xce, 0x77, 0xaa, 0xaa, 0xbe, 0xba, 0xce, 0x9b, 0xce, 0x83, 0x8e, 0x55, 0xd8, - 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xba, 0xfa, 0xfd, 0xbb, 0xd6, 0x9a, 0xce, 0xfe, 0xef, 0xfd, 0xff, 0x9b, 0xd6, 0xba, 0xce, 0xaf, 0xeb, 0xb5, 0xdf, 0xba, 0xd6, 0x9b, 0xce, 0xbf, 0xbf, 0x6f, 0xfd, - 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xba, 0xff, 0xff, 0xba, 0xd6, 0x9b, 0xce, 0xaa, 0xea, 0xff, 0xfe, 0x9b, 0xd6, 0xba, 0xce, 0xfb, 0x57, 0xd7, 0xed, 0xba, 0xd6, 0x9b, 0xce, 0x82, 0xaf, 0xfb, 0xff, - 0xdb, 0xd6, 0x9a, 0xce, 0xbb, 0xff, 0xff, 0xfe, 0x9b, 0xd6, 0xba, 0xce, 0xad, 0xf5, 0x5f, 0xd5, 0x9a, 0xd6, 0xdb, 0xce, 0xeb, 0xef, 0xab, 0xaf, 0xda, 0xd6, 0x9b, 0xce, 0xfb, 0xff, 0xff, 0xff, - 0x9a, 0xd6, 0xbb, 0xce, 0xff, 0x7f, 0x7f, 0x9f, 0x1b, 0xdf, 0x66, 0x6a, 0x00, 0x40, 0x60, 0x70, 0x4f, 0xa4, 0x64, 0x51, 0xfc, 0x57, 0x57, 0x7f, 0x06, 0x5a, 0x03, 0x41, 0x88, 0xaa, 0xaf, 0x5e, - 0x27, 0x62, 0x44, 0x49, 0x80, 0xa0, 0xaf, 0x55, 0x27, 0x5a, 0x24, 0x49, 0x8a, 0x28, 0x8a, 0x5f, 0xa8, 0x6a, 0xe3, 0x30, 0xf3, 0xaa, 0xff, 0x57, 0x06, 0x62, 0x44, 0x41, 0x6d, 0x28, 0xff, 0xdd, - 0x46, 0x62, 0x03, 0x41, 0xab, 0x80, 0xff, 0x5f, 0x47, 0x6a, 0xa2, 0x30, 0x00, 0xa8, 0x57, 0x5f, 0x06, 0x62, 0xc2, 0x30, 0x80, 0xfa, 0xd5, 0xd5, 0x28, 0x62, 0xc3, 0x30, 0x8a, 0x7f, 0xd5, 0xff, - 0x84, 0x59, 0xa2, 0x20, 0xfa, 0xd7, 0xaa, 0x2b, 0x64, 0x59, 0x82, 0x18, 0x57, 0xff, 0xaa, 0x00, 0x84, 0x59, 0x82, 0x18, 0x55, 0xff, 0x02, 0x00, 0x84, 0x61, 0x82, 0x18, 0xd5, 0xef, 0x2a, 0x00, - 0x64, 0x59, 0xc2, 0x20, 0xd5, 0xaa, 0x02, 0xa2, 0x84, 0x59, 0x03, 0x31, 0x7f, 0x02, 0x00, 0x2a, 0xc4, 0x69, 0xc2, 0x30, 0x55, 0xaa, 0x80, 0x82, 0x84, 0x59, 0xe2, 0x38, 0xd5, 0xba, 0xa8, 0xa8, - 0x45, 0x6a, 0x02, 0x41, 0x55, 0xff, 0xff, 0x2b, 0x05, 0x62, 0x02, 0x41, 0x55, 0xfe, 0x8a, 0x08, 0xc5, 0x59, 0xc2, 0x30, 0x5f, 0xd2, 0xa8, 0xa0, 0x05, 0x62, 0xe2, 0x40, 0xf5, 0xfd, 0xaa, 0x0a, - 0x29, 0x83, 0x23, 0x51, 0x5d, 0x55, 0xff, 0xe2, 0xe5, 0x61, 0x43, 0x51, 0xf5, 0xff, 0x20, 0xfe, 0x06, 0x5a, 0x23, 0x49, 0xd5, 0xff, 0x20, 0xfe, 0x06, 0x62, 0x64, 0x51, 0x3d, 0x2b, 0x2a, 0xbf, - 0x8b, 0x8b, 0x84, 0x59, 0x5f, 0xbd, 0x0f, 0x95, 0xaf, 0xac, 0xe5, 0x61, 0xf5, 0x4f, 0x6a, 0xb2, 0x4d, 0xa4, 0xe2, 0x40, 0x8f, 0x5f, 0x02, 0x0b, 0xd0, 0xb4, 0xa5, 0x51, 0x2d, 0x7d, 0xec, 0xfb, - 0x12, 0x9d, 0xe1, 0x48, 0xd7, 0xba, 0xff, 0x2f, 0x1c, 0xdf, 0xe4, 0x61, 0xf5, 0xfe, 0x29, 0x00, 0xfb, 0xd6, 0xe8, 0x72, 0x2d, 0x03, 0x00, 0x00, 0xdb, 0xd6, 0xba, 0xce, 0xa8, 0xaa, 0x8a, 0xea, - 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xa0, 0xaa, 0xaa, 0xdb, 0xd6, 0xba, 0xd6, 0xfb, 0xfe, 0x8a, 0x0a, 0xdb, 0xd6, 0xba, 0xd6, 0xab, 0xa2, 0xa6, 0x08, 0xdb, 0xde, 0xba, 0xce, 0xee, 0xae, 0xbb, 0xff, - 0xdb, 0xd6, 0xba, 0xd6, 0xf8, 0xa8, 0x80, 0x82, 0xdb, 0xde, 0xba, 0xce, 0xaa, 0xeb, 0xaa, 0xaa, 0xdb, 0xde, 0xba, 0xce, 0xff, 0xfa, 0xaa, 0xaa, 0xdb, 0xde, 0xba, 0xd6, 0xff, 0xff, 0xef, 0xef, - 0xdb, 0xde, 0xba, 0xce, 0xbb, 0xab, 0xeb, 0xaa, 0xdb, 0xd6, 0xba, 0xd6, 0xb8, 0x03, 0x00, 0x00, 0xdb, 0xd6, 0xba, 0xd6, 0x08, 0x00, 0xf2, 0xe0, 0xdb, 0xde, 0xba, 0xce, 0xba, 0xbe, 0xaa, 0xea, - 0xdb, 0xde, 0xba, 0xd6, 0xff, 0xfe, 0xef, 0xfe, 0xdb, 0xd6, 0xba, 0xd6, 0x3a, 0xc8, 0x80, 0xa8, 0xfb, 0xd6, 0xba, 0xd6, 0xee, 0xfa, 0xff, 0xff, 0xdb, 0xd6, 0xba, 0xd6, 0x08, 0xc0, 0x20, 0x00, - 0xdb, 0xd6, 0xba, 0xd6, 0xf0, 0x00, 0x20, 0x02, 0xdb, 0xde, 0xba, 0xd6, 0xef, 0xbb, 0xbb, 0xef, 0xdb, 0xde, 0xba, 0xd6, 0xfb, 0xbf, 0xea, 0xaa, 0xdb, 0xde, 0xda, 0xce, 0xaa, 0xaa, 0xea, 0xaa, - 0xfb, 0xd6, 0xba, 0xd6, 0xef, 0xbe, 0xaa, 0xae, 0xdb, 0xde, 0xda, 0xd6, 0x5a, 0xfd, 0xad, 0xaf, 0xdb, 0xde, 0xda, 0xd6, 0x59, 0xff, 0xad, 0xaa, 0xfb, 0xde, 0xda, 0xd6, 0xdf, 0x57, 0xb5, 0xdf, - 0xfb, 0xde, 0xda, 0xd6, 0x55, 0x5f, 0xf7, 0x7b, 0xfc, 0xde, 0xda, 0xd6, 0x7d, 0xf7, 0xff, 0xfa, 0xfb, 0xde, 0xda, 0xd6, 0xff, 0xbb, 0xef, 0x77, 0xfb, 0xde, 0xda, 0xd6, 0xf7, 0xff, 0xf7, 0xff, - 0xfb, 0xde, 0xda, 0xd6, 0x5f, 0x5d, 0x57, 0xfd, 0xfb, 0xde, 0xda, 0xd6, 0x7f, 0xf5, 0xd5, 0x5f, 0xfb, 0xde, 0xba, 0xd6, 0xff, 0xaa, 0xfb, 0xff, 0xdb, 0xde, 0xba, 0xd6, 0xaa, 0xea, 0xef, 0xbf, - 0xfb, 0xde, 0xba, 0xd6, 0xbb, 0xff, 0xff, 0xff, 0xdb, 0xde, 0xba, 0xd6, 0xea, 0xaa, 0xfb, 0xaf, 0xfb, 0xd6, 0xba, 0xd6, 0xfb, 0xfb, 0xef, 0xbf, 0xfb, 0xd6, 0xba, 0xd6, 0xff, 0xfe, 0xff, 0xab, - 0xdb, 0xde, 0xda, 0xce, 0xaa, 0xfa, 0xfa, 0xea, 0xdb, 0xd6, 0xba, 0xce, 0x00, 0x22, 0xa8, 0x08, 0xdb, 0xd6, 0xba, 0xd6, 0xf0, 0x02, 0x2f, 0x82, 0xdb, 0xd6, 0xba, 0xce, 0x8a, 0xaa, 0xaa, 0xa8, - 0xbb, 0xd6, 0xda, 0xce, 0xa0, 0xaa, 0xba, 0xfb, 0xdb, 0xd6, 0xba, 0xce, 0xab, 0xea, 0xaa, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0xfb, 0xef, 0xaa, 0xaa, 0xbb, 0xd6, 0xda, 0xce, 0xaa, 0x82, 0xa8, 0xea, - 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xaa, 0xaa, 0x8a, 0xdb, 0xd6, 0xba, 0xd6, 0x09, 0xa8, 0xba, 0x20, 0xdb, 0xde, 0xba, 0xce, 0xbf, 0xab, 0xaa, 0xaa, 0xdb, 0xde, 0xba, 0xce, 0xff, 0xbe, 0xae, 0xae, - 0xdb, 0xd6, 0xba, 0xd6, 0xe0, 0x2a, 0xb0, 0x00, 0xfb, 0xde, 0xba, 0xd6, 0xff, 0xff, 0xff, 0xaf, 0xdb, 0xde, 0xba, 0xd6, 0xff, 0xaf, 0xaa, 0xaa, 0xfb, 0xde, 0xba, 0xd6, 0xbf, 0xfa, 0xaa, 0xaa, - 0xbb, 0xd6, 0x99, 0xc6, 0xef, 0xff, 0xff, 0xff, 0xbb, 0xce, 0x7a, 0xce, 0xaa, 0xff, 0xaa, 0xab, 0xbb, 0xce, 0x7a, 0xce, 0xfa, 0xea, 0xaf, 0xba, 0xbb, 0xce, 0x9a, 0xce, 0x55, 0xf5, 0x55, 0xed, - 0xbb, 0xce, 0x7a, 0xce, 0xaa, 0xaa, 0xbf, 0xaa, 0xbb, 0xd6, 0x9a, 0xc6, 0xfa, 0xee, 0xbf, 0xab, 0xbb, 0xd6, 0x9a, 0xc6, 0xfb, 0xfa, 0xeb, 0xff, 0xbb, 0xce, 0x9a, 0xce, 0x55, 0x5e, 0x5b, 0x5b, - 0xbb, 0xce, 0x9a, 0xce, 0x59, 0x7d, 0x55, 0x65, 0xbb, 0xce, 0x7a, 0xc6, 0xca, 0xaa, 0xaa, 0xab, 0xbb, 0xd6, 0x9a, 0xc6, 0xfa, 0xef, 0xbf, 0xef, 0xbb, 0xd6, 0x7a, 0xc6, 0xaa, 0xeb, 0xfe, 0xaf, - 0xbb, 0xce, 0x7a, 0xce, 0xab, 0xba, 0xfa, 0xae, 0xbb, 0xce, 0x7a, 0xce, 0xab, 0xbe, 0xae, 0xaa, 0x9b, 0xce, 0xba, 0xc6, 0x00, 0x8a, 0xaa, 0xb2, 0x9a, 0xce, 0x7b, 0xce, 0x03, 0x00, 0x00, 0x20, - 0xbb, 0xd6, 0x7a, 0xc6, 0xff, 0xbf, 0xeb, 0xfe, 0xbb, 0xce, 0x7a, 0xce, 0xef, 0xea, 0xab, 0xaa, 0xbb, 0xd6, 0x9a, 0xc6, 0xff, 0xff, 0xfb, 0xff, 0xbb, 0xce, 0x9a, 0xce, 0x56, 0x5d, 0x5d, 0x9f, - 0xbb, 0xce, 0x7a, 0xce, 0xea, 0xaf, 0xaa, 0xbe, 0xba, 0xce, 0x9b, 0xce, 0xf8, 0xb7, 0x55, 0xf7, 0xbb, 0xce, 0x9a, 0xce, 0xd3, 0xfd, 0x55, 0x56, 0xba, 0xce, 0x9b, 0xce, 0x2f, 0xaf, 0x6d, 0x75, - 0xba, 0xce, 0x9b, 0xce, 0x2a, 0x25, 0xbf, 0x57, 0x9b, 0xce, 0xba, 0xc6, 0x02, 0x02, 0xc2, 0x2a, 0xbb, 0xd6, 0x9a, 0xce, 0xef, 0xd7, 0xff, 0x7f, 0xbb, 0xd6, 0x9a, 0xce, 0xd7, 0xdf, 0xf7, 0xf7, - 0xba, 0xd6, 0x9b, 0xce, 0xfd, 0xff, 0xff, 0xbf, 0xba, 0xce, 0x9b, 0xce, 0xe5, 0x0a, 0x83, 0xfc, 0xbb, 0xd6, 0x9a, 0xce, 0xdd, 0xff, 0x6f, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xdf, 0xff, 0xfb, 0x6e, - 0xbb, 0xd6, 0x9a, 0xce, 0xd7, 0xff, 0x7d, 0x7f, 0xba, 0xd6, 0x9b, 0xce, 0xfd, 0xdf, 0x7d, 0xff, 0xba, 0xce, 0x9b, 0xce, 0x2a, 0xfe, 0x0a, 0xa7, 0xba, 0xd6, 0x9b, 0xce, 0xaf, 0xbe, 0xff, 0xaf, - 0x9a, 0xd6, 0xdb, 0xce, 0xaf, 0xaf, 0xaa, 0xff, 0x9a, 0xd6, 0xbb, 0xce, 0xf7, 0xff, 0xfe, 0xf5, 0xdb, 0xd6, 0x9a, 0xce, 0xff, 0xfa, 0xff, 0xff, 0xba, 0xd6, 0xdb, 0xce, 0x2b, 0xea, 0x7a, 0x82, - 0x9a, 0xd6, 0xdb, 0xce, 0xaa, 0xab, 0xaf, 0xaa, 0x1c, 0xdf, 0x8c, 0x83, 0x40, 0x00, 0x00, 0x00, 0x97, 0xd6, 0x84, 0x51, 0x57, 0x57, 0x57, 0x7c, 0x47, 0x62, 0x63, 0x51, 0x5e, 0x08, 0x80, 0xbb, - 0x26, 0x62, 0xe3, 0x38, 0x5f, 0x68, 0x78, 0x80, 0x06, 0x62, 0x03, 0x41, 0x76, 0xfc, 0x83, 0x03, 0xe4, 0x61, 0xa2, 0x30, 0x57, 0xaf, 0xba, 0x80, 0xa5, 0x59, 0xe2, 0x38, 0xa9, 0x8a, 0xfa, 0x2a, - 0x06, 0x62, 0xe2, 0x38, 0x57, 0xff, 0xbf, 0x22, 0xc5, 0x59, 0xe2, 0x38, 0xf5, 0xfb, 0xa2, 0xbc, 0xa4, 0x59, 0x03, 0x49, 0xb5, 0xaa, 0xa8, 0xfb, 0x64, 0x59, 0x22, 0x41, 0xe2, 0xa8, 0x7a, 0xe8, - 0x84, 0x59, 0x43, 0x49, 0x3b, 0xba, 0xf5, 0xca, 0xa4, 0x59, 0x02, 0x51, 0x7c, 0x7a, 0xfa, 0x2a, 0xc4, 0x61, 0x03, 0x49, 0xf7, 0x55, 0xbf, 0x20, 0xe4, 0x61, 0x03, 0x49, 0xfd, 0xd5, 0xbf, 0xa0, - 0x26, 0x62, 0xe2, 0x50, 0x7f, 0xbf, 0xff, 0x2a, 0x49, 0x83, 0xe2, 0x48, 0xd5, 0x5f, 0xff, 0x02, 0xab, 0x8b, 0x22, 0x51, 0x55, 0x55, 0xf5, 0x00, 0xe8, 0x72, 0x43, 0x49, 0x55, 0xf5, 0xfa, 0xa0, - 0xeb, 0x93, 0xa4, 0x51, 0x55, 0xb5, 0xfd, 0x00, 0x6b, 0x8b, 0x84, 0x51, 0x55, 0xff, 0xa0, 0xf8, 0x2d, 0x9c, 0x43, 0x49, 0x55, 0xcf, 0xca, 0xcb, 0x6e, 0xa4, 0x44, 0x41, 0x75, 0xea, 0x02, 0x5d, - 0xab, 0x93, 0x84, 0x49, 0xd5, 0xbb, 0xa0, 0xad, 0xcb, 0x93, 0xc5, 0x59, 0xf5, 0x80, 0xab, 0xe0, 0x8b, 0x8b, 0x25, 0x62, 0x6b, 0x8b, 0x08, 0x8b, 0x0d, 0x9c, 0xe5, 0x51, 0xb7, 0x2e, 0xf0, 0xb7, - 0xfb, 0xde, 0x08, 0x7b, 0xff, 0xbf, 0x2d, 0x0b, 0x3c, 0xdf, 0x67, 0x6a, 0x57, 0xb8, 0x00, 0x00, 0x7d, 0xdf, 0x07, 0x62, 0x55, 0x00, 0x00, 0x00, 0x3c, 0xdf, 0xee, 0x7b, 0x09, 0x00, 0x00, 0x00, - 0x1c, 0xdf, 0xba, 0xd6, 0x78, 0xd5, 0x5f, 0xf7, 0xdb, 0xd6, 0xba, 0xd6, 0x8d, 0xad, 0x02, 0x88, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xaa, 0x08, 0x02, 0xdb, 0xd6, 0xba, 0xd6, 0xa7, 0x36, 0xa8, 0x03, - 0xfb, 0xde, 0xba, 0xce, 0xbf, 0xff, 0xff, 0xbb, 0xdb, 0xde, 0xba, 0xd6, 0xfe, 0xdf, 0xfb, 0xfb, 0xdb, 0xde, 0xba, 0xd6, 0x9f, 0xfe, 0xfa, 0xbe, 0xfb, 0xd6, 0xba, 0xd6, 0xff, 0xaa, 0xff, 0xeb, - 0xdb, 0xd6, 0xba, 0xd6, 0xf8, 0x00, 0x22, 0xc0, 0xdb, 0xde, 0xba, 0xd6, 0xae, 0xaf, 0xfa, 0xfb, 0xfb, 0xde, 0xba, 0xce, 0xaa, 0xba, 0xea, 0xee, 0xfc, 0xde, 0xda, 0xd6, 0x65, 0x55, 0x5d, 0x57, - 0xfc, 0xd6, 0xba, 0xd6, 0xfb, 0xef, 0xfb, 0xbf, 0xdb, 0xd6, 0xba, 0xd6, 0xab, 0x02, 0x00, 0x00, 0xfb, 0xd6, 0xba, 0xd6, 0xdf, 0xff, 0xaa, 0xff, 0xdb, 0xde, 0xba, 0xd6, 0xbf, 0xeb, 0xbf, 0xe3, - 0xdb, 0xde, 0xba, 0xd6, 0xbd, 0xab, 0xef, 0xbf, 0xdb, 0xd6, 0xba, 0xd6, 0x88, 0x08, 0xc0, 0x8a, 0xfb, 0xde, 0xba, 0xd6, 0xff, 0xff, 0xff, 0xef, 0xdb, 0xde, 0xba, 0xd6, 0xfe, 0xff, 0xbe, 0xee, - 0xdb, 0xde, 0xda, 0xd6, 0x7e, 0xef, 0xef, 0xfd, 0xdb, 0xde, 0xba, 0xd6, 0xab, 0xbb, 0xaa, 0xaf, 0xfc, 0xde, 0xda, 0xd6, 0x9f, 0xff, 0xfd, 0xfd, 0xda, 0xde, 0xfb, 0xd6, 0xc0, 0xab, 0xbe, 0xfe, - 0xfb, 0xde, 0xda, 0xd6, 0x7a, 0xff, 0xff, 0xfd, 0xfc, 0xde, 0xda, 0xd6, 0xff, 0xf5, 0x9f, 0xfd, 0xfb, 0xde, 0xda, 0xd6, 0xd6, 0xeb, 0xbf, 0xfd, 0xfb, 0xde, 0xda, 0xd6, 0xf7, 0xe7, 0xdf, 0xaf, - 0xfb, 0xde, 0xda, 0xd6, 0xef, 0x5f, 0xff, 0x7f, 0xfb, 0xde, 0xba, 0xd6, 0xaa, 0xff, 0xee, 0xab, 0xfb, 0xde, 0xda, 0xd6, 0xdd, 0x5f, 0xff, 0xd7, 0xfb, 0xde, 0xba, 0xd6, 0xaa, 0xea, 0xea, 0xfa, - 0xfb, 0xde, 0xda, 0xd6, 0xd7, 0x6f, 0xf7, 0x55, 0xfb, 0xde, 0xba, 0xd6, 0xbb, 0xfe, 0xfe, 0xff, 0xfb, 0xde, 0xba, 0xd6, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xde, 0xba, 0xd6, 0xff, 0xdf, 0xee, 0xff, - 0xdb, 0xde, 0xda, 0xce, 0xae, 0xaa, 0xaa, 0xab, 0xfb, 0xde, 0xba, 0xce, 0xef, 0xaf, 0xef, 0xbf, 0xfb, 0xd6, 0xda, 0xd6, 0x5d, 0x55, 0x55, 0xd9, 0xfb, 0xd6, 0xda, 0xd6, 0xd7, 0x55, 0x77, 0x79, - 0xdb, 0xd6, 0xba, 0xd6, 0x08, 0xb0, 0x82, 0x08, 0xdb, 0xde, 0xba, 0xd6, 0xff, 0xbf, 0xfe, 0xba, 0xdb, 0xd6, 0xba, 0xd6, 0xe3, 0x22, 0x00, 0x20, 0xdb, 0xd6, 0xba, 0xd6, 0xb0, 0x0a, 0x80, 0x2a, - 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0x80, 0xaa, 0xa8, 0xdb, 0xd6, 0xba, 0xd6, 0x0e, 0x7a, 0x2f, 0xa2, 0xdb, 0xde, 0xba, 0xce, 0xee, 0xaf, 0xff, 0xfa, 0xdb, 0xd6, 0xba, 0xce, 0xa2, 0xaa, 0xaa, 0x28, - 0xdb, 0xde, 0xba, 0xce, 0xbf, 0xae, 0xaa, 0xaa, 0xdb, 0xde, 0xba, 0xd6, 0xf9, 0xef, 0xaf, 0xbf, 0xfb, 0xd6, 0xda, 0xd6, 0x69, 0x95, 0x7d, 0x5d, 0xfb, 0xde, 0xba, 0xd6, 0xff, 0xbe, 0xea, 0xaa, - 0xfb, 0xde, 0xda, 0xd6, 0xd7, 0x95, 0xed, 0xff, 0xda, 0xde, 0xfb, 0xd6, 0xea, 0xaa, 0xff, 0xaa, 0xfb, 0xde, 0xda, 0xd6, 0xfd, 0xee, 0xeb, 0xbd, 0xfc, 0xde, 0xda, 0xd6, 0xbe, 0xfe, 0xff, 0xff, - 0x9b, 0xd6, 0x9a, 0xc6, 0xff, 0xea, 0xff, 0xbf, 0xbb, 0xce, 0x7a, 0xc6, 0xaa, 0xaa, 0xaa, 0xab, 0xbb, 0xd6, 0x7a, 0xc6, 0xea, 0xfb, 0xaf, 0xfb, 0xbb, 0xce, 0x9a, 0xce, 0x75, 0x5d, 0x5b, 0x55, - 0xbb, 0xce, 0x9a, 0xc6, 0xaa, 0xab, 0xbf, 0xfe, 0xba, 0xce, 0x7b, 0xc6, 0xa8, 0xaa, 0xff, 0xee, 0xbb, 0xd6, 0x7a, 0xc6, 0xea, 0xea, 0xbf, 0xaf, 0xbb, 0xce, 0x7a, 0xce, 0xee, 0xfa, 0xea, 0xff, - 0x9b, 0xd6, 0x9a, 0xc6, 0xea, 0xfe, 0xff, 0xff, 0xbb, 0xd6, 0x7a, 0xc6, 0xfa, 0xfa, 0xbf, 0xff, 0xbb, 0xce, 0x7a, 0xc6, 0xaa, 0xfa, 0xff, 0xbe, 0xbb, 0xce, 0x7a, 0xce, 0xab, 0xab, 0xaf, 0xfb, - 0xbb, 0xce, 0x7a, 0xc6, 0xea, 0xae, 0xab, 0xbe, 0xba, 0xce, 0x9b, 0xc6, 0xbf, 0xfe, 0xfe, 0xff, 0xbb, 0xce, 0x7a, 0xc6, 0xef, 0xeb, 0xae, 0xbe, 0x9b, 0xce, 0x7a, 0xc6, 0xa8, 0x82, 0x08, 0x28, - 0xbb, 0xd6, 0x7a, 0xc6, 0xaa, 0xff, 0xbf, 0xef, 0xbb, 0xce, 0x7a, 0xc6, 0xaa, 0xeb, 0xae, 0xeb, 0x9b, 0xd6, 0x9a, 0xc6, 0xea, 0xfb, 0xef, 0xae, 0xba, 0xd6, 0x7b, 0xc6, 0xbf, 0xea, 0xfa, 0xea, - 0xbb, 0xce, 0x7a, 0xc6, 0xaa, 0xfb, 0xbb, 0xaa, 0xbb, 0xce, 0x7a, 0xce, 0xaa, 0xff, 0xaa, 0x8f, 0x9b, 0xd6, 0x9a, 0xc6, 0xae, 0xfb, 0xff, 0xab, 0xba, 0xce, 0x9b, 0xce, 0x5f, 0xd5, 0x95, 0x6d, - 0x9b, 0xce, 0xba, 0xc6, 0x28, 0x82, 0xba, 0x28, 0xba, 0xce, 0x9b, 0xc6, 0xaa, 0xab, 0xbf, 0xfe, 0xba, 0xce, 0x9b, 0xce, 0xde, 0xfd, 0x5f, 0xfb, 0xbb, 0xd6, 0x9a, 0xc6, 0xbb, 0xaf, 0xbf, 0xff, - 0xbb, 0xce, 0x9a, 0xce, 0x37, 0xef, 0xfd, 0xff, 0xba, 0xce, 0x9b, 0xce, 0x0f, 0xfb, 0xaf, 0xfa, 0x9b, 0xd6, 0xba, 0xce, 0xab, 0x5f, 0xbf, 0x5b, 0xba, 0xce, 0x9b, 0xce, 0xb5, 0xed, 0xdb, 0x9a, - 0xbb, 0xd6, 0x9a, 0xce, 0xd7, 0xb7, 0xff, 0xff, 0xba, 0xd6, 0x9b, 0xce, 0xff, 0xeb, 0xff, 0xeb, 0xbb, 0xd6, 0x9a, 0xce, 0xef, 0xdf, 0xef, 0xbb, 0xba, 0xd6, 0x9b, 0xce, 0xbe, 0xff, 0xff, 0xab, - 0x9a, 0xd6, 0xbb, 0xce, 0xff, 0xef, 0xff, 0x7b, 0x9b, 0xd6, 0xba, 0xce, 0xd7, 0x5f, 0x5e, 0xf5, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xef, 0xea, 0x2a, 0x9b, 0xd6, 0xda, 0xce, 0xaa, 0xaa, 0xab, 0xef, - 0xdb, 0xd6, 0x9a, 0xce, 0xff, 0xbf, 0xbf, 0xff, 0x9b, 0xd6, 0xda, 0xce, 0xbe, 0xba, 0xaa, 0xeb, 0x7d, 0xe7, 0xc6, 0x49, 0x58, 0x00, 0x00, 0x00, 0x7d, 0xe7, 0xc5, 0x51, 0x55, 0x50, 0x00, 0x00, - 0xda, 0xd6, 0xe6, 0x51, 0x55, 0x55, 0x7a, 0xc0, 0x12, 0x9d, 0x44, 0x41, 0xf5, 0xf7, 0xff, 0x0a, 0xa9, 0x6a, 0x43, 0x49, 0x7f, 0xff, 0x20, 0x28, 0x4e, 0x94, 0xc5, 0x59, 0x55, 0x55, 0xaf, 0xe2, - 0x2a, 0x7b, 0x44, 0x49, 0x5f, 0x2b, 0x0a, 0xfa, 0xab, 0x83, 0x23, 0x41, 0x55, 0xfc, 0xba, 0x5f, 0x29, 0x7b, 0x64, 0x49, 0x55, 0xaa, 0xf8, 0x75, 0x47, 0x62, 0x23, 0x49, 0xaf, 0x80, 0xaa, 0x77, - 0x06, 0x5a, 0x84, 0x49, 0x2a, 0xab, 0x02, 0xe9, 0x67, 0x6a, 0x63, 0x51, 0xd7, 0x2b, 0x2a, 0xd5, 0xa7, 0x72, 0x43, 0x49, 0xff, 0xea, 0x58, 0xbb, 0xc9, 0x7a, 0xa4, 0x51, 0xbd, 0x2f, 0xdd, 0xff, - 0x0c, 0x9c, 0xe5, 0x59, 0x22, 0x5f, 0xfd, 0xf5, 0x6b, 0x8b, 0x64, 0x49, 0xea, 0x5f, 0xfa, 0x2a, 0xab, 0x8b, 0x64, 0x49, 0xfe, 0x55, 0x02, 0x88, 0x0c, 0x9c, 0xe6, 0x51, 0x0f, 0xad, 0xfa, 0xff, - 0x2c, 0x9c, 0x27, 0x62, 0x6a, 0xe0, 0x55, 0x55, 0x2e, 0x94, 0xc5, 0x51, 0x5d, 0xff, 0xef, 0x0b, 0x37, 0xce, 0x25, 0x5a, 0xfd, 0xbf, 0xbd, 0x2f, 0xfb, 0xde, 0xc4, 0x51, 0xf5, 0xfd, 0xfe, 0x00, - 0x1b, 0xdf, 0xc5, 0x59, 0x5f, 0xf7, 0x2b, 0x00, 0x3c, 0xdf, 0x26, 0x5a, 0xd5, 0x2f, 0x00, 0x00, 0x5d, 0xe7, 0x4b, 0x7b, 0xd5, 0x00, 0x00, 0x00, 0x3c, 0xdf, 0x38, 0xc6, 0x09, 0xaa, 0xaa, 0xaa, - 0xfb, 0xde, 0xba, 0xd6, 0xf4, 0xec, 0xef, 0xff, 0xfb, 0xde, 0xba, 0xce, 0xff, 0xff, 0xaf, 0xab, 0xdb, 0xde, 0xba, 0xd6, 0xff, 0xff, 0xaf, 0xff, 0xfb, 0xde, 0xba, 0xce, 0xbf, 0xee, 0xff, 0xff, - 0xfb, 0xde, 0xba, 0xce, 0xff, 0xff, 0xbb, 0xbf, 0xfb, 0xd6, 0xba, 0xd6, 0xbf, 0xff, 0xbb, 0xfe, 0xdb, 0xde, 0xba, 0xd6, 0xff, 0xff, 0xee, 0xaf, 0xdb, 0xde, 0xba, 0xd6, 0xbf, 0xbe, 0xff, 0xfb, - 0xdb, 0xd6, 0xba, 0xd6, 0x00, 0x03, 0x2c, 0x02, 0xfb, 0xd6, 0xba, 0xd6, 0xaf, 0xbb, 0xff, 0xbe, 0xdb, 0xd6, 0xba, 0xd6, 0x86, 0xa8, 0x02, 0x00, 0xfb, 0xd6, 0xba, 0xd6, 0xff, 0xff, 0xfe, 0xfa, - 0xdb, 0xde, 0xba, 0xd6, 0xff, 0xdf, 0xff, 0xff, 0xdb, 0xd6, 0xba, 0xd6, 0xa0, 0x08, 0xae, 0x22, 0xdb, 0xd6, 0xba, 0xd6, 0xa0, 0xc8, 0xb8, 0x20, 0xdb, 0xde, 0xba, 0xce, 0xaa, 0xab, 0xaa, 0xaa, - 0xdb, 0xde, 0xba, 0xd6, 0xbe, 0xff, 0xef, 0xbe, 0xfb, 0xde, 0xba, 0xce, 0xfa, 0xbf, 0xaf, 0xef, 0xdb, 0xd6, 0xba, 0xd6, 0x00, 0x00, 0x00, 0x0b, 0xfb, 0xd6, 0xba, 0xd6, 0xff, 0xbf, 0xee, 0xfe, - 0xfb, 0xd6, 0xba, 0xd6, 0xff, 0xbf, 0xbf, 0xab, 0xfb, 0xde, 0xba, 0xd6, 0xff, 0xff, 0xbf, 0xfd, 0xdb, 0xde, 0xba, 0xd6, 0xbe, 0xae, 0xaa, 0xaa, 0xfb, 0xd6, 0xba, 0xd6, 0xff, 0xea, 0xab, 0xff, - 0xfb, 0xde, 0xba, 0xce, 0xfa, 0x8f, 0xeb, 0xff, 0xfb, 0xde, 0xba, 0xd6, 0xfe, 0xff, 0xab, 0xff, 0xfb, 0xde, 0xba, 0xd6, 0xab, 0xfa, 0xfb, 0xff, 0xfb, 0xde, 0xba, 0xd6, 0xaf, 0xab, 0xef, 0xbf, - 0xfc, 0xde, 0xda, 0xd6, 0x7f, 0xff, 0x7f, 0xfd, 0xda, 0xde, 0xfb, 0xd6, 0xaa, 0xbf, 0xff, 0xb7, 0xfb, 0xde, 0xda, 0xd6, 0xff, 0xff, 0xff, 0x7f, 0xda, 0xde, 0xfb, 0xd6, 0xfa, 0xe8, 0xfe, 0xee, - 0xba, 0xde, 0xfb, 0xd6, 0xbf, 0xff, 0xfe, 0xff, 0xfb, 0xde, 0xdb, 0xd6, 0xfd, 0x5d, 0xfd, 0xdf, 0xbb, 0xde, 0xfb, 0xd6, 0xfe, 0xfe, 0xff, 0xff, 0xfb, 0xde, 0xda, 0xd6, 0xdd, 0x55, 0x77, 0xd5, - 0xfb, 0xd6, 0xda, 0xd6, 0x7c, 0x57, 0xf5, 0x55, 0xdb, 0xde, 0xba, 0xd6, 0xfb, 0xaa, 0xea, 0xaa, 0xfb, 0xde, 0xba, 0xce, 0xef, 0xfb, 0xae, 0xaa, 0xfb, 0xde, 0xba, 0xd6, 0xff, 0xff, 0xfe, 0xba, - 0xfb, 0xde, 0xba, 0xce, 0xbf, 0xef, 0xaa, 0xaa, 0xfb, 0xd6, 0xda, 0xd6, 0x55, 0xeb, 0x7f, 0xf5, 0xdb, 0xd6, 0xba, 0xd6, 0x00, 0x03, 0x0f, 0x00, 0xfb, 0xd6, 0xba, 0xd6, 0xaa, 0xfa, 0xaa, 0xae, - 0xfb, 0xde, 0xba, 0xd6, 0xfe, 0xbf, 0xba, 0xbf, 0xfb, 0xde, 0xba, 0xd6, 0xff, 0xfa, 0xfb, 0xff, 0xfb, 0xde, 0xba, 0xd6, 0xff, 0xff, 0xff, 0xab, 0xdb, 0xde, 0xda, 0xce, 0xfe, 0xfe, 0xbe, 0xfa, - 0xdb, 0xde, 0xba, 0xce, 0xfe, 0xfe, 0xaf, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0x2a, 0x02, 0x00, 0x80, 0xdb, 0xde, 0xba, 0xce, 0xbf, 0xee, 0xab, 0xaa, 0xdb, 0xd6, 0xba, 0xd6, 0xe0, 0x28, 0xa8, 0x00, - 0xfb, 0xd6, 0xba, 0xd6, 0xbf, 0xea, 0xeb, 0xea, 0xfb, 0xde, 0xba, 0xd6, 0xef, 0xaf, 0xff, 0xbf, 0xfb, 0xde, 0xda, 0xd6, 0xdd, 0x7f, 0xf5, 0xfb, 0xfb, 0xde, 0xda, 0xd6, 0xf6, 0xdd, 0xd7, 0x75, - 0xfb, 0xde, 0xda, 0xd6, 0xf7, 0xf6, 0x5d, 0xd7, 0xfc, 0xde, 0xda, 0xd6, 0xff, 0x7e, 0x57, 0x57, 0xfb, 0xde, 0xba, 0xce, 0xaa, 0xaa, 0xbb, 0xab, 0xfb, 0xde, 0xba, 0xd6, 0xfa, 0xfa, 0xff, 0xff, - 0x9b, 0xce, 0x7a, 0xce, 0x50, 0x00, 0x80, 0x00, 0x9b, 0xce, 0x7a, 0xc6, 0x8a, 0xa0, 0xa2, 0x8a, 0x9b, 0xce, 0x7a, 0xc6, 0x80, 0x08, 0x82, 0xaa, 0xbb, 0xce, 0x7a, 0xc6, 0xea, 0xbe, 0xaa, 0xba, - 0xbb, 0xce, 0x9a, 0xc6, 0xe7, 0xff, 0xfb, 0xef, 0xba, 0xce, 0x9a, 0xc6, 0xef, 0xea, 0xff, 0xff, 0x9b, 0xd6, 0x7a, 0xc6, 0xae, 0xea, 0xab, 0xff, 0xbb, 0xce, 0x7a, 0xc6, 0xea, 0xff, 0xee, 0xeb, - 0xba, 0xce, 0x9a, 0xc6, 0xff, 0xff, 0xef, 0x6b, 0xba, 0xce, 0x7b, 0xc6, 0xef, 0xfe, 0xfe, 0xab, 0xbb, 0xce, 0x9a, 0xc6, 0xf7, 0xff, 0xba, 0xab, 0xbb, 0xce, 0x9a, 0xc6, 0xdf, 0xfa, 0xbb, 0xba, - 0xbb, 0xce, 0x9a, 0xc6, 0xde, 0xff, 0xdf, 0xae, 0xbb, 0xd6, 0x7a, 0xc6, 0xff, 0xff, 0xaf, 0xfe, 0xbb, 0xce, 0x9a, 0xc6, 0xef, 0xff, 0xff, 0xab, 0xbb, 0xce, 0x7a, 0xce, 0xab, 0xbb, 0xaf, 0xae, - 0xbb, 0xce, 0x7a, 0xce, 0xff, 0xbf, 0xee, 0xaf, 0xba, 0xce, 0x9b, 0xce, 0x5d, 0x57, 0x6d, 0x5d, 0xbb, 0xd6, 0x7a, 0xc6, 0xea, 0xfe, 0xfa, 0xff, 0x9b, 0xd6, 0x9a, 0xc6, 0xfe, 0xaf, 0xfa, 0xfb, - 0xba, 0xce, 0x7b, 0xce, 0xee, 0xfa, 0xaa, 0xea, 0xbb, 0xd6, 0x7a, 0xce, 0xfa, 0xbf, 0xff, 0xff, 0xbb, 0xd6, 0x9a, 0xc6, 0xff, 0xff, 0xff, 0xbe, 0xbb, 0xce, 0x7a, 0xc6, 0xaa, 0xba, 0xaa, 0xaa, - 0xbb, 0xce, 0x9a, 0xce, 0xd5, 0xf6, 0x7f, 0xd7, 0xba, 0xce, 0x9b, 0xce, 0xd5, 0xcd, 0xfd, 0x1a, 0xba, 0xce, 0x9b, 0xce, 0x2f, 0x5f, 0xdb, 0xf0, 0xba, 0xd6, 0x9b, 0xce, 0xff, 0xfd, 0xff, 0xff, - 0xbb, 0xce, 0x9a, 0xce, 0xcf, 0x37, 0xd7, 0xff, 0xba, 0xd6, 0x9b, 0xce, 0xd7, 0xaf, 0xff, 0xdf, 0xbb, 0xd6, 0x9a, 0xce, 0xfe, 0xff, 0xbf, 0x2b, 0xbb, 0xd6, 0x9a, 0xce, 0xdd, 0xef, 0xbf, 0xa8, - 0xba, 0xd6, 0x9b, 0xce, 0xfe, 0xba, 0xea, 0xfe, 0x9a, 0xd6, 0xbb, 0xce, 0xbf, 0xed, 0xde, 0xff, 0xba, 0xd6, 0x9b, 0xce, 0xeb, 0xea, 0xaf, 0xae, 0xbb, 0xd6, 0x9a, 0xce, 0xfb, 0xaa, 0xaa, 0xaa, - 0xda, 0xd6, 0x9b, 0xce, 0xbf, 0xef, 0xff, 0xff, 0xdb, 0xd6, 0x9a, 0xce, 0xef, 0xfa, 0xfb, 0xea, 0x9a, 0xd6, 0xdb, 0xce, 0xaf, 0xfe, 0xfa, 0xfe, 0xdb, 0xd6, 0xba, 0xce, 0xdf, 0xdf, 0xef, 0xaf, - 0xdb, 0xd6, 0x9a, 0xce, 0xab, 0xaa, 0xba, 0xea, 0xba, 0xd6, 0xdb, 0xce, 0xaa, 0x3e, 0x3e, 0x8a, 0xdb, 0xd6, 0x9a, 0xce, 0xae, 0xaa, 0xaa, 0xea, 0x9b, 0xd6, 0xda, 0xce, 0xef, 0xff, 0xef, 0xab, - 0xdb, 0xd6, 0x9a, 0xce, 0xbe, 0xaa, 0xab, 0xaa, 0x1b, 0xdf, 0xba, 0xce, 0x20, 0x55, 0x7d, 0x5f, 0x7d, 0xe7, 0x06, 0x52, 0x57, 0x00, 0x00, 0x00, 0x5d, 0xe7, 0x84, 0x41, 0x55, 0x80, 0x00, 0x00, - 0x7c, 0xe7, 0xe6, 0x51, 0x55, 0x57, 0x00, 0x00, 0x5c, 0xe7, 0xc5, 0x51, 0x55, 0x55, 0xfe, 0x00, 0x5c, 0xe7, 0xe5, 0x51, 0x55, 0x55, 0xf5, 0x00, 0x7c, 0xdf, 0xe6, 0x51, 0x55, 0x55, 0x77, 0x00, - 0x5b, 0xdf, 0xe5, 0x51, 0x55, 0x55, 0x55, 0xc0, 0xed, 0x7b, 0xe6, 0x59, 0xd5, 0xff, 0xbf, 0x2f, 0x5b, 0xdf, 0x26, 0x62, 0x55, 0x57, 0x5f, 0x03, 0x5b, 0xdf, 0x06, 0x62, 0x55, 0xd5, 0xdf, 0x00, - 0x5c, 0xe7, 0x47, 0x62, 0x55, 0xdf, 0xd5, 0x00, 0xfb, 0xd6, 0x67, 0x6a, 0xd7, 0xd5, 0x2b, 0x00, 0x5c, 0xdf, 0x09, 0x7b, 0x55, 0xf5, 0x00, 0x00, 0x1b, 0xdf, 0x09, 0x73, 0x57, 0x3f, 0x00, 0x00, - 0x3c, 0xdf, 0x0a, 0x6b, 0xad, 0x00, 0x00, 0x00, 0x3b, 0xdf, 0xba, 0xd6, 0x0b, 0x5d, 0x75, 0xf7, 0x3c, 0xdf, 0xbb, 0xd6, 0xd8, 0x55, 0x57, 0xf5, 0xdb, 0xde, 0xba, 0xd6, 0xa7, 0xff, 0xff, 0xff, - 0xdb, 0xde, 0xda, 0xce, 0xaa, 0xbe, 0xaf, 0xaf, 0xdb, 0xde, 0xba, 0xd6, 0xef, 0xbb, 0xdf, 0xfe, 0xdb, 0xd6, 0xba, 0xce, 0xa0, 0x00, 0x08, 0x82, 0xdb, 0xd6, 0xba, 0xd6, 0x00, 0x0c, 0x88, 0xef, - 0xdb, 0xd6, 0xba, 0xd6, 0x9c, 0x00, 0x20, 0xeb, 0xdb, 0xd6, 0xba, 0xd6, 0x02, 0xf2, 0x80, 0x12, 0xbb, 0xde, 0xda, 0xce, 0xeb, 0xaf, 0xaf, 0xef, 0xdb, 0xd6, 0xba, 0xd6, 0x0b, 0x00, 0x82, 0x00, - 0xdb, 0xd6, 0xbb, 0xd6, 0x08, 0x00, 0xab, 0x2f, 0xfb, 0xd6, 0xba, 0xce, 0xaa, 0xaa, 0xaa, 0xba, 0xfb, 0xde, 0xba, 0xd6, 0xee, 0xff, 0xff, 0xef, 0xfb, 0xde, 0xda, 0xce, 0xff, 0xff, 0xff, 0xef, - 0xfb, 0xd6, 0xba, 0xd6, 0xab, 0xbb, 0xab, 0xff, 0xdb, 0xd6, 0xba, 0xd6, 0x20, 0x08, 0x88, 0x30, 0xfb, 0xd6, 0xba, 0xd6, 0xff, 0xee, 0xab, 0xbe, 0xfb, 0xde, 0xba, 0xd6, 0xee, 0xff, 0xff, 0xfe, - 0xdb, 0xde, 0xba, 0xd6, 0xbe, 0xba, 0xff, 0xba, 0xfb, 0xd6, 0xbb, 0xd6, 0xab, 0xaf, 0xae, 0xfa, 0xfb, 0xd6, 0xba, 0xd6, 0xf7, 0xfb, 0xaa, 0xff, 0xfb, 0xde, 0xdb, 0xd6, 0x55, 0x55, 0x55, 0xff, - 0xfb, 0xd6, 0xba, 0xd6, 0xeb, 0xff, 0xfa, 0xbf, 0xdb, 0xd6, 0xba, 0xd6, 0x38, 0xc0, 0xa8, 0x02, 0xdb, 0xde, 0xbb, 0xd6, 0x7f, 0xba, 0xfb, 0xff, 0xdb, 0xd6, 0xba, 0xd6, 0x00, 0x82, 0x80, 0x83, - 0xfb, 0xde, 0xba, 0xd6, 0xed, 0xff, 0xff, 0xff, 0xfb, 0xd6, 0xba, 0xd6, 0xfa, 0xbf, 0xbf, 0xfa, 0xfb, 0xde, 0xda, 0xd6, 0x55, 0xdb, 0xf5, 0x55, 0xdb, 0xde, 0xba, 0xd6, 0xeb, 0xae, 0xeb, 0xaa, - 0xfb, 0xd6, 0xba, 0xd6, 0xff, 0xaa, 0xea, 0xae, 0xdb, 0xde, 0xba, 0xd6, 0xba, 0xae, 0xaa, 0xaa, 0xfb, 0xd6, 0xda, 0xd6, 0xfd, 0x57, 0xfd, 0x51, 0xdb, 0xde, 0xda, 0xce, 0xaa, 0xaa, 0xab, 0xaa, - 0xdb, 0xde, 0xfb, 0xd6, 0xcf, 0xf8, 0xbf, 0xbf, 0xfc, 0xde, 0xda, 0xd6, 0xd5, 0xdf, 0xff, 0xdf, 0xfb, 0xde, 0xdb, 0xd6, 0xdf, 0xfd, 0xff, 0xfb, 0xfb, 0xde, 0xdb, 0xd6, 0x7f, 0xfd, 0xff, 0x77, - 0xfc, 0xde, 0xda, 0xd6, 0xdf, 0xf7, 0xff, 0xbf, 0xfc, 0xde, 0xda, 0xd6, 0x7f, 0x7f, 0xff, 0xff, 0xfb, 0xde, 0xda, 0xd6, 0xff, 0xef, 0x7d, 0xd7, 0xfb, 0xde, 0xba, 0xd6, 0xff, 0xff, 0xee, 0xfa, - 0xdb, 0xd6, 0xba, 0xd6, 0x00, 0xe0, 0x00, 0x02, 0xfc, 0xd6, 0xda, 0xd6, 0xfd, 0xbd, 0xdf, 0x57, 0xfb, 0xde, 0xba, 0xd6, 0xef, 0xff, 0xef, 0xfb, 0xfb, 0xde, 0xda, 0xd6, 0xd5, 0xfd, 0xff, 0x95, - 0xfb, 0xd6, 0xda, 0xd6, 0x47, 0x75, 0xd2, 0x57, 0xfb, 0xd6, 0xda, 0xd6, 0xf8, 0x5f, 0xd5, 0xd7, 0xfb, 0xde, 0xba, 0xd6, 0xee, 0xee, 0xff, 0xff, 0xfb, 0xde, 0xba, 0xd6, 0xbe, 0xff, 0xeb, 0xfb, - 0xfb, 0xd6, 0xba, 0xd6, 0xbf, 0xea, 0xea, 0xab, 0xfb, 0xde, 0xda, 0xd6, 0x5d, 0x55, 0xdf, 0x5e, 0xfb, 0xde, 0xda, 0xd6, 0xf9, 0xff, 0x5f, 0xf5, 0xfb, 0xd6, 0xda, 0xd6, 0xed, 0xf3, 0xd5, 0xf5, - 0xfb, 0xd6, 0xda, 0xd6, 0x75, 0x55, 0x5e, 0x57, 0xfb, 0xd6, 0xda, 0xd6, 0x5f, 0xdd, 0xfa, 0x5f, 0xfb, 0xd6, 0xba, 0xd6, 0xfe, 0xee, 0xbe, 0xae, 0xfc, 0xde, 0xda, 0xd6, 0xd5, 0xfd, 0xfd, 0x5f, - 0xfb, 0xde, 0xda, 0xd6, 0xfb, 0xd7, 0xd5, 0xdf, 0xfb, 0xde, 0xba, 0xd6, 0xbb, 0xba, 0xff, 0xfd, 0xfb, 0xde, 0xda, 0xd6, 0x5f, 0xd5, 0x55, 0xf5, 0xdb, 0xde, 0xba, 0xd6, 0xea, 0xeb, 0xbe, 0xff, - 0xfb, 0xd6, 0xda, 0xd6, 0x55, 0xbd, 0x55, 0xd7, 0xdb, 0xde, 0xba, 0xd6, 0xea, 0xea, 0xfe, 0xff, 0xdb, 0xde, 0xba, 0xce, 0xaa, 0xaa, 0xbf, 0xff, 0xdb, 0xd6, 0xba, 0xd6, 0xe8, 0x2b, 0x88, 0xba, - 0x7a, 0xce, 0x9b, 0xc6, 0xbf, 0xaf, 0xaa, 0xdf, 0x9b, 0xce, 0x7a, 0xc6, 0xa8, 0xa8, 0xba, 0xa2, 0x9b, 0xce, 0x79, 0xc6, 0x88, 0xaa, 0x3a, 0xaa, 0x9b, 0xce, 0x7a, 0xc6, 0x0a, 0xaa, 0x88, 0xaa, - 0x9b, 0xce, 0x7a, 0xc6, 0xa8, 0x8a, 0x8a, 0x02, 0xbb, 0xce, 0x7a, 0xc6, 0xbe, 0xff, 0xef, 0xab, 0xbb, 0xce, 0x7a, 0xc6, 0xab, 0xaa, 0xff, 0xae, 0xbb, 0xd6, 0x9a, 0xc6, 0xff, 0xff, 0xef, 0xff, - 0xbb, 0xce, 0x7a, 0xce, 0xae, 0xfa, 0xeb, 0xef, 0xbb, 0xce, 0x9a, 0xc6, 0xaf, 0xaa, 0xaa, 0xaa, 0xbb, 0xce, 0x9a, 0xce, 0x55, 0x55, 0x55, 0x95, 0xbb, 0xce, 0x9a, 0xce, 0x5b, 0x7f, 0x55, 0x65, - 0xbb, 0xce, 0x7a, 0xce, 0xfa, 0xae, 0xaa, 0xea, 0xbb, 0xce, 0x9a, 0xce, 0x57, 0x65, 0x55, 0xf7, 0xbb, 0xd6, 0x9a, 0xce, 0x55, 0x55, 0xfd, 0x5f, 0x9b, 0xce, 0x7a, 0xce, 0xc2, 0x00, 0x20, 0x00, - 0xbb, 0xd6, 0x9a, 0xc6, 0xfe, 0xff, 0xfb, 0xba, 0xbb, 0xd6, 0x9a, 0xc6, 0xff, 0xff, 0xeb, 0xbf, 0xbb, 0xce, 0x9a, 0xce, 0x55, 0x7f, 0x7f, 0xa9, 0xbb, 0xd6, 0x9a, 0xc6, 0xff, 0xef, 0xaa, 0xbf, - 0xbb, 0xce, 0x9a, 0xc6, 0xfa, 0xab, 0xbe, 0xae, 0xba, 0xd6, 0x9b, 0xc6, 0xff, 0xef, 0xfb, 0xaa, 0x9b, 0xd6, 0x9a, 0xce, 0x7d, 0xd5, 0x5d, 0x6a, 0xba, 0xd6, 0x9b, 0xc6, 0xef, 0xfa, 0xfa, 0xaa, - 0xbb, 0xce, 0x9a, 0xce, 0x75, 0x3e, 0xb6, 0x8b, 0xbb, 0xd6, 0x9a, 0xce, 0x77, 0xff, 0xff, 0xf9, 0xba, 0xd6, 0x9b, 0xce, 0xfd, 0xff, 0xff, 0xbf, 0xbb, 0xd6, 0x9a, 0xce, 0xbf, 0xff, 0xeb, 0xfb, - 0xbb, 0xd6, 0x9a, 0xce, 0xbf, 0xff, 0xbf, 0xab, 0xbb, 0xd6, 0x9a, 0xce, 0xf2, 0xaa, 0xaa, 0xaa, 0xbb, 0xd6, 0xba, 0xce, 0x55, 0xf7, 0xf7, 0xaf, 0xbb, 0xd6, 0xba, 0xce, 0xaf, 0xfd, 0xff, 0xae, - 0xdb, 0xd6, 0xba, 0xce, 0x55, 0xf7, 0x6f, 0xb7, 0xdb, 0xd6, 0xba, 0xce, 0xf5, 0x65, 0xfd, 0x76, 0x9b, 0xd6, 0xda, 0xce, 0xab, 0xfe, 0xfe, 0xff, 0xdb, 0xd6, 0xba, 0xce, 0x57, 0xbf, 0xff, 0xbe, - 0xdb, 0xd6, 0xba, 0xce, 0x75, 0xfb, 0xae, 0xaf, 0xdb, 0xd6, 0x9a, 0xce, 0xff, 0xaa, 0xea, 0xaa, 0xda, 0xd6, 0x9b, 0xce, 0xef, 0xab, 0xfa, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0xaf, 0xea, 0xaf, 0xee, - 0xdb, 0xd6, 0xba, 0xce, 0xfe, 0xa9, 0xef, 0xab, 0xdb, 0xd6, 0xba, 0xce, 0xbf, 0xae, 0xaa, 0xae, 0xdb, 0xd6, 0xba, 0xce, 0x6e, 0x6a, 0xab, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0xea, 0xbe, 0xab, 0xaa, - 0xbb, 0xd6, 0xda, 0xce, 0xaa, 0xaa, 0xf2, 0x0a, 0xdb, 0xd6, 0xba, 0xce, 0xbb, 0xfa, 0xae, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0xee, 0xae, 0xaa, 0xba, 0xdb, 0xd6, 0xba, 0xce, 0xbb, 0xaa, 0xab, 0xaa, - 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0x2a, 0xaa, 0xae, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xaa, 0xaa, 0xaa, 0xdb, 0xd6, 0xba, 0xd6, 0x77, 0xca, 0x02, 0xfa, 0xdb, 0xd6, 0xba, 0xce, 0xaf, 0x8a, 0xaa, 0xaa, - 0xdb, 0xd6, 0xba, 0xce, 0x36, 0x02, 0x8a, 0xaa, 0x1b, 0xdf, 0xba, 0xd6, 0xe2, 0xff, 0x55, 0xf7, 0xdb, 0xd6, 0xba, 0xd6, 0xb4, 0x02, 0x8a, 0x86, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xaa, 0xa8, 0x2a, - 0xdb, 0xd6, 0xba, 0xd6, 0xbe, 0x8f, 0xba, 0x20, 0xdb, 0xd6, 0xba, 0xce, 0xa2, 0x02, 0x88, 0x0a, 0xdb, 0xd6, 0xba, 0xce, 0xa8, 0xaa, 0x80, 0x2a, 0xdb, 0xd6, 0xba, 0xd6, 0x3f, 0xc2, 0xa0, 0xec, - 0xdb, 0xd6, 0xba, 0xce, 0xa8, 0xa2, 0x02, 0x8a, 0xdb, 0xd6, 0xba, 0xd6, 0x78, 0x08, 0x02, 0x2a, 0xdb, 0xd6, 0xba, 0xd6, 0x82, 0x8a, 0xbf, 0x00, 0xdb, 0xd6, 0xba, 0xce, 0x82, 0x00, 0x2a, 0xa8, - 0xdb, 0xd6, 0xba, 0xd6, 0x08, 0x02, 0x0c, 0x20, 0xdb, 0xde, 0xba, 0xce, 0xaa, 0xba, 0xfb, 0xba, 0xdb, 0xd6, 0xba, 0xd6, 0x2a, 0x3c, 0xae, 0x80, 0xdb, 0xd6, 0xba, 0xd6, 0xf8, 0xf8, 0x8a, 0xa0, - 0xdb, 0xd6, 0xba, 0xce, 0xa2, 0x82, 0x02, 0x8a, 0xdb, 0xde, 0xba, 0xce, 0xaa, 0xba, 0xfb, 0xfe, 0xdb, 0xd6, 0xba, 0xd6, 0x3a, 0xad, 0x82, 0x2a, 0xdb, 0xd6, 0xba, 0xce, 0x2a, 0xaa, 0xaa, 0x2a, - 0xdb, 0xd6, 0xba, 0xd6, 0xee, 0x88, 0xea, 0xa8, 0xfb, 0xde, 0xba, 0xce, 0xbb, 0xff, 0xff, 0xbf, 0xdb, 0xde, 0xba, 0xce, 0xaf, 0xbb, 0xba, 0xae, 0xdb, 0xde, 0xda, 0xce, 0xaa, 0xfe, 0xfe, 0xff, - 0xdb, 0xde, 0xba, 0xce, 0xea, 0xaa, 0xae, 0xea, 0xfb, 0xd6, 0xba, 0xd6, 0xaa, 0xbf, 0xff, 0xfd, 0xdc, 0xde, 0xba, 0xce, 0xaa, 0xaa, 0xea, 0xea, 0xdb, 0xd6, 0xba, 0xd6, 0x00, 0x98, 0x80, 0x00, - 0xfb, 0xd6, 0xba, 0xd6, 0xfe, 0xef, 0xff, 0xab, 0xfb, 0xde, 0xba, 0xce, 0xeb, 0xfe, 0xff, 0xff, 0xdb, 0xd6, 0xba, 0xd6, 0x08, 0x8a, 0xb0, 0x0a, 0xdb, 0xde, 0xba, 0xce, 0xeb, 0xae, 0xae, 0xea, - 0xfb, 0xd6, 0xba, 0xce, 0xfa, 0xae, 0xea, 0xbe, 0xdb, 0xd6, 0xba, 0xce, 0x22, 0x22, 0xa2, 0xa0, 0xdb, 0xd6, 0xba, 0xd6, 0x00, 0xae, 0x8a, 0xa8, 0xba, 0xd6, 0xdb, 0xce, 0xaa, 0xe8, 0xaa, 0xea, - 0xdb, 0xde, 0xba, 0xce, 0xfe, 0xbf, 0xff, 0xfa, 0xdb, 0xde, 0xba, 0xce, 0xab, 0xaa, 0xba, 0xeb, 0xdb, 0xde, 0xba, 0xce, 0xaa, 0xaa, 0xeb, 0xbf, 0xfb, 0xd6, 0xba, 0xd6, 0xff, 0xff, 0xfb, 0xeb, - 0xfc, 0xde, 0xba, 0xce, 0xbf, 0xeb, 0xeb, 0xef, 0xfc, 0xde, 0xba, 0xce, 0xeb, 0xab, 0xbb, 0xba, 0xfc, 0xde, 0xba, 0xce, 0xba, 0xba, 0xaa, 0xae, 0xfc, 0xde, 0xda, 0xd6, 0xf7, 0xff, 0x75, 0x7d, - 0xdb, 0xde, 0xda, 0xd6, 0xaf, 0x5f, 0x5d, 0x55, 0xfb, 0xde, 0xda, 0xd6, 0xf7, 0x57, 0x75, 0x55, 0xfc, 0xde, 0xba, 0xd6, 0xbf, 0xaa, 0xaf, 0xbf, 0xfc, 0xde, 0xda, 0xd6, 0xef, 0xe7, 0xff, 0xaf, - 0xfb, 0xde, 0xda, 0xd6, 0x5f, 0xff, 0xfa, 0xff, 0xfb, 0xde, 0xda, 0xd6, 0xf5, 0xfd, 0x77, 0xff, 0xfc, 0xde, 0xda, 0xd6, 0xdb, 0xd5, 0x77, 0x57, 0xfc, 0xde, 0xda, 0xd6, 0xff, 0xfb, 0xff, 0xd7, - 0xfb, 0xde, 0xda, 0xd6, 0x55, 0x55, 0x77, 0xed, 0xfb, 0xd6, 0xda, 0xd6, 0x95, 0xff, 0x77, 0xf7, 0xfb, 0xde, 0xba, 0xce, 0xfa, 0xea, 0xea, 0xae, 0xfb, 0xde, 0xda, 0xd6, 0x95, 0xf5, 0x7d, 0xd7, - 0xdb, 0xde, 0xba, 0xd6, 0xfb, 0xaa, 0xaa, 0xef, 0xfb, 0xde, 0xda, 0xd6, 0xb5, 0x77, 0x5d, 0x55, 0xfb, 0xde, 0xdb, 0xd6, 0x7d, 0x7d, 0xd5, 0x55, 0xfc, 0xde, 0xba, 0xd6, 0xfe, 0xeb, 0xfe, 0xfe, - 0xfb, 0xd6, 0xba, 0xd6, 0xaa, 0xab, 0xab, 0xeb, 0xfb, 0xde, 0xba, 0xce, 0xbb, 0xaa, 0xfe, 0xfb, 0xfb, 0xde, 0xba, 0xd6, 0xaa, 0xeb, 0xff, 0xff, 0xfb, 0xde, 0xba, 0xd6, 0xfb, 0xff, 0xff, 0xff, - 0xdb, 0xde, 0xba, 0xce, 0xaa, 0xee, 0xae, 0xba, 0xdb, 0xd6, 0xba, 0xd6, 0x00, 0x00, 0x0a, 0x3e, 0xdb, 0xd6, 0xba, 0xd6, 0x08, 0x8e, 0xa3, 0xae, 0xdb, 0xde, 0xba, 0xce, 0xaa, 0xea, 0xea, 0xfe, - 0xfc, 0xde, 0xba, 0xce, 0xfb, 0xff, 0xff, 0xef, 0xba, 0xd6, 0xdb, 0xce, 0x08, 0xae, 0xaa, 0x2b, 0xdb, 0xde, 0xba, 0xce, 0xaa, 0xab, 0xeb, 0xfa, 0xdb, 0xd6, 0xba, 0xce, 0xa0, 0x8a, 0xaa, 0x2a, - 0xdb, 0xde, 0xba, 0xce, 0xbf, 0xfb, 0xfe, 0xff, 0xdb, 0xd6, 0xba, 0xce, 0xa8, 0xaa, 0xa0, 0x2a, 0xdb, 0xd6, 0xba, 0xce, 0xa8, 0xaa, 0xa2, 0xba, 0xdb, 0xde, 0xba, 0xce, 0xbf, 0xff, 0xfa, 0xff, - 0x9b, 0xce, 0x7a, 0xc6, 0xa8, 0x2a, 0x82, 0x08, 0xbb, 0xce, 0x7a, 0xc6, 0xfe, 0xaa, 0xab, 0xba, 0xbb, 0xce, 0x7a, 0xc6, 0xf8, 0x8f, 0x2a, 0xab, 0xbb, 0xce, 0x7a, 0xc6, 0xef, 0xba, 0xaa, 0xee, - 0xbb, 0xce, 0x9a, 0xce, 0x55, 0x75, 0xf5, 0x65, 0xbb, 0xce, 0x7a, 0xc6, 0xfa, 0xaa, 0xae, 0xaa, 0xbb, 0xce, 0x7a, 0xce, 0xfb, 0xbe, 0xaa, 0xaf, 0xbb, 0xce, 0x9a, 0xce, 0x5a, 0x55, 0x55, 0x7d, - 0xba, 0xce, 0x9b, 0xce, 0xf5, 0x5f, 0x5e, 0x75, 0xbb, 0xd6, 0x9a, 0xc6, 0xef, 0xfa, 0xfe, 0xea, 0xbb, 0xce, 0x9a, 0xce, 0x57, 0x9d, 0x56, 0x28, 0xbb, 0xce, 0x9a, 0xce, 0xb5, 0x3f, 0x77, 0xdf, - 0xba, 0xce, 0x9b, 0xce, 0x8d, 0xed, 0x7d, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xff, 0xff, 0xdf, 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xfd, 0xff, 0x7e, 0xba, 0xce, 0x9b, 0xce, 0x69, 0xf5, 0xcf, 0xd5, - 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0x7f, 0xfe, 0xdb, 0x9b, 0xd6, 0xba, 0xce, 0xad, 0xab, 0xd7, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0x6f, 0xab, 0xae, 0xbb, 0xd6, 0x9a, 0xce, 0x5f, 0xff, 0xef, 0xab, - 0x9b, 0xd6, 0xba, 0xce, 0xaf, 0xff, 0xdb, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0x7f, 0xed, 0xb5, 0xeb, 0x9b, 0xd6, 0xba, 0xce, 0xd5, 0xaa, 0xff, 0xd5, 0x9b, 0xd6, 0xba, 0xce, 0xfb, 0xfe, 0xff, 0xfe, - 0xbb, 0xd6, 0x9a, 0xce, 0xfb, 0xff, 0xfe, 0xab, 0xba, 0xce, 0x9b, 0xce, 0x3e, 0x2b, 0x00, 0x28, 0xda, 0xd6, 0x9b, 0xce, 0xff, 0xfb, 0xbf, 0xfb, 0xda, 0xd6, 0x9b, 0xce, 0xaf, 0xfe, 0xfe, 0xfe, - 0xbb, 0xd6, 0x9a, 0xce, 0xea, 0xaa, 0xaa, 0x80, 0x9a, 0xd6, 0xdb, 0xce, 0xeb, 0xea, 0xaa, 0xff, 0x9b, 0xd6, 0xda, 0xce, 0xaa, 0xbf, 0xeb, 0xbe, 0xba, 0xd6, 0xdb, 0xce, 0xa2, 0xaa, 0xaf, 0xe2, - 0xdb, 0xd6, 0xba, 0xce, 0xf7, 0xff, 0xfb, 0x5a, 0xda, 0xd6, 0xbb, 0xce, 0xdd, 0xbf, 0xe7, 0xb7, 0xdb, 0xd6, 0xba, 0xce, 0x5f, 0xfa, 0xab, 0xff, 0xdb, 0xd6, 0xba, 0xce, 0xea, 0xae, 0xaa, 0xba, - 0xdb, 0xd6, 0xba, 0xce, 0xfe, 0xae, 0xaa, 0xa2, 0xdb, 0xd6, 0xba, 0xce, 0xbe, 0xfa, 0xaa, 0xae, 0xdb, 0xd6, 0xba, 0xce, 0x6b, 0xaa, 0xaa, 0xa2, 0xdb, 0xd6, 0xba, 0xce, 0xba, 0x2b, 0x8a, 0xaa, - 0xdb, 0xd6, 0xba, 0xce, 0xab, 0xaa, 0xaa, 0xaa, 0xdb, 0xde, 0xba, 0xce, 0xff, 0xbf, 0xff, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0xba, 0xaa, 0xa8, 0x88, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xaa, 0x8a, 0xaa, - 0xdb, 0xd6, 0xba, 0xce, 0x8a, 0xaa, 0xaa, 0xa0, 0xdb, 0xd6, 0xba, 0xce, 0x2e, 0xaa, 0xb2, 0xa2, 0xdb, 0xd6, 0xba, 0xd6, 0xab, 0xaa, 0x2b, 0xa6, 0xdb, 0xd6, 0xba, 0xd6, 0xac, 0xad, 0x0f, 0x2b, - 0xba, 0xd6, 0xdb, 0xce, 0xaa, 0x8a, 0xaf, 0xab, 0xbb, 0xd6, 0xda, 0xce, 0xac, 0xab, 0xa8, 0x2a, 0xdb, 0xd6, 0xba, 0xd6, 0x3f, 0xb6, 0x2a, 0xa3, 0xdb, 0xde, 0xba, 0xce, 0xff, 0xee, 0xeb, 0xbb, - 0xdb, 0xde, 0xba, 0xce, 0xbb, 0xff, 0xae, 0xbe, 0xbb, 0xde, 0xda, 0xce, 0xaa, 0xbf, 0xff, 0xfe, 0xdb, 0xd6, 0xba, 0xce, 0x82, 0x82, 0x0a, 0x22, 0xdb, 0xd6, 0xba, 0xce, 0xa8, 0xaa, 0x88, 0x80, - 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xa8, 0x22, 0xa2, 0xfb, 0xd6, 0xba, 0xce, 0xae, 0xab, 0xea, 0xbb, 0xdb, 0xd6, 0xba, 0xce, 0x2a, 0x28, 0xa8, 0x20, 0xdc, 0xde, 0xba, 0xce, 0xfe, 0xbb, 0xab, 0xab, - 0xdc, 0xde, 0xba, 0xce, 0xbf, 0xfa, 0xba, 0xfb, 0xdb, 0xd6, 0xba, 0xd6, 0xdc, 0x02, 0x20, 0x8e, 0xfb, 0xde, 0xba, 0xce, 0xfb, 0xff, 0xbe, 0xbf, 0xdb, 0xde, 0xba, 0xce, 0xea, 0xfa, 0xba, 0xfa, - 0xdb, 0xd6, 0xba, 0xd6, 0xa0, 0xf0, 0xb2, 0xa8, 0xdb, 0xd6, 0xbb, 0xd6, 0x08, 0x03, 0xaf, 0xa6, 0xdb, 0xd6, 0xba, 0xce, 0x02, 0x82, 0x8a, 0xaa, 0xfb, 0xd6, 0xba, 0xd6, 0xfe, 0xef, 0xeb, 0xff, - 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0x80, 0x82, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0x8a, 0xaa, 0xa2, 0xdb, 0xd6, 0xbb, 0xce, 0xaa, 0xa2, 0xa8, 0xbf, 0xbb, 0xde, 0xda, 0xce, 0xff, 0xaf, 0xff, 0xff, - 0xdb, 0xd6, 0xba, 0xce, 0xa0, 0x0a, 0xaa, 0x02, 0xdb, 0xde, 0xba, 0xce, 0xff, 0xab, 0xeb, 0xfa, 0xdb, 0xd6, 0xba, 0xd6, 0xe0, 0xa0, 0xbe, 0x00, 0xdb, 0xd6, 0xba, 0xd6, 0x3c, 0xe0, 0xaa, 0x0a, - 0xdb, 0xd6, 0xba, 0xd6, 0x2a, 0x2f, 0x22, 0xa1, 0xdb, 0xd6, 0xba, 0xce, 0x02, 0xaa, 0xaa, 0xa8, 0xdb, 0xd6, 0xba, 0xce, 0xa2, 0xa2, 0x0a, 0xa2, 0xdb, 0xde, 0xba, 0xce, 0xab, 0xef, 0xfb, 0xba, - 0xdb, 0xd6, 0xba, 0xd6, 0x0c, 0x3a, 0x02, 0xb3, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xa0, 0xa8, 0x8a, 0xfb, 0xd6, 0xba, 0xd6, 0xff, 0xaf, 0xff, 0xeb, 0xdb, 0xd6, 0xba, 0xce, 0x08, 0x8a, 0xa2, 0x28, - 0xdb, 0xd6, 0xba, 0xce, 0x8a, 0xa2, 0xaa, 0xaa, 0xdb, 0xd6, 0xbb, 0xd6, 0x9a, 0x5f, 0xfd, 0xb3, 0xdb, 0xd6, 0xbb, 0xd6, 0xfa, 0x63, 0x25, 0x75, 0xdb, 0xd6, 0xba, 0xd6, 0xe1, 0xfd, 0xfa, 0xd2, - 0xdb, 0xd6, 0xbb, 0xce, 0x82, 0x3a, 0x8a, 0xbb, 0xdb, 0xde, 0xba, 0xce, 0xab, 0xae, 0xff, 0xaa, 0xfb, 0xde, 0xba, 0xd6, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xde, 0xda, 0xd6, 0x55, 0x55, 0x55, 0x7d, - 0xfc, 0xde, 0xba, 0xce, 0xee, 0xaf, 0xea, 0xaa, 0xfc, 0xde, 0xba, 0xd6, 0xbf, 0xff, 0xff, 0xeb, 0xfb, 0xde, 0xda, 0xd6, 0x55, 0x75, 0xd5, 0xff, 0xfb, 0xd6, 0xba, 0xd6, 0xaa, 0xaa, 0xaa, 0xaf, - 0xfc, 0xd6, 0xda, 0xd6, 0xd9, 0xef, 0x7b, 0xff, 0xdc, 0xde, 0xda, 0xd6, 0xd5, 0xff, 0xff, 0xfe, 0xfb, 0xde, 0xbb, 0xd6, 0xfe, 0xff, 0xfa, 0xff, 0xfb, 0xde, 0xda, 0xd6, 0x77, 0xd5, 0xd5, 0xfb, - 0xdb, 0xde, 0xfb, 0xd6, 0xaf, 0xfe, 0xdf, 0xff, 0xdb, 0xde, 0xfb, 0xd6, 0xff, 0x2a, 0xbf, 0xff, 0xfb, 0xde, 0xba, 0xd6, 0x6e, 0xab, 0xaa, 0xbe, 0xfb, 0xd6, 0xdb, 0xd6, 0x55, 0xcb, 0x7e, 0x55, - 0xdc, 0xde, 0xba, 0xd6, 0xeb, 0xea, 0xab, 0xee, 0xdb, 0xd6, 0xbb, 0xd6, 0x2e, 0x08, 0x00, 0x00, 0xfb, 0xde, 0xda, 0xce, 0xff, 0xff, 0xee, 0xff, 0xdb, 0xde, 0xba, 0xd6, 0xaf, 0xae, 0xeb, 0xff, - 0xfb, 0xde, 0xba, 0xce, 0xea, 0xef, 0xeb, 0xff, 0xdc, 0xde, 0xba, 0xce, 0xaa, 0xaa, 0xab, 0xae, 0xfc, 0xde, 0xba, 0xce, 0xae, 0xbb, 0xab, 0xaf, 0xfb, 0xde, 0xda, 0xd6, 0x5d, 0x55, 0xd5, 0xff, - 0xdb, 0xde, 0xba, 0xce, 0xba, 0xfe, 0xea, 0xea, 0xdb, 0xd6, 0xba, 0xce, 0xa0, 0xe8, 0xaa, 0xaf, 0xdb, 0xd6, 0xba, 0xce, 0x22, 0xa2, 0x8a, 0xae, 0xdb, 0xd6, 0xba, 0xce, 0x22, 0xaa, 0xaa, 0x2a, - 0xdb, 0xde, 0xba, 0xce, 0xee, 0xfe, 0xeb, 0xfb, 0xdb, 0xd6, 0xbb, 0xce, 0xaa, 0xeb, 0xaa, 0xae, 0xdb, 0xd6, 0xba, 0xce, 0x0a, 0xef, 0xaa, 0xbe, 0xdb, 0xd6, 0xba, 0xce, 0xa2, 0xaa, 0xba, 0xbb, - 0xdb, 0xd6, 0xba, 0xd6, 0xfa, 0xbf, 0xdf, 0x97, 0xdb, 0xd6, 0xba, 0xce, 0xba, 0xab, 0xae, 0xbe, 0xdb, 0xd6, 0xba, 0xce, 0xbe, 0xa8, 0xae, 0xeb, 0xdb, 0xd6, 0xbb, 0xce, 0xa2, 0xbe, 0xee, 0xfa, - 0xdb, 0xd6, 0xba, 0xce, 0xa8, 0xaa, 0xaa, 0xae, 0xdb, 0xd6, 0xba, 0xce, 0xab, 0xaa, 0xba, 0xab, 0xdb, 0xd6, 0xba, 0xce, 0xfa, 0xbb, 0xab, 0x3a, 0xdb, 0xde, 0xba, 0xce, 0xff, 0xff, 0xff, 0xef, - 0x9b, 0xd6, 0x9a, 0xc6, 0xff, 0xea, 0xba, 0xaa, 0xbb, 0xce, 0x7a, 0xce, 0xeb, 0xff, 0xaa, 0xaf, 0xbb, 0xce, 0x7a, 0xce, 0xeb, 0xfb, 0xff, 0xaf, 0xbb, 0xd6, 0x7a, 0xc6, 0xab, 0xaf, 0xae, 0xaa, - 0xbb, 0xd6, 0x9a, 0xc6, 0xfe, 0xfe, 0xea, 0xab, 0xbb, 0xce, 0x9a, 0xce, 0x55, 0x5d, 0xfd, 0xeb, 0xbb, 0xce, 0x9a, 0xce, 0xe5, 0xd5, 0xff, 0xa7, 0xbb, 0xd6, 0x9a, 0xce, 0xd5, 0xdf, 0xff, 0xff, - 0xbb, 0xd6, 0x9a, 0xce, 0xf7, 0xff, 0xff, 0xff, 0xba, 0xd6, 0x9b, 0xce, 0xff, 0xbf, 0xff, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xfe, 0xaf, 0xae, 0xbb, 0xd6, 0x9a, 0xce, 0xfb, 0xae, 0xab, 0xbb, - 0x9b, 0xd6, 0xba, 0xce, 0x5f, 0xfb, 0xfb, 0xf7, 0xbb, 0xd6, 0x9a, 0xce, 0xfe, 0xaf, 0xaf, 0xae, 0xda, 0xd6, 0x9b, 0xce, 0xff, 0xff, 0xff, 0xef, 0xbb, 0xd6, 0x9a, 0xce, 0xbf, 0xab, 0xee, 0xfe, - 0xbb, 0xd6, 0x9a, 0xce, 0xfb, 0xfe, 0xff, 0xbe, 0x9a, 0xd6, 0xbb, 0xce, 0xff, 0xb7, 0x5e, 0xeb, 0xbb, 0xd6, 0x9a, 0xce, 0xab, 0xae, 0xeb, 0xef, 0xbb, 0xd6, 0x9a, 0xce, 0xba, 0xaf, 0xbb, 0xae, - 0xbb, 0xd6, 0xba, 0xce, 0xf5, 0xad, 0xee, 0xaa, 0xbb, 0xd6, 0x9a, 0xce, 0xaf, 0xbb, 0xae, 0xaa, 0xbb, 0xd6, 0xba, 0xce, 0xff, 0xff, 0xbf, 0x6b, 0xbb, 0xd6, 0x9a, 0xce, 0xef, 0xaa, 0xaa, 0xaa, - 0xdb, 0xd6, 0x9a, 0xce, 0xbf, 0xfb, 0xff, 0xff, 0xdb, 0xd6, 0x9a, 0xce, 0xff, 0xff, 0xae, 0xab, 0x9b, 0xd6, 0xda, 0xce, 0xab, 0xff, 0xaa, 0xfe, 0xbb, 0xd6, 0xba, 0xce, 0xbf, 0xf7, 0xea, 0xab, - 0xda, 0xd6, 0x9b, 0xce, 0xfe, 0xbf, 0xea, 0xea, 0xdb, 0xd6, 0x9a, 0xce, 0xbe, 0xfe, 0xaa, 0xfa, 0xda, 0xd6, 0xbb, 0xce, 0xd7, 0xbf, 0xb9, 0xff, 0xdb, 0xd6, 0xba, 0xce, 0xf7, 0xab, 0xbb, 0x7a, - 0xdb, 0xd6, 0xba, 0xce, 0xae, 0xab, 0xbe, 0xbe, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xa9, 0xae, 0xaa, 0xba, 0xd6, 0xdb, 0xce, 0x2e, 0xbe, 0xba, 0x2e, 0xda, 0xd6, 0xbb, 0xce, 0xaa, 0xab, 0xab, 0xea, - 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xae, 0xbf, 0xba, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xaa, 0xaa, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0x2a, 0xaa, 0xaa, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0xa8, 0xaa, 0xaa, 0xa2, - 0xdb, 0xd6, 0xba, 0xd6, 0x8a, 0xaa, 0x8a, 0xe3, 0xdb, 0xd6, 0xba, 0xce, 0x88, 0xa2, 0xa8, 0xaa, 0xdb, 0xd6, 0xba, 0xd6, 0xea, 0xc0, 0x00, 0x83, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xaa, 0xa8, 0x88, - 0xdb, 0xde, 0xba, 0xce, 0xea, 0xbe, 0xbb, 0xbf, 0xdb, 0xd6, 0xba, 0xce, 0x20, 0x2a, 0xaa, 0x2a, 0xdb, 0xd6, 0xba, 0xd6, 0xaa, 0x0f, 0xaf, 0xb8, 0xdb, 0xd6, 0xba, 0xce, 0x8a, 0xaa, 0x2a, 0xaa, - 0xbb, 0xde, 0xda, 0xce, 0xbe, 0xff, 0xeb, 0xfa, 0xdb, 0xd6, 0xba, 0xd6, 0x8e, 0xbe, 0x8f, 0xaa, 0xdb, 0xd6, 0xba, 0xd6, 0x88, 0xa2, 0xe7, 0x42, 0xdb, 0xd6, 0xba, 0xd6, 0xf6, 0x00, 0x02, 0xbb, - 0xdb, 0xd6, 0xba, 0xce, 0xa0, 0xae, 0xa8, 0xa8, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xaa, 0xaa, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xa2, 0xae, 0x2a, 0xba, 0xd6, 0xdb, 0xce, 0xab, 0x0a, 0xba, 0xfa, - 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xaa, 0xaa, 0xae, 0xdb, 0xd6, 0xba, 0xce, 0x2a, 0x0a, 0xba, 0xaf, 0xdb, 0xde, 0xba, 0xce, 0xaa, 0xff, 0xbf, 0xbf, 0xdb, 0xd6, 0xba, 0xd6, 0xae, 0x3f, 0xbe, 0x1e, - 0xdb, 0xd6, 0xba, 0xce, 0x88, 0xaa, 0xa2, 0x8a, 0xbb, 0xd6, 0xda, 0xce, 0x2a, 0xaa, 0x8b, 0xbc, 0xdb, 0xd6, 0xba, 0xd6, 0xcf, 0xab, 0x5e, 0x0b, 0xdb, 0xd6, 0xba, 0xce, 0xa2, 0xaa, 0xaa, 0xea, - 0xdb, 0xd6, 0xba, 0xce, 0xfa, 0xea, 0xaf, 0xfa, 0xba, 0xd6, 0xdb, 0xce, 0x0a, 0xaa, 0xea, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xbb, 0xee, 0xbb, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xbb, 0x2a, 0xaa, - 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xaa, 0xea, 0xbe, 0xdb, 0xd6, 0xba, 0xd6, 0x82, 0x7f, 0xd5, 0xdb, 0xdb, 0xd6, 0xba, 0xce, 0xab, 0xaa, 0xaf, 0xfa, 0xdb, 0xd6, 0xbb, 0xce, 0xab, 0xbb, 0xfa, 0xae, - 0xdb, 0xd6, 0xba, 0xce, 0x8a, 0xea, 0xaa, 0xfe, 0xdb, 0xd6, 0xba, 0xce, 0xa2, 0xaa, 0xa2, 0x2a, 0xbc, 0xde, 0xda, 0xce, 0xff, 0xbf, 0xbf, 0xfa, 0xdb, 0xd6, 0xba, 0xd6, 0x2f, 0xba, 0x50, 0x80, - 0xdb, 0xd6, 0xba, 0xd6, 0xe2, 0x20, 0xe3, 0xea, 0xdb, 0xd6, 0xba, 0xd6, 0xeb, 0xab, 0x2b, 0xde, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0x88, 0x8a, 0xa2, 0xdb, 0xd6, 0xba, 0xce, 0x22, 0x2a, 0xa2, 0xa2, - 0xdb, 0xd6, 0xba, 0xce, 0x2a, 0xaa, 0xa8, 0xa8, 0xdb, 0xd6, 0xba, 0xce, 0x0e, 0xaa, 0x88, 0xa2, 0xdb, 0xd6, 0xba, 0xce, 0xb2, 0xac, 0x2a, 0xae, 0xdb, 0xde, 0xba, 0xce, 0xbe, 0xbf, 0xbf, 0xbb, - 0xdb, 0xd6, 0xba, 0xce, 0xab, 0xaa, 0xa2, 0x22, 0xdc, 0xde, 0xba, 0xce, 0xff, 0xff, 0xab, 0xee, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0x0a, 0xaa, 0xa2, 0xdb, 0xde, 0xba, 0xce, 0xaa, 0xaf, 0xae, 0xee, - 0xdc, 0xde, 0xba, 0xce, 0xae, 0xaa, 0xae, 0xaa, 0xfc, 0xde, 0xba, 0xce, 0xeb, 0xfb, 0xff, 0xff, 0xdb, 0xde, 0xba, 0xce, 0xae, 0xaa, 0xae, 0xaa, 0xfc, 0xde, 0xba, 0xd6, 0xfe, 0xbf, 0xff, 0xbf, - 0xfc, 0xde, 0xbb, 0xd6, 0xff, 0xef, 0xfe, 0xef, 0xfc, 0xde, 0xbb, 0xd6, 0xeb, 0xaf, 0xfb, 0xab, 0xdb, 0xde, 0xfb, 0xd6, 0x8a, 0xbf, 0xbe, 0xeb, 0xfc, 0xde, 0xba, 0xd6, 0xff, 0xef, 0xfe, 0xea, - 0xdc, 0xde, 0xda, 0xd6, 0xef, 0xef, 0xeb, 0x5f, 0xdb, 0xde, 0xfa, 0xce, 0xba, 0xaa, 0xaa, 0xaa, 0xfb, 0xde, 0xdb, 0xd6, 0xdd, 0xdf, 0xd7, 0x5d, 0xfb, 0xde, 0xda, 0xd6, 0xbd, 0xf7, 0xbf, 0xfd, - 0xfc, 0xde, 0xdb, 0xd6, 0xff, 0x7f, 0xff, 0xf5, 0xfc, 0xde, 0xda, 0xd6, 0xef, 0xdf, 0x7f, 0xff, 0xfb, 0xd6, 0xbb, 0xd6, 0xab, 0xeb, 0xaa, 0xfe, 0xdb, 0xde, 0xbb, 0xce, 0xee, 0xaa, 0xaa, 0xea, - 0xdb, 0xde, 0xba, 0xce, 0xab, 0xab, 0xbe, 0xff, 0xdb, 0xd6, 0xbb, 0xce, 0x00, 0x80, 0xa8, 0x82, 0xdb, 0xd6, 0xbb, 0xce, 0x88, 0x82, 0xaa, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xa8, 0x88, 0xaa, - 0xdb, 0xd6, 0xbb, 0xce, 0x0a, 0xa0, 0xaa, 0xea, 0xdb, 0xd6, 0xba, 0xd6, 0x2e, 0x80, 0x53, 0xeb, 0xba, 0xd6, 0xdb, 0xce, 0x82, 0xaa, 0xaa, 0xa9, 0xfb, 0xd6, 0xba, 0xd6, 0xbe, 0xbb, 0xfb, 0xfa, - 0xdb, 0xd6, 0xba, 0xce, 0x80, 0x80, 0x20, 0xa0, 0xdb, 0xd6, 0xbb, 0xce, 0xfe, 0xba, 0xaa, 0xff, 0xbb, 0xd6, 0xda, 0xce, 0x80, 0xba, 0x82, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0xbb, 0xbb, 0xeb, 0xeb, - 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xaa, 0xbb, 0xbf, 0xdb, 0xd6, 0xba, 0xce, 0xea, 0xaa, 0xae, 0xeb, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xfa, 0xaa, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0xeb, 0xfe, 0xea, 0xb7, - 0xdb, 0xd6, 0xba, 0xce, 0xea, 0xbf, 0xff, 0xaa, 0xdb, 0xd6, 0x9a, 0xce, 0xbe, 0xab, 0xaa, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0xeb, 0xfa, 0xaa, 0xfa, 0xdb, 0xd6, 0xba, 0xce, 0xae, 0xeb, 0xaa, 0xea, - 0xdb, 0xd6, 0xba, 0xce, 0xbf, 0xae, 0xaf, 0xab, 0xdb, 0xd6, 0xba, 0xd6, 0xbe, 0xef, 0xf5, 0x7f, 0xdb, 0xd6, 0xba, 0xce, 0xfa, 0xef, 0xaa, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xea, 0xab, 0xaa, - 0xbb, 0xd6, 0x9a, 0xce, 0x5d, 0xf7, 0xff, 0xf7, 0xbb, 0xd6, 0x9a, 0xce, 0x77, 0xed, 0xf7, 0xfd, 0xbb, 0xd6, 0x9a, 0xce, 0xf5, 0xff, 0xff, 0xaf, 0xbb, 0xd6, 0x9a, 0xce, 0xf5, 0xfe, 0xef, 0xff, - 0xbb, 0xd6, 0x9a, 0xce, 0xbe, 0xef, 0xab, 0xbf, 0xbb, 0xce, 0x9a, 0xce, 0xda, 0xb2, 0x2b, 0xea, 0x9b, 0xd6, 0xba, 0xce, 0xea, 0xff, 0xf5, 0xae, 0xbb, 0xd6, 0x9a, 0xce, 0xeb, 0xff, 0xef, 0xeb, - 0xba, 0xd6, 0x9b, 0xce, 0xbe, 0xfe, 0xbf, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xab, 0xaf, 0x8b, 0xbf, 0xbb, 0xd6, 0x9a, 0xce, 0xaf, 0xaf, 0xaa, 0xaa, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xaa, 0xaa, 0xfb, - 0x9b, 0xd6, 0xba, 0xce, 0xf6, 0xfb, 0xfd, 0xfa, 0xbb, 0xd6, 0x9a, 0xce, 0xbb, 0xbe, 0xba, 0xfa, 0xbb, 0xd6, 0x9a, 0xce, 0xbb, 0xff, 0xfe, 0xef, 0xbb, 0xd6, 0x9a, 0xce, 0xde, 0xf6, 0xee, 0xeb, - 0xba, 0xd6, 0x9b, 0xce, 0xea, 0x7e, 0xbd, 0xce, 0xba, 0xd6, 0x9b, 0xce, 0xaf, 0xff, 0xef, 0xbb, 0xbb, 0xd6, 0x9a, 0xce, 0xaf, 0xef, 0xaf, 0xab, 0x9b, 0xd6, 0xba, 0xce, 0xb7, 0xff, 0x7d, 0x5f, - 0x9b, 0xd6, 0xda, 0xce, 0xbb, 0xee, 0xff, 0xfe, 0xbb, 0xd6, 0xba, 0xce, 0xfa, 0xeb, 0xef, 0x25, 0x9a, 0xd6, 0xbb, 0xce, 0xf5, 0xeb, 0xeb, 0xff, 0x9a, 0xd6, 0xdb, 0xce, 0xeb, 0xea, 0xff, 0xbf, - 0xbb, 0xd6, 0x9a, 0xce, 0x38, 0xa2, 0x0a, 0x0c, 0xdb, 0xd6, 0xba, 0xce, 0xff, 0xee, 0xfb, 0xab, 0xdb, 0xd6, 0xba, 0xce, 0xf7, 0xfe, 0xab, 0xaa, 0x9a, 0xd6, 0xdb, 0xce, 0xea, 0xfa, 0xff, 0xff, - 0xdb, 0xd6, 0xba, 0xce, 0xef, 0xfb, 0xee, 0xb9, 0xba, 0xd6, 0xdb, 0xce, 0xb2, 0x20, 0xea, 0x80, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xfa, 0xea, 0xbb, 0xbb, 0xd6, 0xda, 0xce, 0xab, 0xaa, 0xbf, 0xa8, - 0xdb, 0xd6, 0xba, 0xce, 0xab, 0xaa, 0xaa, 0xfa, 0xdb, 0xd6, 0xba, 0xce, 0xfa, 0xea, 0xbe, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0xab, 0xbe, 0x8a, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0xab, 0xbe, 0xaa, 0xaa, - 0xdb, 0xd6, 0xba, 0xce, 0xe8, 0xaa, 0xaa, 0x0a, 0xdb, 0xd6, 0xba, 0xd6, 0xce, 0x2a, 0xbe, 0xf8, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xaa, 0x2a, 0x82, 0xfb, 0xde, 0xba, 0xce, 0xff, 0xff, 0xef, 0xff, - 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0x2a, 0x80, 0x20, 0xdb, 0xde, 0xba, 0xce, 0xaf, 0xea, 0xfe, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0xa0, 0xaa, 0xa2, 0xa8, 0xdb, 0xd6, 0xba, 0xce, 0xa8, 0x28, 0xa2, 0xaa, - 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xa0, 0xa8, 0xa8, 0xdb, 0xd6, 0xba, 0xce, 0x0a, 0xaa, 0xaa, 0x2a, 0xdb, 0xd6, 0xba, 0xce, 0x28, 0xa0, 0xaa, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0xa2, 0xaa, 0xbb, 0xa2, - 0xbb, 0xd6, 0xda, 0xce, 0xea, 0x82, 0xaa, 0xbe, 0xdb, 0xd6, 0xba, 0xce, 0x2a, 0x0a, 0xaa, 0xeb, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xba, 0xaa, 0xaa, 0xba, 0xd6, 0xdb, 0xce, 0x2a, 0xbe, 0xbe, 0xaa, - 0xdb, 0xd6, 0xba, 0xd6, 0x7f, 0x9e, 0xaa, 0x66, 0xbb, 0xd6, 0xda, 0xce, 0x2a, 0xfa, 0x2a, 0xba, 0xba, 0xd6, 0xdb, 0xce, 0xba, 0xea, 0xee, 0xf2, 0xba, 0xd6, 0xdb, 0xce, 0xe0, 0xba, 0xba, 0xa9, - 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xf8, 0xfa, 0xfa, 0xba, 0xd6, 0xdb, 0xce, 0xba, 0xa0, 0x2a, 0xa8, 0xba, 0xd6, 0xdb, 0xce, 0x2a, 0xa8, 0xfe, 0xac, 0xba, 0xd6, 0xdb, 0xce, 0xaa, 0xa8, 0xcb, 0xae, - 0xdb, 0xd6, 0xba, 0xce, 0xab, 0xaf, 0xeb, 0xfe, 0xdb, 0xd6, 0xba, 0xce, 0xa3, 0xae, 0xba, 0xff, 0xdb, 0xd6, 0xba, 0xce, 0xb8, 0xaa, 0xba, 0xba, 0xdb, 0xd6, 0xba, 0xce, 0xfa, 0xea, 0xba, 0xba, - 0xdb, 0xd6, 0xba, 0xce, 0x6b, 0xbb, 0xbe, 0xff, 0xdb, 0xd6, 0xba, 0xce, 0xae, 0xfa, 0xba, 0xab, 0xdb, 0xd6, 0xba, 0xce, 0xbf, 0xaa, 0x2a, 0xba, 0xdb, 0xd6, 0xba, 0xce, 0x2b, 0xba, 0xaa, 0xfa, - 0xba, 0xd6, 0xdb, 0xce, 0xa4, 0xaa, 0xaa, 0xbe, 0xdb, 0xd6, 0xba, 0xce, 0xa2, 0xab, 0xbe, 0xbf, 0xbb, 0xd6, 0xdb, 0xce, 0x2a, 0x8b, 0xfe, 0x8a, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xaa, 0xab, 0xae, - 0xdb, 0xd6, 0xba, 0xce, 0xea, 0xaa, 0x8a, 0xa0, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xaa, 0xaa, 0x8a, 0xbb, 0xd6, 0xda, 0xce, 0xa0, 0xaa, 0xaa, 0xfa, 0xdb, 0xd6, 0xba, 0xce, 0x80, 0x22, 0x2b, 0xaa, - 0xdb, 0xd6, 0xba, 0xce, 0xa8, 0xaa, 0xe8, 0xb2, 0xdb, 0xd6, 0xba, 0xd6, 0xfc, 0xeb, 0x4a, 0xdb, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xea, 0xaa, 0xab, 0xdb, 0xd6, 0xba, 0xce, 0x8a, 0x8a, 0x2e, 0xa8, - 0xba, 0xd6, 0xdb, 0xce, 0xaa, 0xaa, 0xaa, 0xfa, 0xdc, 0xd6, 0xba, 0xce, 0xac, 0xbf, 0xaa, 0xea, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xaa, 0xaa, 0xae, 0xdb, 0xd6, 0xba, 0xce, 0x82, 0xaa, 0x8a, 0xea, - 0xdb, 0xd6, 0xba, 0xce, 0x22, 0x8a, 0x2a, 0x2a, 0xdb, 0xd6, 0xbb, 0xd6, 0x60, 0xac, 0x02, 0x39, 0xdb, 0xd6, 0xba, 0xd6, 0x21, 0x88, 0xa8, 0x02, 0xdb, 0xd6, 0xba, 0xd6, 0x03, 0x83, 0x2c, 0xa0, - 0xfc, 0xde, 0xba, 0xce, 0xab, 0xfa, 0xfe, 0xbb, 0xfb, 0xd6, 0xbb, 0xd6, 0xeb, 0xea, 0xff, 0xfb, 0xfc, 0xde, 0xba, 0xce, 0xaa, 0xaa, 0xab, 0xab, 0xdb, 0xd6, 0xba, 0xd6, 0xc0, 0x00, 0x00, 0x80, - 0xba, 0xde, 0xdb, 0xd6, 0x5f, 0x57, 0x57, 0xff, 0xfc, 0xde, 0xba, 0xd6, 0xae, 0xea, 0xae, 0xbf, 0xfc, 0xde, 0xba, 0xd6, 0xfb, 0xaa, 0xbe, 0xbb, 0xfb, 0xd6, 0xdb, 0xd6, 0xdd, 0xcf, 0x55, 0x55, - 0xfb, 0xd6, 0xdb, 0xd6, 0xd9, 0x55, 0x57, 0x55, 0xfc, 0xde, 0xba, 0xce, 0xea, 0xaf, 0xfb, 0xff, 0xfb, 0xde, 0xbb, 0xd6, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xd6, 0xba, 0xd6, 0xef, 0xee, 0xfa, 0xff, - 0xdc, 0xde, 0xba, 0xce, 0xaa, 0xaa, 0xea, 0xae, 0xdc, 0xde, 0xbb, 0xd6, 0xea, 0xbf, 0xd7, 0xff, 0xdc, 0xde, 0xba, 0xce, 0xaa, 0xaa, 0xaa, 0xaf, 0xfb, 0xd6, 0xbb, 0xd6, 0xff, 0xee, 0xfe, 0xff, - 0xdb, 0xd6, 0xba, 0xce, 0x0a, 0xa8, 0xa0, 0x82, 0xdb, 0xd6, 0xba, 0xce, 0x22, 0xa8, 0xaa, 0x8a, 0xdb, 0xd6, 0xbb, 0xce, 0xa2, 0x2a, 0xaa, 0xaa, 0xdb, 0xd6, 0xba, 0xd6, 0xae, 0xff, 0xda, 0xf7, - 0xdb, 0xd6, 0xba, 0xce, 0xa2, 0x3a, 0xab, 0xae, 0xdb, 0xd6, 0xbb, 0xce, 0xfa, 0x2a, 0xba, 0xba, 0xdb, 0xd6, 0xba, 0xce, 0x28, 0xaa, 0xaa, 0xbe, 0xdb, 0xd6, 0xba, 0xce, 0x23, 0xaa, 0xaa, 0xbf, - 0xdb, 0xd6, 0xba, 0xce, 0xae, 0xaa, 0xfa, 0xae, 0xdb, 0xd6, 0xba, 0xce, 0xba, 0xfe, 0xfa, 0xeb, 0xba, 0xd6, 0xdb, 0xce, 0xba, 0xeb, 0xaa, 0xa2, 0xdb, 0xd6, 0xba, 0xce, 0xae, 0xae, 0xea, 0xff, - 0xdb, 0xd6, 0xba, 0xce, 0xea, 0xaa, 0xab, 0xa2, 0xba, 0xd6, 0xdb, 0xce, 0xda, 0xaa, 0xae, 0xab, 0xbb, 0xd6, 0xda, 0xce, 0xaa, 0x23, 0xaa, 0xfa, 0xdb, 0xd6, 0xba, 0xce, 0xbf, 0xaa, 0x9a, 0xaa, - 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xea, 0xba, 0xbe, 0xdb, 0xd6, 0xba, 0xce, 0xab, 0xbe, 0xae, 0xfb, 0xdb, 0xd6, 0xba, 0xce, 0xe2, 0xaa, 0xaa, 0xea, 0xdb, 0xd6, 0xba, 0xce, 0xff, 0xef, 0xef, 0xba, - 0xdb, 0xd6, 0xba, 0xce, 0xba, 0xaa, 0xaa, 0xba, 0xdb, 0xd6, 0xba, 0xd6, 0x63, 0xdf, 0x27, 0xad, 0xdb, 0xd6, 0xba, 0xce, 0x8a, 0xaa, 0xa2, 0xa8, 0xdb, 0xd6, 0xba, 0xd6, 0xf0, 0x57, 0x20, 0x02, - 0xbb, 0xd6, 0x9a, 0xce, 0xf7, 0xff, 0xff, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xfd, 0xf7, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xdf, 0xef, 0xff, 0xfe, 0x9a, 0xd6, 0xbb, 0xce, 0x5f, 0xad, 0xef, 0xff, - 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xfe, 0xff, 0xaf, 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xef, 0xff, 0xaf, 0xbb, 0xd6, 0x9a, 0xce, 0xef, 0xff, 0xab, 0xea, 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xff, 0xff, 0xbe, - 0xbb, 0xd6, 0x9a, 0xce, 0xef, 0xba, 0xff, 0xfa, 0xbb, 0xd6, 0x9a, 0xce, 0xfe, 0xbf, 0xee, 0xbb, 0xbb, 0xd6, 0x9a, 0xce, 0xab, 0xbe, 0xbb, 0xab, 0xdb, 0xd6, 0x9a, 0xce, 0xbf, 0xef, 0xff, 0xef, - 0xbb, 0xd6, 0x9a, 0xce, 0xea, 0xea, 0xa2, 0xaa, 0x9a, 0xd6, 0xbb, 0xce, 0xbf, 0xff, 0x5e, 0xff, 0x9b, 0xd6, 0xba, 0xce, 0xeb, 0xff, 0xbd, 0xfd, 0x9a, 0xd6, 0xbb, 0xce, 0xaf, 0x7d, 0xf7, 0x7f, - 0xbb, 0xd6, 0x9a, 0xce, 0xba, 0xab, 0xaa, 0xaa, 0xbb, 0xd6, 0x9a, 0xce, 0xba, 0xae, 0xaa, 0xaa, 0xdb, 0xd6, 0x9a, 0xce, 0xff, 0xff, 0xbf, 0xba, 0x9a, 0xd6, 0xdb, 0xce, 0xfa, 0xfa, 0xff, 0xeb, - 0xdb, 0xd6, 0x9a, 0xce, 0xeb, 0xaa, 0xaa, 0xeb, 0x9b, 0xd6, 0xba, 0xce, 0xf7, 0xde, 0xfe, 0xef, 0xba, 0xd6, 0xdb, 0xce, 0x2a, 0xaa, 0x2c, 0xbe, 0xdb, 0xd6, 0xba, 0xce, 0xf9, 0x7e, 0xfe, 0x5f, - 0xdb, 0xd6, 0xba, 0xce, 0xab, 0xda, 0x7f, 0xfd, 0xba, 0xd6, 0xdb, 0xce, 0xab, 0xaa, 0x2f, 0xaf, 0xdb, 0xd6, 0xba, 0xce, 0xee, 0x9f, 0xfe, 0xbf, 0xba, 0xd6, 0xbb, 0xce, 0xab, 0xaa, 0x0a, 0xaa, - 0xbb, 0xd6, 0xda, 0xce, 0xaa, 0xaa, 0xfa, 0xfa, 0xba, 0xd6, 0xdb, 0xce, 0xaa, 0xea, 0x2f, 0xad, 0xba, 0xd6, 0xdb, 0xce, 0xaf, 0xae, 0x2a, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0xfa, 0xaa, 0xab, 0xaa, - 0xdb, 0xd6, 0xba, 0xd6, 0x7f, 0xff, 0xf5, 0xaf, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xbe, 0xba, 0xbe, 0xdb, 0xde, 0xba, 0xce, 0xff, 0xff, 0xfe, 0xb7, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xaa, 0xab, 0xab, - 0xdb, 0xd6, 0xba, 0xce, 0x2b, 0x8a, 0x2a, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0x2a, 0xae, 0x22, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0xa0, 0xa2, 0x8a, 0xa2, 0xfb, 0xd6, 0xba, 0xce, 0xfa, 0xfa, 0xbb, 0xfa, - 0xdb, 0xde, 0xba, 0xce, 0xba, 0xea, 0xff, 0xfe, 0xdb, 0xd6, 0xba, 0xce, 0xa8, 0xa8, 0xaa, 0xea, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xaa, 0xfe, 0xea, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xba, 0xee, 0xea, - 0xdb, 0xd6, 0xba, 0xce, 0x8a, 0xae, 0xaf, 0xff, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xaa, 0xea, 0xff, 0xdb, 0xd6, 0xba, 0xce, 0xba, 0xff, 0xb6, 0xff, 0xdb, 0xd6, 0xba, 0xce, 0xea, 0xb6, 0xfd, 0xff, - 0xdb, 0xd6, 0xba, 0xce, 0xae, 0xae, 0xfb, 0xff, 0xdb, 0xd6, 0xba, 0xce, 0xa6, 0xab, 0xfe, 0xef, 0x9a, 0xd6, 0xdb, 0xce, 0xbf, 0xff, 0xfe, 0xea, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xaa, 0xff, 0xf5, - 0xba, 0xd6, 0xdb, 0xce, 0xab, 0x2a, 0x2b, 0xca, 0xba, 0xd6, 0xdb, 0xce, 0xaa, 0xa0, 0x8a, 0xba, 0xbb, 0xd6, 0xda, 0xce, 0xaa, 0xaa, 0x28, 0xff, 0xdb, 0xd6, 0xba, 0xce, 0xfe, 0xee, 0x7f, 0xdf, - 0xdb, 0xd6, 0xba, 0xce, 0xba, 0xff, 0xfe, 0xdf, 0xba, 0xd6, 0xdb, 0xce, 0xbf, 0xea, 0xaa, 0x0a, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xae, 0xfb, 0xeb, 0xdb, 0xd6, 0xba, 0xce, 0x6e, 0xd2, 0xfb, 0xfe, - 0xbb, 0xd6, 0x9a, 0xce, 0x82, 0xa8, 0xaa, 0xaa, 0xdb, 0xd6, 0x9a, 0xce, 0xae, 0xea, 0xaf, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0x83, 0xaa, 0xaa, 0xeb, 0xdb, 0xd6, 0xbb, 0xce, 0xff, 0xaf, 0xfa, 0xff, - 0xdc, 0xd6, 0x9a, 0xce, 0xaa, 0xae, 0xea, 0xba, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xae, 0xbe, 0xef, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xaf, 0xae, 0xff, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xeb, 0xff, 0xff, - 0xba, 0xd6, 0xdb, 0xce, 0xa8, 0xa8, 0xbe, 0xaa, 0xba, 0xd6, 0xdb, 0xce, 0xaa, 0xaa, 0xfb, 0xae, 0xdb, 0xd6, 0xba, 0xce, 0xab, 0xeb, 0xaa, 0xa8, 0xdb, 0xd6, 0xba, 0xce, 0xae, 0xa2, 0xaa, 0xa2, - 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xe2, 0xaa, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0xa8, 0xaa, 0x2a, 0xaa, 0xba, 0xd6, 0xdb, 0xce, 0x7b, 0xab, 0xab, 0xaa, 0xdc, 0xd6, 0xba, 0xce, 0x8b, 0xae, 0xa8, 0xaa, - 0xdb, 0xde, 0xba, 0xce, 0xab, 0xea, 0xff, 0xbf, 0xdb, 0xd6, 0xba, 0xce, 0x8a, 0xaa, 0xaa, 0xba, 0xba, 0xd6, 0xdb, 0xce, 0xea, 0xaa, 0xba, 0x8a, 0xdb, 0xd6, 0xba, 0xce, 0xea, 0xae, 0xfa, 0xea, - 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xab, 0xaa, 0xbb, 0xdb, 0xd6, 0xba, 0xce, 0xea, 0xaa, 0xaa, 0xaa, 0xdb, 0xd6, 0xba, 0xd6, 0xf7, 0x8b, 0xab, 0xbd, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xeb, 0xab, 0xa2, - 0xdb, 0xd6, 0xba, 0xd6, 0xfa, 0xb8, 0xbf, 0xae, 0xdb, 0xd6, 0xbb, 0xd6, 0xcb, 0x2b, 0x37, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0x8a, 0x08, 0x2a, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0x28, 0xba, 0xaa, 0xea, - 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0x22, 0xaa, 0x8a, 0xbc, 0xde, 0xda, 0xce, 0xbe, 0xff, 0xef, 0xaf, 0xdb, 0xde, 0xbb, 0xd6, 0xaf, 0xef, 0x7f, 0xf7, 0xdc, 0xde, 0xba, 0xd6, 0x7b, 0xeb, 0xf9, 0xff, - 0xdb, 0xd6, 0xbb, 0xd6, 0x2a, 0x00, 0x87, 0x80, 0xfc, 0xde, 0xda, 0xce, 0xff, 0xbf, 0xff, 0xff, 0xfc, 0xde, 0xba, 0xce, 0xaa, 0xaa, 0xea, 0xaf, 0xfb, 0xd6, 0xdb, 0xd6, 0x55, 0x57, 0xd5, 0x79, - 0xdb, 0xd6, 0xbb, 0xd6, 0x98, 0xc0, 0xe2, 0x22, 0xdb, 0xd6, 0xbb, 0xd6, 0xb2, 0xeb, 0x3e, 0xb8, 0xdb, 0xde, 0xba, 0xce, 0xaa, 0xaa, 0xaf, 0xea, 0xdb, 0xde, 0xba, 0xd6, 0xff, 0xfa, 0xfb, 0xbf, - 0xdb, 0xd6, 0xba, 0xce, 0x20, 0xa0, 0x3a, 0xa0, 0xdb, 0xd6, 0xba, 0xce, 0x22, 0x28, 0xaa, 0xba, 0xdc, 0xd6, 0xba, 0xce, 0x8a, 0x8b, 0xe8, 0xbb, 0xdb, 0xd6, 0xba, 0xd6, 0xa2, 0xc2, 0xbf, 0xb9, - 0xdb, 0xd6, 0xba, 0xce, 0x22, 0x8a, 0xae, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0xac, 0x80, 0xa2, 0x8a, 0xdc, 0xd6, 0xba, 0xd6, 0xaa, 0xfb, 0xbb, 0xab, 0xdb, 0xd6, 0xbb, 0xce, 0xba, 0xbe, 0xaa, 0xea, - 0xdc, 0xd6, 0x9a, 0xce, 0xae, 0xaa, 0xba, 0xbb, 0xdb, 0xd6, 0xba, 0xce, 0xfa, 0xae, 0xfe, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0xab, 0xff, 0xaf, 0xea, 0xdb, 0xd6, 0xba, 0xce, 0xbe, 0xbf, 0xff, 0xfb, - 0xdb, 0xd6, 0xba, 0xce, 0xfe, 0xff, 0xfb, 0xff, 0xda, 0xd6, 0xbb, 0xce, 0xab, 0xfa, 0xff, 0xff, 0xdb, 0xd6, 0x9b, 0xce, 0xbe, 0xaa, 0xab, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0xab, 0xff, 0xbe, 0xba, - 0xdb, 0xd6, 0xbb, 0xce, 0xaa, 0xe7, 0xfa, 0xae, 0xba, 0xd6, 0xdb, 0xce, 0xef, 0xaf, 0xaa, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0xab, 0xef, 0xaa, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xfa, 0xbf, 0xbb, - 0xdb, 0xd6, 0xba, 0xce, 0xeb, 0xbb, 0xaf, 0xb8, 0xdb, 0xd6, 0xba, 0xce, 0xee, 0xeb, 0xab, 0xaa, 0xda, 0xd6, 0xbb, 0xce, 0xaa, 0xaa, 0xaa, 0xaa, 0xba, 0xd6, 0xdb, 0xce, 0x0a, 0x2a, 0xaa, 0xe8, - 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xba, 0xa0, 0x0a, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0x8a, 0x8a, 0x82, 0xdb, 0xd6, 0xba, 0xd6, 0x0e, 0xb8, 0xa0, 0x00, 0xdb, 0xd6, 0xba, 0xd6, 0x8d, 0x22, 0x80, 0x82, - 0xbb, 0xd6, 0x9a, 0xce, 0xfd, 0xff, 0xff, 0xbf, 0xbb, 0xd6, 0x9a, 0xce, 0xeb, 0xff, 0xba, 0xad, 0x9b, 0xd6, 0xba, 0xce, 0xbd, 0xdb, 0x6e, 0xf5, 0x9a, 0xd6, 0xbb, 0xce, 0xbb, 0xf6, 0xf5, 0xba, - 0xbb, 0xd6, 0x9a, 0xce, 0xba, 0xff, 0xef, 0xbf, 0xbb, 0xd6, 0x9a, 0xce, 0xbe, 0xba, 0xbe, 0xce, 0xbb, 0xd6, 0x9a, 0xce, 0xfa, 0xa2, 0xaa, 0xff, 0xdb, 0xd6, 0x9a, 0xce, 0xff, 0xaa, 0xff, 0xff, - 0xba, 0xd6, 0x9b, 0xce, 0xaa, 0xaa, 0xaa, 0xff, 0xda, 0xd6, 0x9b, 0xce, 0xff, 0xfb, 0xff, 0xbf, 0xdb, 0xd6, 0x9a, 0xce, 0xef, 0xff, 0xff, 0xbf, 0x9a, 0xd6, 0xdb, 0xce, 0xfe, 0xfa, 0xae, 0xea, - 0x9a, 0xd6, 0xdb, 0xce, 0xeb, 0xff, 0xaa, 0xaf, 0xbb, 0xd6, 0xba, 0xce, 0xea, 0xa8, 0x75, 0xff, 0x9a, 0xd6, 0xdb, 0xce, 0xff, 0xaf, 0xff, 0xea, 0x9b, 0xd6, 0xba, 0xce, 0xeb, 0xff, 0x7f, 0xfd, - 0xdb, 0xd6, 0x9a, 0xce, 0xff, 0xff, 0xfe, 0xef, 0xdb, 0xd6, 0xba, 0xce, 0xfb, 0xf7, 0xd7, 0xad, 0x9b, 0xd6, 0xda, 0xce, 0xae, 0xbe, 0xff, 0xff, 0xdb, 0xd6, 0xba, 0xce, 0x7e, 0x7f, 0xff, 0xdf, - 0xbb, 0xd6, 0xda, 0xce, 0x02, 0xa8, 0xaa, 0xad, 0xdb, 0xd6, 0xba, 0xce, 0xef, 0xfb, 0xef, 0xf5, 0xdb, 0xd6, 0x9a, 0xce, 0xba, 0xee, 0xab, 0xba, 0xdb, 0xd6, 0x9a, 0xce, 0xff, 0xbb, 0xbe, 0xfa, - 0xbb, 0xd6, 0xda, 0xce, 0xca, 0xaa, 0xa2, 0xbe, 0xba, 0xd6, 0xdb, 0xce, 0xae, 0xa2, 0xbf, 0xae, 0xdb, 0xd6, 0xba, 0xce, 0x7e, 0xfe, 0xeb, 0xae, 0xdb, 0xd6, 0xba, 0xce, 0xb6, 0xbe, 0xfa, 0xeb, - 0xdb, 0xd6, 0xba, 0xce, 0xfa, 0xea, 0xbe, 0xaa, 0xbb, 0xd6, 0xda, 0xce, 0xeb, 0xa2, 0x2a, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0x8f, 0xee, 0xfb, 0xb7, 0xba, 0xd6, 0xdb, 0xce, 0xfa, 0xa2, 0xaa, 0xee, - 0xdb, 0xd6, 0xba, 0xce, 0xaf, 0xba, 0xff, 0xa6, 0xdb, 0xd6, 0xba, 0xce, 0x2a, 0xea, 0xee, 0xee, 0xdb, 0xd6, 0xba, 0xce, 0xbf, 0xa9, 0xbd, 0xed, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xaa, 0xbf, 0xbb, - 0xbb, 0xd6, 0xda, 0xce, 0xa8, 0xaa, 0xea, 0xea, 0xbb, 0xd6, 0xda, 0xce, 0xab, 0xaa, 0xbf, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0xea, 0xea, 0xab, 0xa2, 0xdb, 0xd6, 0xba, 0xce, 0xab, 0xaa, 0xaa, 0x2a, - 0xdb, 0xd6, 0xba, 0xce, 0xba, 0xaa, 0xea, 0xee, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xaa, 0xaf, 0xfe, 0xdb, 0xd6, 0xba, 0xce, 0xbb, 0xff, 0xfe, 0xf6, 0xdb, 0xd6, 0xba, 0xce, 0xbf, 0xef, 0x5d, 0x55, - 0xda, 0xd6, 0x9b, 0xce, 0xfe, 0xfa, 0xfa, 0xfb, 0xdb, 0xd6, 0x9a, 0xce, 0xaf, 0xab, 0xff, 0xfb, 0x9a, 0xd6, 0xdb, 0xce, 0xff, 0xef, 0xab, 0xea, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0x2a, 0xab, 0xe9, - 0xbb, 0xd6, 0x9a, 0xce, 0x8a, 0x2a, 0xaa, 0xea, 0xdb, 0xd6, 0x9a, 0xce, 0xab, 0xfe, 0xbf, 0xff, 0xdb, 0xd6, 0x9a, 0xce, 0xab, 0xef, 0xff, 0xff, 0x9a, 0xd6, 0xbb, 0xce, 0x7b, 0xfe, 0xff, 0xff, - 0x9b, 0xd6, 0xba, 0xce, 0xfb, 0xff, 0xf7, 0xff, 0xbb, 0xd6, 0xba, 0xce, 0xa4, 0xea, 0xff, 0xfa, 0x9a, 0xd6, 0xdb, 0xce, 0xfe, 0xff, 0xfb, 0xaf, 0x9a, 0xd6, 0xbb, 0xce, 0xbf, 0xd5, 0x7a, 0xdf, - 0x9b, 0xd6, 0xbb, 0xce, 0x37, 0xfd, 0x55, 0xf7, 0x9a, 0xd6, 0xbb, 0xce, 0xea, 0xf7, 0xff, 0x57, 0xba, 0xd6, 0xdb, 0xce, 0xae, 0xa8, 0xf8, 0x2a, 0x9a, 0xd6, 0xbb, 0xce, 0x5f, 0xff, 0xd5, 0xfe, - 0xba, 0xd6, 0xdb, 0xce, 0x83, 0x3e, 0xaa, 0xae, 0xdb, 0xd6, 0xba, 0xce, 0xab, 0xff, 0xeb, 0xbd, 0xba, 0xd6, 0xdb, 0xce, 0xaa, 0xbf, 0x28, 0xef, 0xba, 0xd6, 0xdb, 0xce, 0xaa, 0xaa, 0xa8, 0x25, - 0xdb, 0xd6, 0xba, 0xce, 0xaf, 0xab, 0xab, 0xbb, 0xbb, 0xd6, 0xdb, 0xce, 0xa2, 0xa2, 0xba, 0x2e, 0xdb, 0xd6, 0xba, 0xce, 0x7f, 0x7f, 0xbb, 0xbe, 0xba, 0xd6, 0xdb, 0xce, 0xea, 0x8a, 0xea, 0x22, - 0xba, 0xd6, 0xdb, 0xce, 0xaa, 0xba, 0xea, 0xbe, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xeb, 0xeb, 0xfb, 0xdb, 0xd6, 0x9a, 0xce, 0xaa, 0xa2, 0x8a, 0xbb, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xa8, 0xab, 0xfa, - 0xdc, 0xde, 0xba, 0xce, 0xfa, 0xef, 0xff, 0xff, 0xdb, 0xd6, 0xbb, 0xd6, 0xbb, 0xf9, 0xb5, 0x5f, 0xdb, 0xd6, 0xba, 0xd6, 0xff, 0xaf, 0xf7, 0x59, 0xba, 0xd6, 0xdb, 0xce, 0xa2, 0xaa, 0xbe, 0xae, - 0xbc, 0xd6, 0xda, 0xce, 0xaf, 0xaa, 0xea, 0xe8, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xaa, 0x22, 0xba, 0xdb, 0xd6, 0xba, 0xce, 0xea, 0xba, 0x8a, 0xab, 0xdb, 0xd6, 0xba, 0xce, 0xab, 0xaa, 0xa2, 0xfa, - 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xa8, 0xee, 0xee, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0x2a, 0xaa, 0x8b, 0xdc, 0xd6, 0xba, 0xce, 0xbe, 0xfb, 0xae, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0xea, 0xff, 0xaa, 0x73, - 0xdc, 0xd6, 0x9a, 0xce, 0xaa, 0xbe, 0xfa, 0xab, 0xdb, 0xd6, 0xbb, 0xce, 0xaa, 0xab, 0xff, 0xff, 0xdb, 0xd6, 0xbb, 0xce, 0xeb, 0xee, 0xfa, 0xf7, 0xdb, 0xd6, 0xba, 0xce, 0xba, 0xba, 0xab, 0xbb, - 0xba, 0xd6, 0xdb, 0xce, 0xaa, 0xa2, 0x5a, 0xfb, 0xdc, 0xd6, 0xbb, 0xd6, 0x27, 0x95, 0xfa, 0xa7, 0xdb, 0xd6, 0xba, 0xce, 0xa0, 0xaa, 0xe2, 0xba, 0xdc, 0xd6, 0xba, 0xce, 0xaa, 0xeb, 0xaa, 0xee, - 0xdb, 0xd6, 0xba, 0xce, 0xb0, 0x0a, 0x2b, 0xa8, 0xdb, 0xd6, 0xbb, 0xd6, 0xeb, 0x22, 0x38, 0x60, 0xdb, 0xde, 0xba, 0xce, 0xaa, 0xaa, 0xbb, 0xab, 0xfc, 0xde, 0xbb, 0xce, 0xba, 0xfe, 0xfe, 0xaf, - 0xdb, 0xd6, 0xba, 0xd6, 0x20, 0x20, 0xa8, 0xcf, 0xdb, 0xd6, 0xbb, 0xd6, 0x7e, 0xff, 0xfe, 0x7a, 0xdc, 0xd6, 0xbb, 0xce, 0xa8, 0xba, 0x2f, 0xef, 0xdb, 0xd6, 0xbb, 0xce, 0xaa, 0x22, 0xaa, 0xfa, - 0xdb, 0xd6, 0xba, 0xce, 0x08, 0x2a, 0xa2, 0xaa, 0xbb, 0xd6, 0xdb, 0xce, 0xab, 0x2b, 0xea, 0xaa, 0xdc, 0xd6, 0x9b, 0xce, 0xaa, 0xea, 0xbe, 0xfa, 0xdb, 0xd6, 0xbb, 0xce, 0xa2, 0xea, 0xbe, 0xef, - 0xdb, 0xd6, 0xbb, 0xce, 0x2a, 0xae, 0xaa, 0xab, 0xdb, 0xd6, 0xbb, 0xd6, 0xaf, 0xe9, 0x7b, 0x7a, 0xdb, 0xd6, 0xbb, 0xce, 0xaa, 0xaa, 0xaa, 0xaf, 0xba, 0xd6, 0xdb, 0xce, 0xbf, 0xaa, 0xfa, 0xaa, - 0xdb, 0xd6, 0x9a, 0xce, 0xea, 0xae, 0xfa, 0xfb, 0xdb, 0xd6, 0xba, 0xce, 0xfe, 0xbe, 0xaf, 0xff, 0xdc, 0xd6, 0xba, 0xce, 0xba, 0xfb, 0xff, 0xef, 0x9a, 0xd6, 0xdb, 0xce, 0xbe, 0xef, 0xff, 0xef, - 0xba, 0xd6, 0xdb, 0xce, 0x68, 0xaa, 0xaa, 0x2b, 0xdb, 0xd6, 0x9a, 0xce, 0xbb, 0xae, 0xef, 0xee, 0xba, 0xd6, 0xdb, 0xce, 0x0f, 0x2a, 0xaa, 0xa8, 0xba, 0xd6, 0xdb, 0xce, 0xa0, 0xe0, 0xa2, 0xa2, - 0xba, 0xd6, 0xdb, 0xce, 0x2a, 0xa0, 0xda, 0xea, 0xdb, 0xd6, 0xba, 0xce, 0xae, 0xab, 0xee, 0xab, 0xdb, 0xd6, 0xba, 0xce, 0xfe, 0xab, 0xba, 0xaf, 0xdb, 0xd6, 0xba, 0xce, 0x2e, 0xaa, 0xba, 0xea, - 0xdb, 0xd6, 0xba, 0xd6, 0xa5, 0xbe, 0x39, 0x6b, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xea, 0x3a, 0xa3, 0xdb, 0xd6, 0xba, 0xd6, 0x82, 0xab, 0xf8, 0x02, 0xdb, 0xd6, 0xba, 0xd6, 0xe9, 0xa8, 0x7a, 0x00, - 0xdc, 0xde, 0xba, 0xce, 0xab, 0xfa, 0xab, 0xba, 0xdb, 0xd6, 0xbb, 0xd6, 0x80, 0x8f, 0x7e, 0x82, 0xdb, 0xde, 0xba, 0xce, 0xfa, 0xba, 0xab, 0xaa, 0xdb, 0xd6, 0xbb, 0xd6, 0x00, 0x08, 0xae, 0x00, - 0xbb, 0xd6, 0x9a, 0xce, 0xbf, 0xff, 0xff, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xfe, 0xff, 0xff, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xef, 0xff, 0xf7, 0xbb, 0xce, 0x9a, 0xce, 0xae, 0x47, 0xfe, 0xae, - 0xbb, 0xd6, 0x9a, 0xce, 0xeb, 0xff, 0xfe, 0xfe, 0x9b, 0xd6, 0xba, 0xce, 0xeb, 0xab, 0xaa, 0xbf, 0xbb, 0xd6, 0x9a, 0xce, 0xbf, 0xef, 0xff, 0xfb, 0xba, 0xd6, 0x9b, 0xce, 0xbf, 0xef, 0xaf, 0xf7, - 0xbb, 0xd6, 0x9a, 0xce, 0xab, 0xaa, 0xbf, 0xff, 0xba, 0xd6, 0x9b, 0xce, 0xba, 0xef, 0xfe, 0xfb, 0xbb, 0xd6, 0x9a, 0xce, 0x6a, 0xaf, 0xfb, 0xbf, 0xbb, 0xd6, 0x9a, 0xce, 0xba, 0xea, 0xee, 0xeb, - 0x9a, 0xd6, 0xbb, 0xce, 0xf7, 0xfd, 0x5f, 0xa7, 0xba, 0xd6, 0x9b, 0xce, 0xaf, 0xea, 0xfe, 0xef, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xaf, 0xbf, 0xab, 0x9a, 0xd6, 0xbb, 0xce, 0xfd, 0xfe, 0x7f, 0xdf, - 0xdb, 0xd6, 0x9a, 0xce, 0xbb, 0xff, 0xff, 0xdf, 0x9a, 0xd6, 0xbb, 0xce, 0xff, 0xfe, 0xfe, 0xdf, 0x9a, 0xd6, 0xdb, 0xce, 0xaf, 0xef, 0xea, 0xaa, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xaa, 0xba, 0xba, - 0xda, 0xd6, 0x9b, 0xce, 0xfb, 0xff, 0xff, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xa2, 0xaa, 0xfa, 0xbb, 0xbb, 0xd6, 0x9a, 0xce, 0xa8, 0xaa, 0xaa, 0xae, 0xdb, 0xd6, 0x9a, 0xce, 0xeb, 0xff, 0xfe, 0xff, - 0xdb, 0xd6, 0x9a, 0xce, 0xbb, 0xaf, 0xff, 0xff, 0xdb, 0xd6, 0xba, 0xce, 0xb9, 0xfd, 0x7d, 0xfd, 0x9a, 0xd6, 0xdb, 0xce, 0xfe, 0xfe, 0xea, 0xea, 0xdb, 0xd6, 0xba, 0xce, 0xff, 0xfe, 0x9f, 0x9f, - 0xdb, 0xd6, 0x9a, 0xce, 0xae, 0xae, 0xfb, 0xaf, 0xba, 0xd6, 0xdb, 0xce, 0x2a, 0x0b, 0x20, 0xaa, 0xba, 0xd6, 0xdb, 0xce, 0x8a, 0xbe, 0xbe, 0x2a, 0x9a, 0xd6, 0xbb, 0xce, 0xf7, 0x5f, 0xfd, 0xb7, - 0xbb, 0xd6, 0x9a, 0xce, 0x82, 0x0b, 0xaa, 0xee, 0x9b, 0xd6, 0xba, 0xce, 0xff, 0x5f, 0xeb, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xa2, 0xab, 0xbe, 0xfb, 0xdb, 0xd6, 0x9a, 0xce, 0xab, 0xff, 0xff, 0xff, - 0xdb, 0xd6, 0x9a, 0xce, 0xaa, 0xff, 0xeb, 0xef, 0xdb, 0xd6, 0x9a, 0xce, 0xea, 0xaa, 0xaa, 0xab, 0xba, 0xd6, 0xdb, 0xce, 0xa0, 0xa2, 0xae, 0x0a, 0x9a, 0xd6, 0xdb, 0xce, 0xaa, 0xfb, 0xaf, 0xbf, - 0x9a, 0xd6, 0xdb, 0xce, 0xaa, 0xbe, 0xea, 0xbb, 0x9a, 0xd6, 0xbb, 0xce, 0xfd, 0xff, 0xfd, 0xeb, 0x9a, 0xd6, 0xbb, 0xce, 0xdf, 0xfd, 0xff, 0xbf, 0xba, 0xd6, 0x9b, 0xce, 0xaa, 0xfa, 0xaa, 0xef, - 0x9a, 0xd6, 0xbb, 0xce, 0x7a, 0xff, 0x7f, 0x5f, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xfa, 0xbf, 0xff, 0x9b, 0xd6, 0xba, 0xc6, 0xfa, 0xef, 0xff, 0xba, 0xbb, 0xd6, 0x9a, 0xce, 0xbb, 0xfe, 0xef, 0x7f, - 0xbb, 0xd6, 0x9a, 0xc6, 0xaa, 0xae, 0xab, 0xaa, 0xda, 0xd6, 0x9b, 0xce, 0xff, 0xff, 0xff, 0xff, 0xba, 0xd6, 0x9b, 0xce, 0xbf, 0xfe, 0xbf, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xae, 0xab, 0xaa, 0xaf, - 0xdb, 0xd6, 0x9a, 0xce, 0xef, 0xaf, 0xfb, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xaa, 0xba, 0xae, 0xdb, 0xd6, 0x9a, 0xce, 0xff, 0xef, 0xfe, 0xfe, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xea, 0xaa, 0xaa, - 0x9a, 0xd6, 0xdb, 0xce, 0xff, 0xfb, 0xbf, 0xea, 0xdb, 0xd6, 0x9a, 0xce, 0xee, 0xef, 0xea, 0xff, 0xba, 0xd6, 0xdb, 0xce, 0xae, 0xea, 0xb8, 0xea, 0xba, 0xd6, 0xdb, 0xce, 0xa0, 0x82, 0x2a, 0x8b, - 0xdb, 0xd6, 0x9a, 0xce, 0xba, 0xba, 0xaa, 0xba, 0xba, 0xd6, 0xdb, 0xce, 0xa8, 0xbf, 0xba, 0xa8, 0xdb, 0xd6, 0xbb, 0xce, 0xbf, 0xbf, 0xbe, 0xaa, 0xba, 0xd6, 0xdb, 0xce, 0xaa, 0xaf, 0xbf, 0x82, - 0xdb, 0xd6, 0xba, 0xce, 0xbb, 0xea, 0xee, 0xaf, 0xba, 0xd6, 0xdb, 0xce, 0xae, 0xa3, 0xba, 0x8a, 0xdc, 0xd6, 0xba, 0xce, 0xeb, 0xbe, 0xba, 0xae, 0xba, 0xd6, 0xdb, 0xce, 0xaa, 0xea, 0xba, 0xa2, - 0xba, 0xd6, 0xdb, 0xce, 0x88, 0xee, 0xaa, 0x8a, 0xba, 0xd6, 0xdb, 0xce, 0xba, 0xa2, 0xa2, 0xab, 0xdb, 0xd6, 0xba, 0xce, 0xbe, 0xaf, 0xeb, 0xbe, 0xdb, 0xd6, 0xba, 0xce, 0xfe, 0xea, 0xee, 0xfe, - 0xdb, 0xd6, 0xba, 0xce, 0xfa, 0xeb, 0xbf, 0xfe, 0xdb, 0xd6, 0x9a, 0xce, 0xba, 0xba, 0xea, 0xba, 0xdb, 0xd6, 0xba, 0xce, 0xba, 0xfe, 0xaf, 0xaf, 0xdb, 0xd6, 0xba, 0xce, 0xba, 0xbe, 0x2a, 0xef, - 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xbe, 0xaa, 0xea, 0xdb, 0xd6, 0xbb, 0xce, 0xaa, 0xbe, 0xba, 0xeb, 0xdb, 0xd6, 0xbb, 0xce, 0xaa, 0xaa, 0xaa, 0xaa, 0xdb, 0xd6, 0xbb, 0xce, 0xea, 0xaa, 0xea, 0xfe, - 0xdb, 0xd6, 0x9a, 0xce, 0xaa, 0xae, 0xfa, 0xab, 0xba, 0xd6, 0xdb, 0xce, 0xa8, 0xbf, 0xa2, 0xa7, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xff, 0xfe, 0xff, 0xdc, 0xd6, 0x9a, 0xce, 0xee, 0xab, 0xfa, 0xbe, - 0xbb, 0xd6, 0xdb, 0xce, 0x2a, 0x2c, 0xaa, 0xaa, 0xba, 0xd6, 0xdb, 0xce, 0x2a, 0xa8, 0xea, 0xea, 0xba, 0xd6, 0xdb, 0xce, 0xa8, 0x82, 0xaa, 0xff, 0xbb, 0xd6, 0xdb, 0xce, 0xaa, 0xea, 0xae, 0x2b, - 0xdb, 0xd6, 0xba, 0xce, 0xaf, 0xca, 0xbe, 0xea, 0xdb, 0xd6, 0xbb, 0xce, 0xaa, 0xab, 0xea, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0x3e, 0xaa, 0xaa, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xea, 0xae, 0xaa, - 0xdb, 0xd6, 0xba, 0xce, 0x2b, 0xaa, 0xaa, 0xaa, 0xdb, 0xd6, 0xbb, 0xce, 0xaa, 0xaa, 0xaa, 0xaf, 0xdc, 0xd6, 0xba, 0xce, 0xaa, 0xaa, 0xab, 0xab, 0xdc, 0xd6, 0xbb, 0xd6, 0xaa, 0xa2, 0x89, 0xca, - 0xdc, 0xd6, 0xba, 0xce, 0xae, 0xfa, 0x7b, 0xfe, 0xbb, 0xd6, 0xdb, 0xce, 0x0a, 0xaa, 0xaa, 0xea, 0xdc, 0xd6, 0xba, 0xce, 0xba, 0xba, 0xee, 0xbe, 0xdb, 0xd6, 0xba, 0xce, 0xff, 0xbf, 0xaa, 0xde, - 0xba, 0xd6, 0xdb, 0xce, 0xfe, 0x88, 0xea, 0xba, 0xdc, 0xd6, 0xbb, 0xd6, 0xde, 0xaf, 0x57, 0xed, 0xdc, 0xd6, 0xba, 0xce, 0xfa, 0xbf, 0xff, 0xde, 0xba, 0xd6, 0xdb, 0xce, 0x2e, 0xea, 0xea, 0x2a, - 0xdb, 0xd6, 0xba, 0xce, 0xba, 0xbf, 0xbe, 0xff, 0xdc, 0xd6, 0xbb, 0xce, 0xeb, 0xbf, 0xbf, 0xbb, 0xba, 0xd6, 0xdb, 0xce, 0x8f, 0xaf, 0xaa, 0x0b, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xba, 0xaf, 0xea, - 0xdb, 0xd6, 0xba, 0xce, 0x7b, 0xeb, 0xea, 0xaf, 0xba, 0xd6, 0xdb, 0xce, 0x0a, 0xaa, 0xaf, 0xaa, 0xdb, 0xd6, 0x9a, 0xce, 0xab, 0xea, 0xaf, 0xea, 0x9a, 0xd6, 0xdb, 0xce, 0xae, 0xff, 0xfa, 0xbe, - 0xdb, 0xd6, 0xba, 0xce, 0xff, 0xbf, 0xbd, 0xab, 0xdb, 0xd6, 0x9a, 0xce, 0xbf, 0xbb, 0xaa, 0xaa, 0xdb, 0xd6, 0x9a, 0xce, 0xba, 0xff, 0xaa, 0xab, 0xdb, 0xd6, 0x9a, 0xce, 0xfb, 0xae, 0xba, 0xaa, - 0xdb, 0xd6, 0xba, 0xce, 0xff, 0xef, 0xaa, 0xaf, 0xdb, 0xd6, 0xba, 0xce, 0xfe, 0x2a, 0xfa, 0xaa, 0xbc, 0xd6, 0xda, 0xce, 0xab, 0xaa, 0xa2, 0x0a, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xaa, 0xaa, 0x2a, - 0xdb, 0xd6, 0xba, 0xd6, 0x8b, 0xce, 0xba, 0x3c, 0xdb, 0xde, 0xba, 0xce, 0xba, 0xff, 0xff, 0xaa, 0xdb, 0xde, 0xba, 0xce, 0xff, 0xaf, 0xbf, 0xaa, 0xdb, 0xd6, 0xba, 0xd6, 0xaf, 0x82, 0x28, 0x02, - 0xfb, 0xd6, 0xba, 0xd6, 0xff, 0xbf, 0xff, 0xbf, 0xfb, 0xd6, 0xda, 0xd6, 0x55, 0x55, 0x5d, 0xd6, 0xfb, 0xde, 0xba, 0xce, 0xbf, 0xea, 0xab, 0xab, 0xfb, 0xde, 0xba, 0xd6, 0xff, 0xff, 0xff, 0xee, - 0xbb, 0xd6, 0x9a, 0xc6, 0xeb, 0xbb, 0xfa, 0xaa, 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xff, 0xf7, 0x7f, 0xbb, 0xd6, 0x9a, 0xce, 0xe7, 0x7f, 0xdd, 0x7d, 0xbb, 0xce, 0x9a, 0xce, 0xfe, 0x65, 0xed, 0x6d, - 0xba, 0xd6, 0x9b, 0xce, 0xfa, 0xd5, 0x55, 0xd5, 0xbb, 0xce, 0x9a, 0xce, 0x8f, 0xb7, 0x3f, 0xff, 0xbb, 0xd6, 0x9a, 0xc6, 0xaa, 0xba, 0xff, 0xae, 0xbb, 0xce, 0x9a, 0xce, 0xde, 0x7f, 0xfd, 0xd7, - 0xbb, 0xd6, 0x9a, 0xc6, 0xbf, 0xbe, 0xbe, 0xfe, 0xba, 0xce, 0x9b, 0xce, 0xd6, 0x5e, 0x0d, 0xf2, 0xbb, 0xd6, 0x9a, 0xce, 0xdf, 0x7f, 0xf7, 0x7f, 0xba, 0xd6, 0x9b, 0xce, 0x5f, 0xf5, 0xff, 0xef, - 0x9a, 0xd6, 0xbb, 0xce, 0xaa, 0xff, 0x5e, 0xfb, 0xbb, 0xd6, 0x9a, 0xce, 0xb5, 0xed, 0x55, 0x7f, 0xbb, 0xd6, 0x9a, 0xce, 0x5b, 0xff, 0xdf, 0xf6, 0xbb, 0xd6, 0x9a, 0xce, 0xbb, 0xff, 0xff, 0xfd, - 0xbb, 0xd6, 0x9a, 0xce, 0xbf, 0xff, 0xff, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xea, 0xff, 0xff, 0xfd, 0xbb, 0xd6, 0x9a, 0xce, 0xba, 0xfe, 0xff, 0xff, 0xba, 0xce, 0x9b, 0xce, 0xed, 0xc0, 0xa0, 0xbf, - 0xdb, 0xd6, 0x9a, 0xce, 0xff, 0xff, 0xea, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xe8, 0xbb, 0xba, 0xbb, 0xbb, 0xd6, 0x9a, 0xce, 0xbf, 0xbb, 0xeb, 0xae, 0xda, 0xd6, 0x9b, 0xce, 0xff, 0xff, 0xff, 0xef, - 0x9b, 0xd6, 0xba, 0xce, 0x7f, 0xf5, 0xef, 0xff, 0x9a, 0xd6, 0xbb, 0xce, 0x97, 0xd7, 0xff, 0xff, 0xbb, 0xd6, 0xba, 0xce, 0xf8, 0xfe, 0xab, 0xb7, 0x9a, 0xd6, 0xdb, 0xce, 0xfd, 0xfa, 0xaa, 0xaa, - 0x9a, 0xd6, 0xdb, 0xce, 0xea, 0xfa, 0xea, 0xfb, 0xdb, 0xd6, 0x9a, 0xce, 0xfa, 0xfb, 0xbb, 0xff, 0x9a, 0xd6, 0xdb, 0xce, 0xea, 0xaa, 0xaa, 0xaa, 0xdb, 0xd6, 0x9a, 0xce, 0xfb, 0xbf, 0xff, 0xff, - 0x9b, 0xd6, 0xba, 0xce, 0xed, 0xff, 0x57, 0x7f, 0xba, 0xce, 0x9b, 0xce, 0x36, 0x82, 0xf8, 0x28, 0xbb, 0xd6, 0x9a, 0xce, 0xbf, 0xbf, 0xff, 0xdb, 0x9b, 0xd6, 0xba, 0xce, 0xe2, 0x5f, 0xfe, 0xbf, - 0x9a, 0xd6, 0xbb, 0xce, 0x7f, 0x5f, 0xf5, 0xde, 0x9a, 0xd6, 0xbb, 0xce, 0x7b, 0xfd, 0xfe, 0xef, 0xdb, 0xd6, 0x9a, 0xce, 0xfe, 0xfa, 0xeb, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0x8a, 0xaa, 0xa2, 0xaa, - 0xdb, 0xd6, 0x9a, 0xce, 0xfe, 0xff, 0xfa, 0xef, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xaa, 0x6a, 0xea, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xbe, 0xff, 0xef, 0xba, 0xce, 0x9b, 0xce, 0xfe, 0x0a, 0x3e, 0xaa, - 0x9b, 0xd6, 0xba, 0xc6, 0xff, 0xaa, 0xbf, 0xab, 0xbb, 0xd6, 0x9a, 0xce, 0xee, 0xff, 0xfe, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xee, 0xff, 0xbf, 0xaf, 0x9b, 0xd6, 0xba, 0xce, 0xfa, 0x7f, 0xff, 0x7f, - 0xbb, 0xd6, 0x9a, 0xce, 0xee, 0x7f, 0xff, 0xff, 0x9b, 0xd6, 0xda, 0xce, 0xa8, 0x2a, 0xeb, 0xbe, 0xbb, 0xd6, 0x9a, 0xce, 0xbe, 0xbf, 0xba, 0xba, 0xbb, 0xd6, 0x9a, 0xce, 0xbb, 0xab, 0xaa, 0xae, - 0x9a, 0xd6, 0xbb, 0xce, 0xed, 0x7d, 0x57, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xae, 0xaa, 0xaa, 0x8a, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xab, 0xaa, 0xaa, 0xbb, 0xd6, 0x9a, 0xce, 0x8a, 0xea, 0xaa, 0x28, - 0xdb, 0xd6, 0xba, 0xce, 0xff, 0x7b, 0xff, 0xfa, 0xdb, 0xd6, 0xba, 0xce, 0xfe, 0xff, 0xff, 0xea, 0xbc, 0xd6, 0xba, 0xce, 0xea, 0xfa, 0xfa, 0xb2, 0x9a, 0xd6, 0xdb, 0xce, 0xab, 0xff, 0xff, 0xaa, - 0xdb, 0xd6, 0x9a, 0xce, 0xba, 0xba, 0xaa, 0xaf, 0xdb, 0xd6, 0xba, 0xce, 0xff, 0xb6, 0xef, 0xee, 0xdb, 0xd6, 0xba, 0xce, 0xba, 0xaf, 0xeb, 0xbb, 0xba, 0xd6, 0xdb, 0xce, 0x0a, 0xea, 0x28, 0xaa, - 0xbb, 0xd6, 0xda, 0xce, 0xa8, 0xeb, 0xab, 0xfa, 0xbb, 0xd6, 0xdb, 0xce, 0xeb, 0xbb, 0xab, 0xa8, 0xdb, 0xd6, 0x9b, 0xce, 0xaa, 0xaa, 0xa8, 0xbe, 0xdb, 0xd6, 0xba, 0xce, 0xab, 0xfa, 0xbe, 0xff, - 0x9b, 0xd6, 0xdb, 0xce, 0xcf, 0xaf, 0xff, 0xaf, 0xdb, 0xd6, 0xba, 0xce, 0xbf, 0xff, 0xee, 0xfa, 0xbb, 0xd6, 0x9a, 0xce, 0x82, 0xa8, 0x8a, 0xaa, 0xbc, 0xd6, 0xba, 0xce, 0xff, 0xfa, 0xfe, 0xff, - 0xbb, 0xd6, 0xba, 0xce, 0xaf, 0xf5, 0xf5, 0xeb, 0x9a, 0xd6, 0xdb, 0xce, 0xaf, 0xaa, 0xba, 0xfa, 0xdb, 0xd6, 0x9a, 0xce, 0xea, 0xaa, 0xbe, 0xfa, 0xdb, 0xd6, 0xba, 0xce, 0xbe, 0xaf, 0xff, 0xdf, - 0xdb, 0xd6, 0xba, 0xce, 0xe8, 0xaa, 0xba, 0xaf, 0xdb, 0xd6, 0xbb, 0xce, 0xbf, 0x0a, 0xbf, 0xae, 0xdc, 0xd6, 0xba, 0xce, 0xaa, 0xaa, 0xaa, 0x8f, 0xdb, 0xd6, 0x9b, 0xce, 0xea, 0xfa, 0xea, 0xae, - 0xdc, 0xd6, 0x9a, 0xce, 0xaa, 0xfe, 0xff, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xaa, 0xaa, 0xba, 0x9a, 0xd6, 0xbb, 0xce, 0xff, 0xf5, 0x55, 0x7b, 0xbc, 0xd6, 0x9a, 0xce, 0xaa, 0xaa, 0xaa, 0xb3, - 0xdb, 0xd6, 0x9a, 0xce, 0xeb, 0xbf, 0xee, 0xfa, 0xdb, 0xd6, 0x9a, 0xce, 0xbb, 0xab, 0xba, 0xff, 0x9a, 0xd6, 0xdb, 0xce, 0xaf, 0xbf, 0xfa, 0xff, 0xdb, 0xd6, 0xba, 0xce, 0xbb, 0xbf, 0xbe, 0xff, - 0xbb, 0xd6, 0xdb, 0xce, 0x2a, 0xaa, 0xae, 0xea, 0xbb, 0xd6, 0xda, 0xce, 0xaa, 0xa2, 0xae, 0xbf, 0xdc, 0xd6, 0xba, 0xce, 0xab, 0xaa, 0xae, 0xff, 0xdc, 0xd6, 0xba, 0xce, 0xf8, 0xea, 0xaa, 0xff, - 0xbc, 0xd6, 0xba, 0xce, 0x0a, 0xaa, 0xfa, 0xfa, 0xdc, 0xd6, 0xba, 0xce, 0xab, 0xed, 0xfd, 0xff, 0xdc, 0xd6, 0xba, 0xce, 0xfe, 0xfa, 0xff, 0xfe, 0xdc, 0xd6, 0xbb, 0xce, 0xab, 0xab, 0xbe, 0xff, - 0xdc, 0xd6, 0xba, 0xce, 0xbf, 0xfa, 0xfa, 0xef, 0xdc, 0xd6, 0x9a, 0xce, 0xaa, 0xfe, 0xfa, 0xef, 0xba, 0xd6, 0xdb, 0xce, 0xaf, 0x0a, 0xba, 0xbe, 0xbb, 0xd6, 0xdb, 0xce, 0xfa, 0xaa, 0x2a, 0xaa, - 0xdb, 0xd6, 0xbb, 0xce, 0xea, 0xbf, 0xbf, 0xfd, 0xba, 0xd6, 0xdc, 0xce, 0xfa, 0xaa, 0xaa, 0xaa, 0xba, 0xd6, 0xdc, 0xce, 0x8a, 0xab, 0xa0, 0x2a, 0xbb, 0xd6, 0xdc, 0xce, 0xae, 0x80, 0xaa, 0x80, - 0xdb, 0xd6, 0xbb, 0xce, 0xeb, 0xbf, 0xbf, 0xfe, 0xdb, 0xd6, 0xbb, 0xce, 0x3a, 0xab, 0xba, 0x2b, 0xdc, 0xd6, 0xba, 0xce, 0xfa, 0xaf, 0xba, 0xef, 0xdb, 0xd6, 0xbb, 0xce, 0xbf, 0xbb, 0xfa, 0xaf, - 0xdb, 0xd6, 0xbb, 0xce, 0xea, 0xae, 0xaa, 0xaf, 0xbb, 0xd6, 0xdb, 0xce, 0xa0, 0xae, 0xa0, 0xe2, 0xdc, 0xd6, 0xba, 0xce, 0xfa, 0xfe, 0xef, 0xfb, 0xba, 0xd6, 0xdb, 0xce, 0xae, 0x00, 0x82, 0xaa, - 0xdb, 0xd6, 0xba, 0xce, 0x2b, 0xbf, 0xff, 0xbe, 0xdc, 0xd6, 0x9a, 0xce, 0xaa, 0xba, 0xfa, 0xea, 0xdc, 0xd6, 0xba, 0xce, 0xab, 0xff, 0xff, 0xff, 0xdb, 0xd6, 0xba, 0xce, 0xaf, 0xff, 0xae, 0xfb, - 0xdb, 0xd6, 0xbb, 0xce, 0xae, 0xaf, 0xeb, 0xbe, 0xdb, 0xd6, 0xbb, 0xce, 0x8a, 0xaa, 0x2a, 0xea, 0xdb, 0xd6, 0xba, 0xd6, 0xba, 0xf5, 0xa8, 0xfa, 0xdb, 0xd6, 0xba, 0xd6, 0xaa, 0xaa, 0x8e, 0x9e, - 0xdc, 0xd6, 0xba, 0xd6, 0xaa, 0xab, 0xaf, 0x88, 0xdb, 0xd6, 0xbb, 0xd6, 0x01, 0xa8, 0x00, 0x88, 0xdb, 0xde, 0xba, 0xce, 0xab, 0xaa, 0xae, 0xeb, 0xdc, 0xde, 0xba, 0xd6, 0xef, 0xbf, 0xf7, 0xff, - 0xdb, 0xd6, 0xbb, 0xd6, 0x98, 0x00, 0x00, 0x00, 0xfb, 0xd6, 0xba, 0xd6, 0xef, 0xab, 0xef, 0xbb, 0xfc, 0xde, 0xba, 0xce, 0xae, 0xba, 0xef, 0xfb, 0xfb, 0xde, 0xba, 0xd6, 0xfb, 0xff, 0xef, 0xfb, - 0xbb, 0xce, 0x9a, 0xce, 0x55, 0x7b, 0x55, 0x55, 0xbb, 0xce, 0x7a, 0xce, 0xaa, 0xee, 0xae, 0xaf, 0xbb, 0xce, 0x7a, 0xce, 0xaf, 0xfa, 0xea, 0xff, 0xbb, 0xce, 0x7a, 0xce, 0xbe, 0xaf, 0xbb, 0xaa, - 0xbb, 0xce, 0x7a, 0xce, 0xba, 0xeb, 0xfa, 0xfe, 0xbb, 0xce, 0x9a, 0xce, 0x95, 0x95, 0xf5, 0x55, 0xbb, 0xce, 0x9a, 0xce, 0x9d, 0x55, 0x55, 0xd5, 0xbb, 0xd6, 0x9a, 0xc6, 0xbe, 0xbe, 0xbb, 0xaf, - 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xfd, 0xfd, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xf7, 0xdf, 0x75, 0xba, 0xce, 0x9b, 0xce, 0x5f, 0x5f, 0xf4, 0x57, 0xbb, 0xd6, 0x7a, 0xce, 0xaa, 0xab, 0xba, 0xab, - 0xbb, 0xd6, 0x9a, 0xce, 0xf7, 0xdf, 0xff, 0x7d, 0x9b, 0xd6, 0xba, 0xc6, 0xea, 0xaa, 0xfe, 0xff, 0xbb, 0xd6, 0x9a, 0xc6, 0xee, 0xeb, 0xff, 0xbe, 0xbb, 0xd6, 0x9a, 0xc6, 0xab, 0xff, 0xfe, 0xef, - 0xbb, 0xd6, 0x9a, 0xc6, 0xaa, 0xbf, 0xee, 0xbf, 0xbb, 0xd6, 0x9a, 0xce, 0xfd, 0xbf, 0xf7, 0x7f, 0xba, 0xce, 0x9b, 0xce, 0xb5, 0xf8, 0xb5, 0x37, 0xba, 0xce, 0x9b, 0xce, 0xea, 0x6b, 0xf8, 0xb8, - 0xbb, 0xd6, 0x9a, 0xce, 0xbf, 0xfe, 0xff, 0xfd, 0x9b, 0xd6, 0xba, 0xce, 0x7d, 0xfa, 0xda, 0xff, 0xbb, 0xd6, 0x9a, 0xc6, 0xaa, 0xaa, 0xaf, 0xbe, 0xbb, 0xd6, 0x9a, 0xce, 0xab, 0xee, 0xfe, 0xee, - 0xbb, 0xd6, 0x9a, 0xce, 0xe6, 0xff, 0xef, 0xff, 0xba, 0xd6, 0x9b, 0xce, 0xbf, 0xaf, 0xef, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xfe, 0xfe, 0xab, 0xbb, 0xd6, 0x9a, 0xce, 0xbb, 0xea, 0xbb, 0xff, - 0x9a, 0xd6, 0xbb, 0xce, 0xff, 0xfe, 0xff, 0xbf, 0xbb, 0xd6, 0x9a, 0xce, 0xea, 0xae, 0xfa, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xfe, 0xbf, 0x7f, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xfe, 0xef, 0xff, 0xff, - 0xbb, 0xd6, 0x9a, 0xce, 0xeb, 0xff, 0xff, 0xff, 0xbb, 0xd6, 0x9a, 0xc6, 0xab, 0xaa, 0xff, 0xff, 0xbb, 0xd6, 0x9a, 0xc6, 0xba, 0xab, 0xae, 0xab, 0xbb, 0xd6, 0x9a, 0xce, 0xbb, 0xff, 0xef, 0xff, - 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xef, 0xff, 0xff, 0xdb, 0xd6, 0x9a, 0xce, 0xfe, 0xff, 0xff, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xea, 0xbb, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xea, 0xbb, 0xab, 0xe9, - 0xbb, 0xd6, 0x9a, 0xce, 0xee, 0xfa, 0xba, 0xab, 0xbb, 0xd6, 0x9a, 0xce, 0xbf, 0xfb, 0xaf, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0x7b, 0xfa, 0xf7, 0xfb, 0xbb, 0xd6, 0x9a, 0xce, 0xfe, 0xd7, 0xff, 0xff, - 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xff, 0xaf, 0xfa, 0xbb, 0xd6, 0x9a, 0xce, 0xef, 0xfb, 0xff, 0xfa, 0x9b, 0xd6, 0xba, 0xc6, 0xfa, 0xbf, 0xfa, 0xaf, 0xba, 0xd6, 0x9b, 0xce, 0xff, 0xbb, 0xff, 0xfe, - 0xbb, 0xd6, 0x9a, 0xce, 0x6f, 0xb7, 0xae, 0xfe, 0xbb, 0xd6, 0x9a, 0xce, 0xbf, 0xbb, 0xef, 0xbe, 0xdb, 0xce, 0xba, 0xce, 0x57, 0x55, 0x67, 0x55, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xaa, 0xaa, 0xea, - 0xdb, 0xd6, 0xba, 0xce, 0xd5, 0xd5, 0x55, 0xd7, 0xdb, 0xd6, 0x9a, 0xce, 0xfb, 0xfe, 0xff, 0xfe, 0xbb, 0xd6, 0xbb, 0xce, 0xbf, 0xeb, 0xae, 0xa9, 0xdb, 0xd6, 0x9a, 0xce, 0xbe, 0xba, 0xaa, 0xbf, - 0xdb, 0xd6, 0x9a, 0xce, 0xbf, 0xff, 0xeb, 0xaf, 0x9a, 0xd6, 0xdc, 0xce, 0xab, 0xea, 0xaa, 0xbf, 0xdb, 0xd6, 0xba, 0xce, 0xef, 0xff, 0x7f, 0xd7, 0x9a, 0xd6, 0xdb, 0xce, 0xff, 0xae, 0xfb, 0xfa, - 0xdb, 0xd6, 0xba, 0xce, 0xfe, 0x9f, 0xff, 0xee, 0xba, 0xd6, 0xdc, 0xce, 0x2a, 0xaa, 0xa8, 0xab, 0xdb, 0xd6, 0xba, 0xce, 0xfe, 0xae, 0xfa, 0xff, 0xdb, 0xd6, 0x9a, 0xce, 0xea, 0xaa, 0xab, 0xaa, - 0xba, 0xd6, 0xdb, 0xce, 0x8b, 0xaa, 0x0a, 0xaa, 0xbb, 0xd6, 0xdb, 0xce, 0xa2, 0xfe, 0xfa, 0x22, 0xdc, 0xd6, 0xba, 0xce, 0xff, 0xff, 0xff, 0x7f, 0xbb, 0xd6, 0x9a, 0xce, 0xe0, 0xae, 0xaa, 0xaa, - 0xdb, 0xd6, 0x9a, 0xce, 0xfa, 0xae, 0xef, 0xaa, 0xbb, 0xd6, 0xba, 0xce, 0xbe, 0xaa, 0xfa, 0xaa, 0xbb, 0xd6, 0xba, 0xce, 0xaa, 0xfe, 0xbf, 0xaf, 0x9a, 0xd6, 0xbb, 0xce, 0x7f, 0xff, 0xed, 0xff, - 0x9b, 0xd6, 0xbb, 0xce, 0xf9, 0xf7, 0xf5, 0x55, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xac, 0xba, 0xea, 0x9b, 0xd6, 0xdb, 0xce, 0xae, 0xaa, 0xea, 0xfa, 0xdb, 0xd6, 0x9a, 0xce, 0xff, 0xfb, 0xff, 0xfe, - 0xbb, 0xd6, 0xba, 0xce, 0xaa, 0xaa, 0xdf, 0xfd, 0xba, 0xd6, 0xdb, 0xce, 0xaa, 0xaa, 0xca, 0xab, 0xdb, 0xd6, 0xba, 0xce, 0xe2, 0xa2, 0xfa, 0x7a, 0xdb, 0xd6, 0x9a, 0xce, 0xfe, 0xfe, 0xff, 0xeb, - 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xaa, 0xaa, 0xbb, 0xbb, 0xd6, 0x9a, 0xce, 0xba, 0xaa, 0xaa, 0xaa, 0xbb, 0xd6, 0x9a, 0xce, 0xab, 0xae, 0xba, 0xaa, 0xbb, 0xd6, 0xba, 0xce, 0xaf, 0xff, 0xfd, 0xfd, - 0x9a, 0xd6, 0xbb, 0xce, 0x57, 0x7b, 0x7f, 0xfd, 0xdb, 0xd6, 0x9a, 0xce, 0xbf, 0xae, 0xfb, 0xff, 0x9a, 0xd6, 0xdb, 0xce, 0xeb, 0xff, 0xef, 0xaf, 0xdb, 0xd6, 0x9b, 0xce, 0xee, 0xaa, 0xbf, 0xef, - 0xdb, 0xd6, 0xbb, 0xce, 0xbb, 0xf7, 0xdf, 0xb7, 0xbb, 0xd6, 0xdb, 0xce, 0xa0, 0xa2, 0x8a, 0xaf, 0xdb, 0xd6, 0x9a, 0xce, 0xee, 0xbf, 0xab, 0xaf, 0xbc, 0xd6, 0xba, 0xce, 0xae, 0xdd, 0xaf, 0xbf, - 0x9a, 0xd6, 0xdb, 0xce, 0xaa, 0xeb, 0xfe, 0xba, 0x9b, 0xd6, 0xdb, 0xce, 0xfa, 0xaa, 0xeb, 0xaf, 0xbb, 0xd6, 0x9a, 0xce, 0xa8, 0xae, 0xa2, 0xaa, 0x9b, 0xd6, 0xdc, 0xce, 0xfe, 0xaa, 0xba, 0xee, - 0xbb, 0xd6, 0xdb, 0xce, 0x82, 0xaa, 0xa8, 0xbe, 0xdb, 0xd6, 0x9a, 0xce, 0xfa, 0xae, 0xbb, 0xfb, 0xdc, 0xd6, 0xba, 0xce, 0xff, 0xfe, 0xff, 0xff, 0xdb, 0xd6, 0x9b, 0xce, 0xaa, 0xaa, 0xaa, 0xba, - 0xdb, 0xd6, 0x9a, 0xce, 0xaa, 0xaa, 0xae, 0xeb, 0xdb, 0xd6, 0xbb, 0xce, 0xef, 0xaf, 0xb7, 0xfa, 0xbc, 0xd6, 0xda, 0xce, 0xaa, 0xaa, 0x2a, 0xab, 0xdc, 0xd6, 0x9b, 0xce, 0xbe, 0xab, 0xaa, 0xba, - 0xdb, 0xd6, 0xbb, 0xce, 0xff, 0xef, 0xff, 0xae, 0xdc, 0xd6, 0xba, 0xce, 0xab, 0xab, 0x9a, 0xea, 0xdb, 0xd6, 0xbb, 0xd6, 0xaf, 0xfd, 0x57, 0xf7, 0xdb, 0xd6, 0xba, 0xce, 0xea, 0xbe, 0xef, 0xef, - 0xbc, 0xd6, 0xba, 0xce, 0x2a, 0xaa, 0x8b, 0xba, 0xdb, 0xd6, 0x9a, 0xce, 0xae, 0xbf, 0xfa, 0xab, 0x9a, 0xd6, 0xdb, 0xce, 0xaa, 0xbf, 0xbf, 0xbb, 0xdc, 0xd6, 0x9a, 0xce, 0xfe, 0xbe, 0xaa, 0xff, - 0xdb, 0xd6, 0xba, 0xce, 0xfb, 0xfa, 0xff, 0xfb, 0xdb, 0xd6, 0x9b, 0xce, 0xaa, 0xab, 0xaa, 0xab, 0xdb, 0xd6, 0x9b, 0xce, 0xab, 0xaa, 0xaa, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xaf, 0xea, 0xea, - 0xdb, 0xd6, 0xba, 0xce, 0xab, 0xaa, 0xab, 0x2a, 0xbb, 0xd6, 0xda, 0xce, 0xaa, 0xaa, 0x0b, 0x20, 0xdb, 0xd6, 0xba, 0xd6, 0xec, 0x22, 0xab, 0xcb, 0xdb, 0xd6, 0xba, 0xd6, 0xaf, 0x18, 0xb0, 0x82, - 0xdc, 0xde, 0xba, 0xce, 0xab, 0xba, 0xab, 0xaa, 0xdb, 0xde, 0xba, 0xd6, 0xef, 0xfd, 0xff, 0xff, 0xdb, 0xde, 0xba, 0xce, 0xee, 0xaa, 0xab, 0xaa, 0xfc, 0xde, 0xba, 0xce, 0xfa, 0xff, 0xab, 0xfa, - 0xdb, 0xde, 0xba, 0xd6, 0xff, 0xbf, 0xaf, 0xab, 0xba, 0xde, 0xdb, 0xd6, 0xf7, 0x55, 0x55, 0x5f, 0xdc, 0xde, 0xda, 0xce, 0xaa, 0xaf, 0xaa, 0xaa, 0xfb, 0xde, 0xba, 0xd6, 0xff, 0xff, 0xff, 0xff, - 0x9b, 0xce, 0x7a, 0xc6, 0x02, 0x08, 0xaa, 0x0a, 0x9b, 0xce, 0x7a, 0xce, 0x00, 0x03, 0x80, 0xe0, 0xbb, 0xce, 0x7a, 0xce, 0xeb, 0xbf, 0xfb, 0xfe, 0x9b, 0xce, 0x7a, 0xc6, 0x80, 0x02, 0x22, 0xa0, - 0x9b, 0xce, 0x7a, 0xce, 0x02, 0x2b, 0x82, 0x2e, 0x9b, 0xce, 0x7a, 0xce, 0x00, 0x00, 0x82, 0xc1, 0xba, 0xce, 0x7b, 0xce, 0xab, 0xef, 0xbe, 0xbf, 0xba, 0xce, 0x7b, 0xce, 0xfe, 0xaa, 0xfe, 0xee, - 0x9b, 0xd6, 0x9a, 0xc6, 0xaa, 0xab, 0xbe, 0xfe, 0xba, 0xce, 0x9b, 0xce, 0x57, 0xf5, 0x55, 0xed, 0xbb, 0xce, 0x9a, 0xce, 0x55, 0x6d, 0x55, 0x7d, 0xbb, 0xce, 0x7a, 0xce, 0xae, 0xaa, 0xfa, 0xaa, - 0xba, 0xce, 0x9b, 0xce, 0x57, 0xc5, 0x75, 0xd7, 0xbb, 0xd6, 0x9a, 0xc6, 0xee, 0xfe, 0xff, 0xff, 0x9b, 0xd6, 0x9a, 0xc6, 0xaa, 0xaa, 0xeb, 0xef, 0xbb, 0xce, 0x9a, 0xce, 0xe1, 0xf5, 0xb5, 0xa9, - 0xba, 0xd6, 0x9b, 0xce, 0xdf, 0xfd, 0xdd, 0xfd, 0xba, 0xd6, 0x9b, 0xce, 0x7f, 0x7f, 0x7f, 0x67, 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xff, 0xdf, 0xd7, 0x9b, 0xd6, 0xba, 0xce, 0xdf, 0xfe, 0xff, 0xaa, - 0xba, 0xd6, 0x9b, 0xce, 0xfd, 0xff, 0xef, 0xdf, 0x9b, 0xd6, 0xba, 0xce, 0x97, 0xaa, 0xfa, 0xba, 0x9a, 0xd6, 0xbb, 0xc6, 0xfa, 0xfe, 0xaa, 0xea, 0xbb, 0xce, 0x9a, 0xce, 0x78, 0xe3, 0xbb, 0x9e, - 0xbb, 0xd6, 0x9a, 0xce, 0xdf, 0xff, 0x7d, 0xf7, 0xbb, 0xd6, 0x9a, 0xce, 0xbf, 0xff, 0xfb, 0xff, 0xbb, 0xce, 0x9a, 0xce, 0x26, 0xb8, 0x62, 0x40, 0xba, 0xd6, 0x9b, 0xce, 0xf5, 0xff, 0xaf, 0xef, - 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xba, 0xff, 0xff, 0xbb, 0xce, 0x9a, 0xce, 0x7a, 0x00, 0x0f, 0xb7, 0xbb, 0xd6, 0x9a, 0xc6, 0xae, 0xea, 0xaa, 0xeb, 0xbb, 0xce, 0x9a, 0xce, 0xff, 0x5b, 0x97, 0x77, - 0xbb, 0xce, 0x9a, 0xce, 0x55, 0xd9, 0xf7, 0xdf, 0xba, 0xce, 0x9b, 0xce, 0x71, 0x57, 0xd5, 0xd7, 0xbb, 0xce, 0x9a, 0xce, 0xee, 0x57, 0xfa, 0x59, 0xbb, 0xd6, 0x9a, 0xce, 0xdf, 0xf5, 0xf7, 0xfd, - 0x9a, 0xd6, 0xbb, 0xce, 0xb5, 0xdf, 0xef, 0xff, 0xba, 0xce, 0x9b, 0xce, 0x5a, 0x5e, 0xb2, 0xea, 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xfb, 0x65, 0xef, 0x9b, 0xd6, 0xba, 0xce, 0xff, 0xaf, 0xbf, 0xfa, - 0xbb, 0xd6, 0x9a, 0xce, 0xee, 0xeb, 0xdb, 0xbf, 0xbb, 0xd6, 0x9a, 0xce, 0xbb, 0xeb, 0xff, 0x6a, 0xbb, 0xce, 0x9a, 0xce, 0x83, 0x0e, 0xaa, 0x28, 0xbb, 0xd6, 0x9a, 0xce, 0xbb, 0xbe, 0xef, 0xae, - 0x9a, 0xd6, 0xbb, 0xce, 0xbf, 0xbf, 0x55, 0x75, 0xbb, 0xd6, 0x9a, 0xce, 0xeb, 0xab, 0xaa, 0xaf, 0xdb, 0xd6, 0x9a, 0xce, 0xaf, 0xaf, 0xfb, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xfe, 0xea, 0xee, 0xef, - 0x9a, 0xd6, 0xbb, 0xce, 0xff, 0x57, 0xff, 0x5e, 0xbb, 0xd6, 0x9a, 0xce, 0xae, 0xbb, 0xbe, 0xef, 0xbb, 0xd6, 0x9a, 0xce, 0xa2, 0xaa, 0xaa, 0xae, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xea, 0xaa, 0xba, - 0x9a, 0xd6, 0xdb, 0xce, 0xee, 0xaf, 0xfa, 0xfa, 0x9a, 0xd6, 0xdb, 0xce, 0xee, 0xfe, 0xae, 0xaa, 0x9a, 0xd6, 0xbb, 0xce, 0xf7, 0xd7, 0xff, 0xfa, 0xdb, 0xd6, 0x9a, 0xce, 0xff, 0xef, 0xab, 0xff, - 0xdb, 0xd6, 0xbb, 0xce, 0xff, 0xbf, 0xfd, 0x9d, 0xbb, 0xd6, 0xdb, 0xce, 0x2a, 0xab, 0x2a, 0xaf, 0xdb, 0xd6, 0x9a, 0xce, 0xbe, 0xba, 0xab, 0xea, 0xbb, 0xd6, 0xbb, 0xce, 0xbf, 0x2a, 0xfa, 0x7e, - 0xdb, 0xd6, 0x9a, 0xce, 0xaf, 0xab, 0xab, 0xff, 0xdb, 0xd6, 0xba, 0xce, 0xee, 0xef, 0xfb, 0xfd, 0xdb, 0xd6, 0xba, 0xce, 0xaf, 0xfa, 0xfe, 0xff, 0xdb, 0xd6, 0x9a, 0xce, 0xbf, 0xaf, 0xaa, 0xef, - 0xbb, 0xd6, 0xba, 0xce, 0xaf, 0xaa, 0xaf, 0x7a, 0xbb, 0xd6, 0x9b, 0xce, 0xaa, 0xaa, 0xaa, 0x3a, 0xdc, 0xd6, 0x9a, 0xce, 0xaf, 0xeb, 0xeb, 0xee, 0xdb, 0xd6, 0x9a, 0xce, 0xeb, 0xff, 0xeb, 0xaa, - 0x9a, 0xd6, 0xdb, 0xce, 0xbf, 0xbe, 0xff, 0xbb, 0x9a, 0xd6, 0xdc, 0xce, 0xff, 0xaf, 0xab, 0xea, 0xba, 0xd6, 0xdc, 0xce, 0xa0, 0x02, 0xe2, 0xe8, 0xdb, 0xd6, 0x9b, 0xce, 0xfa, 0xff, 0xab, 0xee, - 0xbc, 0xd6, 0x9a, 0xce, 0x8c, 0xaa, 0xaa, 0xeb, 0xbb, 0xd6, 0xba, 0xce, 0xa8, 0xfa, 0xed, 0x7f, 0x9b, 0xd6, 0xdb, 0xce, 0xfa, 0xfa, 0xfa, 0xbb, 0xdb, 0xd6, 0x9a, 0xce, 0xfa, 0xfe, 0xfb, 0xff, - 0x9a, 0xd6, 0xdb, 0xce, 0xba, 0xfe, 0xaf, 0xba, 0xdc, 0xd6, 0x9a, 0xce, 0xaf, 0xef, 0xbf, 0xbf, 0xbc, 0xd6, 0x9a, 0xce, 0xa0, 0xaa, 0xaa, 0xfa, 0xdb, 0xd6, 0x9a, 0xce, 0xeb, 0xff, 0xff, 0xff, - 0xbb, 0xd6, 0xba, 0xce, 0xeb, 0xbb, 0xff, 0xdd, 0xdb, 0xd6, 0x9a, 0xce, 0xeb, 0xff, 0xef, 0xff, 0x9a, 0xd6, 0xbb, 0xce, 0x5f, 0xfd, 0x7a, 0x57, 0xbc, 0xd6, 0xba, 0xce, 0xf7, 0xee, 0xff, 0xef, - 0xdb, 0xd6, 0x9a, 0xce, 0xff, 0xea, 0xfb, 0xeb, 0xbb, 0xd6, 0xba, 0xce, 0xe8, 0xbe, 0xaf, 0xa5, 0x9a, 0xd6, 0xbb, 0xce, 0x6d, 0xff, 0x57, 0x7f, 0xbc, 0xd6, 0xba, 0xce, 0xae, 0xaa, 0xff, 0xe7, - 0x9a, 0xd6, 0xdb, 0xce, 0xfb, 0xbb, 0xfb, 0xfe, 0xdb, 0xd6, 0xba, 0xce, 0x7e, 0xef, 0xeb, 0xbb, 0xbc, 0xd6, 0xba, 0xce, 0x8b, 0xab, 0xa3, 0xab, 0xbc, 0xd6, 0xba, 0xce, 0xea, 0xb8, 0xbd, 0xea, - 0xbb, 0xd6, 0xdb, 0xce, 0xa8, 0xa0, 0xbe, 0x0a, 0xbb, 0xd6, 0xdb, 0xce, 0xaa, 0xa2, 0xbe, 0xac, 0xdc, 0xd6, 0x9a, 0xce, 0xbb, 0xfa, 0xbf, 0xfa, 0x9a, 0xd6, 0xdc, 0xce, 0xfa, 0xeb, 0xff, 0xfe, - 0x9a, 0xd6, 0xbb, 0xce, 0x7b, 0xdf, 0xd5, 0xef, 0xdb, 0xd6, 0x9a, 0xce, 0xfa, 0xfa, 0xab, 0xfa, 0xdc, 0xd6, 0x9a, 0xce, 0xea, 0xaf, 0xfe, 0xaa, 0xbb, 0xd6, 0xdc, 0xce, 0x3a, 0xea, 0xa0, 0x22, - 0x9b, 0xd6, 0xdb, 0xce, 0xf8, 0xfb, 0xbf, 0xfa, 0x9b, 0xd6, 0xdb, 0xce, 0xaa, 0xff, 0xfa, 0xff, 0xbc, 0xd6, 0xba, 0xce, 0xae, 0xba, 0xeb, 0xfe, 0xbb, 0xd6, 0xdb, 0xce, 0x8a, 0x3e, 0x2a, 0xaa, - 0xdc, 0xd6, 0x9a, 0xce, 0xaa, 0xab, 0xbe, 0xbf, 0xdc, 0xd6, 0xba, 0xce, 0xba, 0xef, 0xfb, 0xff, 0xdc, 0xd6, 0xba, 0xce, 0xea, 0xef, 0xef, 0xef, 0x9a, 0xd6, 0xbc, 0xce, 0xaf, 0xf7, 0xfa, 0x7e, - 0xbb, 0xd6, 0xdb, 0xce, 0x2e, 0x2a, 0xaf, 0xaa, 0x9b, 0xd6, 0xdc, 0xce, 0xaf, 0xae, 0xef, 0xbb, 0xdc, 0xd6, 0xba, 0xce, 0xf7, 0xff, 0xfe, 0xeb, 0xdc, 0xd6, 0x9a, 0xce, 0xaa, 0xae, 0xaa, 0xfa, - 0xdc, 0xd6, 0x9a, 0xce, 0xaf, 0xab, 0xab, 0xea, 0xbb, 0xd6, 0xbb, 0xce, 0xaa, 0x2a, 0xea, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0xab, 0xeb, 0xab, 0xab, 0xdb, 0xd6, 0xba, 0xce, 0x0a, 0xaa, 0xae, 0xae, - 0xdb, 0xd6, 0xba, 0xce, 0xaa, 0xaa, 0xaa, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0x82, 0x2a, 0xa2, 0xca, 0xdb, 0xd6, 0xbb, 0xd6, 0x0e, 0x00, 0x30, 0xa1, 0xdb, 0xde, 0xba, 0xce, 0xaa, 0xaf, 0xbe, 0xaa, - 0xfc, 0xde, 0xba, 0xce, 0xee, 0xbb, 0xeb, 0xab, 0xdb, 0xd6, 0xba, 0xd6, 0x00, 0x2c, 0xa0, 0x00, 0xfb, 0xd6, 0xbb, 0xd6, 0xeb, 0xaa, 0xbf, 0xab, 0xfb, 0xde, 0xba, 0xd6, 0xef, 0xff, 0xbf, 0xff, - 0xfb, 0xde, 0xda, 0xd6, 0xf5, 0x55, 0x7d, 0x55, 0xfc, 0xde, 0xda, 0xd6, 0x7f, 0x7f, 0x7f, 0xff, 0xdb, 0xde, 0xfb, 0xd6, 0x7a, 0xaa, 0x2a, 0x8a, 0xfc, 0xde, 0xda, 0xd6, 0x7f, 0x5f, 0xed, 0x77, - 0x9b, 0xce, 0x7a, 0xc6, 0xa0, 0x8a, 0x28, 0xaa, 0x9b, 0xce, 0x7a, 0xc6, 0x02, 0xaa, 0xaa, 0x2a, 0x9b, 0xce, 0x7a, 0xc6, 0xa2, 0xaa, 0xaa, 0x8e, 0x9b, 0xce, 0x7a, 0xc6, 0x2a, 0xa2, 0xaa, 0xab, - 0x7b, 0xce, 0x9a, 0xc6, 0xbe, 0x2a, 0xba, 0xed, 0x7a, 0xce, 0x9b, 0xc6, 0xbe, 0xef, 0xfe, 0xaf, 0x9b, 0xce, 0x7a, 0xc6, 0xaa, 0xaa, 0x8a, 0xaa, 0x9b, 0xce, 0x7a, 0xc6, 0x08, 0x08, 0x28, 0xaa, - 0xbb, 0xce, 0x7a, 0xc6, 0xba, 0xfe, 0xea, 0xef, 0xba, 0xd6, 0x7b, 0xc6, 0xaf, 0xae, 0xbf, 0xff, 0x9b, 0xce, 0x7a, 0xc6, 0x82, 0x20, 0x2a, 0xaa, 0x9b, 0xd6, 0x9a, 0xc6, 0xea, 0xbe, 0xaf, 0xfb, - 0xbb, 0xce, 0x7a, 0xc6, 0xaa, 0xfe, 0xfb, 0xbb, 0xbb, 0xce, 0x7a, 0xc6, 0xaa, 0xeb, 0xfb, 0xea, 0x9a, 0xce, 0x7b, 0xce, 0x20, 0x0a, 0x00, 0x40, 0xbb, 0xce, 0x7a, 0xce, 0xba, 0xff, 0xeb, 0xef, - 0xba, 0xd6, 0x7b, 0xce, 0xae, 0xff, 0xff, 0xff, 0xba, 0xd6, 0x9b, 0xce, 0xff, 0x77, 0x75, 0x75, 0xba, 0xce, 0x9b, 0xce, 0xad, 0x6d, 0xf9, 0xfb, 0x9b, 0xd6, 0x9a, 0xce, 0x95, 0x7d, 0xfd, 0x75, - 0xbb, 0xd6, 0x9a, 0xc6, 0xeb, 0xee, 0xfa, 0xaa, 0xbb, 0xce, 0x9a, 0xce, 0xfe, 0xef, 0xfb, 0x5d, 0xbb, 0xd6, 0x9a, 0xce, 0x57, 0xff, 0x7f, 0x7f, 0xbb, 0xd6, 0x7a, 0xc6, 0xfa, 0xaa, 0xea, 0xba, - 0xbb, 0xd6, 0x9a, 0xc6, 0xff, 0xbf, 0xaf, 0xff, 0x9b, 0xd6, 0xba, 0xc6, 0xff, 0xaa, 0xab, 0xea, 0xba, 0xce, 0x9b, 0xce, 0xe0, 0xb7, 0xd6, 0xb8, 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xbf, 0xff, 0xde, - 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0x7f, 0xde, 0xff, 0xbb, 0xce, 0x9a, 0xce, 0xf7, 0x77, 0xfb, 0xdf, 0x9b, 0xd6, 0x9a, 0xce, 0xd7, 0x5f, 0x55, 0xfd, 0xbb, 0xce, 0x9a, 0xce, 0xf6, 0xdb, 0x55, 0x55, - 0xbb, 0xce, 0x9a, 0xce, 0x7f, 0xe9, 0x7d, 0x7f, 0xbb, 0xce, 0x9a, 0xce, 0xfd, 0xff, 0xb5, 0xed, 0xbb, 0xd6, 0x9a, 0xce, 0xfd, 0xf7, 0xff, 0xff, 0xbb, 0xd6, 0x9a, 0xc6, 0xeb, 0xaa, 0xab, 0xaa, - 0xbb, 0xce, 0x9a, 0xce, 0xfe, 0xd8, 0xaf, 0xef, 0xbb, 0xce, 0x9a, 0xce, 0xff, 0x8b, 0xbf, 0xaf, 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xbf, 0xfe, 0xf7, 0xbb, 0xd6, 0x9a, 0xce, 0xbf, 0xeb, 0xfb, 0xab, - 0x9b, 0xd6, 0xba, 0xc6, 0xeb, 0xaf, 0xeb, 0xea, 0xbb, 0xd6, 0x9a, 0xc6, 0xab, 0xaa, 0xaa, 0xaa, 0xbb, 0xce, 0x9a, 0xce, 0xfa, 0x80, 0x03, 0xc0, 0xbb, 0xd6, 0x9a, 0xce, 0xbb, 0xfb, 0xaf, 0xfb, - 0x9a, 0xd6, 0xbb, 0xce, 0x5f, 0xab, 0xf5, 0xf7, 0xbb, 0xd6, 0x9a, 0xce, 0xba, 0xbe, 0xbe, 0xbe, 0xdb, 0xce, 0x9a, 0xce, 0xfb, 0xcf, 0xbe, 0xfa, 0xbb, 0xd6, 0x9a, 0xce, 0xba, 0xaa, 0xaf, 0xeb, - 0xbb, 0xce, 0x9a, 0xce, 0x0b, 0x00, 0x00, 0x0a, 0xbb, 0xd6, 0x9a, 0xce, 0xeb, 0xaf, 0xee, 0xea, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xae, 0xab, 0xba, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xaf, 0xfa, 0xbf, - 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xea, 0xfe, 0xae, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xab, 0xab, 0xab, 0xbb, 0xd6, 0xba, 0xce, 0xaf, 0xff, 0x7f, 0xde, 0x9b, 0xd6, 0xba, 0xce, 0xbf, 0x7f, 0xff, 0xff, - 0xbb, 0xd6, 0x9a, 0xce, 0x2a, 0xe2, 0xaa, 0xaa, 0x9b, 0xd6, 0xba, 0xce, 0xde, 0xff, 0x7f, 0xbd, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xaa, 0xae, 0xae, 0x9b, 0xd6, 0xdb, 0xce, 0xfe, 0xaa, 0xaa, 0xfe, - 0x9b, 0xd6, 0xba, 0xce, 0xad, 0xff, 0xbf, 0xff, 0xbc, 0xd6, 0x9a, 0xce, 0xaa, 0xaa, 0xff, 0xbb, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xaa, 0xaa, 0xaa, 0xdb, 0xd6, 0x9a, 0xce, 0xbf, 0xfe, 0xff, 0xff, - 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xaa, 0xaa, 0xab, 0xdb, 0xd6, 0x9a, 0xce, 0xea, 0xfe, 0xfe, 0xfa, 0x9a, 0xd6, 0xbb, 0xce, 0xbd, 0xf5, 0xff, 0x7f, 0x9a, 0xd6, 0xbb, 0xce, 0xf6, 0xff, 0x7f, 0xf5, - 0xbb, 0xd6, 0x9a, 0xce, 0x2a, 0xa3, 0xa2, 0xea, 0xdb, 0xd6, 0x9a, 0xce, 0xfa, 0xff, 0xbf, 0xfe, 0xbb, 0xd6, 0x9a, 0xce, 0xba, 0xea, 0xaa, 0xaa, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xae, 0xeb, 0xfb, - 0xbb, 0xd6, 0x9b, 0xce, 0xaa, 0xaa, 0xaa, 0xed, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xaa, 0xff, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xfa, 0xfd, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xae, 0xff, 0xfb, - 0xbb, 0xd6, 0x9a, 0xce, 0xea, 0xea, 0xfb, 0xfb, 0xbb, 0xd6, 0x9a, 0xce, 0xab, 0xeb, 0xbb, 0xeb, 0xbb, 0xd6, 0x9a, 0xce, 0xef, 0xfb, 0xfe, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xab, 0xfb, 0xfe, 0xdf, - 0xbb, 0xce, 0x9a, 0xce, 0xbf, 0xff, 0x23, 0x28, 0xbb, 0xd6, 0x9a, 0xce, 0xba, 0xff, 0xef, 0xfa, 0xbb, 0xd6, 0x9a, 0xce, 0xaf, 0xae, 0xaf, 0xfb, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xae, 0xbe, 0xbf, - 0xbc, 0xd6, 0x9a, 0xce, 0xaa, 0xaa, 0xba, 0xfa, 0xbc, 0xd6, 0x9a, 0xce, 0xaa, 0xba, 0xaa, 0xbe, 0xbc, 0xd6, 0x9a, 0xce, 0xaa, 0x2a, 0xaa, 0xbe, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xaa, 0x8a, 0xae, - 0xdb, 0xd6, 0x9a, 0xce, 0xfa, 0xab, 0xbf, 0xab, 0xdb, 0xd6, 0x9a, 0xce, 0xfb, 0xea, 0xff, 0xff, 0xdb, 0xd6, 0x9a, 0xce, 0xae, 0xaa, 0xfb, 0xbf, 0xbb, 0xd6, 0xba, 0xce, 0xab, 0xbb, 0xff, 0xed, - 0xdb, 0xd6, 0x9a, 0xce, 0xea, 0xab, 0xaf, 0xff, 0xdb, 0xd6, 0xbb, 0xce, 0xbf, 0xf7, 0xdd, 0x55, 0xdb, 0xd6, 0x9a, 0xce, 0xbe, 0xff, 0xfb, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0x28, 0xaa, 0xae, 0xbe, - 0xbb, 0xd6, 0x9a, 0xce, 0x8a, 0x3a, 0xaa, 0xeb, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xea, 0xea, 0xea, 0xbb, 0xd6, 0x9a, 0xce, 0x2a, 0xa2, 0xea, 0xeb, 0xdb, 0xd6, 0x9a, 0xce, 0xaa, 0xfe, 0xff, 0xff, - 0xba, 0xd6, 0xdb, 0xce, 0xfe, 0xaa, 0x20, 0xaa, 0xdb, 0xd6, 0x9a, 0xce, 0xae, 0xfe, 0xfa, 0xbf, 0xbb, 0xd6, 0x9a, 0xce, 0xa2, 0x2b, 0xaa, 0xaa, 0xdb, 0xd6, 0x9a, 0xce, 0xae, 0xeb, 0xfb, 0xff, - 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xab, 0xaa, 0xaa, 0xdb, 0xd6, 0x9a, 0xce, 0xbe, 0xae, 0xbf, 0xab, 0x9a, 0xd6, 0xdb, 0xce, 0xff, 0xff, 0xfa, 0xab, 0xdb, 0xd6, 0x9a, 0xce, 0xae, 0xab, 0xab, 0xbb, - 0xdc, 0xd6, 0x9a, 0xce, 0xea, 0xfb, 0xaa, 0xbe, 0xbc, 0xd6, 0x9a, 0xce, 0xaa, 0x2a, 0xaa, 0x2e, 0xdc, 0xd6, 0x9a, 0xce, 0xff, 0xbe, 0xaa, 0xae, 0xdb, 0xd6, 0xba, 0xce, 0xae, 0xff, 0xbf, 0xfa, - 0xdb, 0xd6, 0xbb, 0xce, 0xef, 0xab, 0xaf, 0xfb, 0xdc, 0xd6, 0xba, 0xce, 0xfa, 0xfa, 0xfb, 0xbb, 0xdb, 0xd6, 0xbb, 0xce, 0xaa, 0xff, 0xaa, 0xee, 0xdb, 0xd6, 0xbb, 0xce, 0xaa, 0xaa, 0xaa, 0xa2, - 0xdb, 0xd6, 0xba, 0xce, 0xa2, 0xee, 0xa8, 0x8a, 0xdb, 0xd6, 0xbb, 0xce, 0x2a, 0x82, 0x8a, 0x0a, 0xdb, 0xde, 0xba, 0xce, 0xee, 0xae, 0xba, 0xaa, 0xdc, 0xde, 0xba, 0xce, 0xaa, 0xfa, 0xae, 0xaa, - 0xfc, 0xde, 0xba, 0xd6, 0xff, 0xff, 0xbf, 0xbe, 0xfb, 0xd6, 0xba, 0xd6, 0xfe, 0xab, 0xbe, 0xba, 0xfc, 0xde, 0xba, 0xce, 0xab, 0xaa, 0xaa, 0xab, 0xfc, 0xde, 0xda, 0xd6, 0xdd, 0xdf, 0xf7, 0xd7, - 0xfb, 0xde, 0xdb, 0xd6, 0xd5, 0xff, 0x5f, 0xdd, 0xfc, 0xde, 0xda, 0xd6, 0xff, 0x7f, 0xff, 0xdf, 0xfc, 0xde, 0xba, 0xd6, 0xeb, 0xef, 0xbb, 0xeb, 0xbb, 0xde, 0xfb, 0xd6, 0xfb, 0xff, 0xeb, 0xfe, - 0x9b, 0xce, 0x7a, 0xc6, 0xeb, 0xaa, 0xee, 0xff, 0x7a, 0xce, 0x9b, 0xc6, 0xef, 0xea, 0xff, 0xe8, 0x9a, 0xce, 0x7b, 0xc6, 0xaa, 0xea, 0xab, 0xab, 0x7b, 0xce, 0x9a, 0xc6, 0xfe, 0xa8, 0xfb, 0xea, - 0x9a, 0xce, 0x7b, 0xc6, 0xf8, 0xfb, 0xef, 0xff, 0x7a, 0xce, 0x9b, 0xc6, 0x8c, 0xba, 0xb9, 0xae, 0x9b, 0xce, 0x7a, 0xc6, 0xba, 0xeb, 0xeb, 0xaf, 0x7a, 0xce, 0x9b, 0xc6, 0xfe, 0xfa, 0xaa, 0xbf, - 0x7b, 0xce, 0x9a, 0xc6, 0xea, 0xde, 0xca, 0xba, 0x9b, 0xce, 0x7a, 0xc6, 0xaa, 0xaa, 0xbe, 0xde, 0x9b, 0xce, 0x7a, 0xc6, 0xae, 0xaa, 0xeb, 0xeb, 0x9b, 0xce, 0x7a, 0xc6, 0xaa, 0xea, 0xba, 0xfb, - 0x7b, 0xce, 0x9a, 0xc6, 0xab, 0xba, 0xba, 0xff, 0x9b, 0xce, 0x7a, 0xc6, 0x2a, 0xeb, 0xaa, 0xef, 0x7a, 0xce, 0x9b, 0xc6, 0xaa, 0xbe, 0xfe, 0xef, 0x9a, 0xce, 0x9b, 0xc6, 0x28, 0xa8, 0xac, 0xb7, - 0xbb, 0xce, 0x7a, 0xce, 0xbf, 0xae, 0xef, 0xaa, 0x9b, 0xce, 0x7a, 0xce, 0xc0, 0x00, 0x80, 0x80, 0xbb, 0xd6, 0x9a, 0xce, 0xf5, 0xf5, 0xfd, 0xf7, 0x9b, 0xd6, 0x9a, 0xce, 0xde, 0x75, 0x7d, 0x5f, - 0x9a, 0xd6, 0xbb, 0xce, 0xba, 0xbb, 0xff, 0xf8, 0xbb, 0xce, 0x9a, 0xce, 0x7f, 0x77, 0xef, 0xdb, 0x7a, 0xd6, 0xbb, 0xce, 0x7d, 0xdf, 0xff, 0xfb, 0xba, 0xce, 0x9b, 0xce, 0x95, 0xd7, 0x75, 0x5d, - 0xba, 0xd6, 0x9b, 0xc6, 0xbf, 0xef, 0xaa, 0xbf, 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xff, 0xbf, 0xbf, 0xbb, 0xd6, 0x9a, 0xc6, 0xae, 0xaf, 0xea, 0xaf, 0x9b, 0xd6, 0x9a, 0xce, 0xdf, 0x5a, 0x55, 0x5f, - 0xbb, 0xd6, 0x7a, 0xc6, 0xee, 0xfa, 0xaf, 0xab, 0xbb, 0xce, 0x7a, 0xce, 0xfa, 0xeb, 0xaf, 0xaa, 0xbb, 0xce, 0x9a, 0xce, 0xd6, 0xf5, 0xfd, 0x21, 0xba, 0xce, 0x9b, 0xce, 0x55, 0xb7, 0xdd, 0x7c, - 0xbb, 0xd6, 0x9a, 0xce, 0x7d, 0x7f, 0xfd, 0xef, 0xba, 0xce, 0x9b, 0xce, 0xb5, 0xda, 0x83, 0xfe, 0xbb, 0xd6, 0x9a, 0xce, 0xfd, 0x9f, 0xfd, 0x7f, 0xbb, 0xd6, 0x9a, 0xc6, 0xab, 0xae, 0xef, 0xaa, - 0xbb, 0xd6, 0x9a, 0xc6, 0xea, 0xba, 0xea, 0xfa, 0x9a, 0xd6, 0xbb, 0xce, 0xbf, 0xad, 0xde, 0xbf, 0xbb, 0xce, 0x9a, 0xce, 0xee, 0xff, 0xeb, 0xae, 0x9a, 0xd6, 0xbb, 0xce, 0x7a, 0xff, 0xbd, 0x7c, - 0x9a, 0xd6, 0xbb, 0xce, 0xff, 0xf7, 0xeb, 0xfb, 0xbb, 0xd6, 0x9a, 0xce, 0xda, 0xfb, 0x7e, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xf7, 0x7f, 0xff, 0x7f, 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xff, 0xdd, 0x57, - 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xfb, 0x7f, 0xd6, 0xbb, 0xd6, 0x9a, 0xce, 0xef, 0xfd, 0xb7, 0xf7, 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xff, 0xff, 0xfd, 0xbb, 0xce, 0x9a, 0xce, 0xce, 0x8f, 0xfa, 0xaf, - 0xbb, 0xd6, 0x9a, 0xce, 0xee, 0xaf, 0xff, 0xb7, 0xbb, 0xd6, 0x9a, 0xce, 0xeb, 0xef, 0xef, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0x9f, 0xef, 0xab, 0xef, 0x9b, 0xd6, 0xba, 0xce, 0xfa, 0xfa, 0xef, 0xba, - 0xbb, 0xd6, 0x9a, 0xce, 0xbb, 0xea, 0xee, 0xf7, 0xbb, 0xd6, 0x9a, 0xc6, 0xaa, 0xaa, 0xaa, 0xee, 0xbb, 0xd6, 0x9a, 0xce, 0xaf, 0xfb, 0xbf, 0xee, 0xbb, 0xd6, 0x9a, 0xce, 0xea, 0xbb, 0xff, 0xbf, - 0x9b, 0xd6, 0xbb, 0xce, 0xaf, 0xa7, 0xf7, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xae, 0xaa, 0xfa, 0xbf, 0x9b, 0xd6, 0xba, 0xce, 0x7b, 0xff, 0xf7, 0x7f, 0xbb, 0xd6, 0x9a, 0xce, 0xea, 0xfe, 0xaa, 0xae, - 0xbb, 0xd6, 0x9a, 0xce, 0xbb, 0xae, 0xff, 0xff, 0xbb, 0xce, 0x9a, 0xce, 0xbf, 0xea, 0x00, 0x0f, 0x9a, 0xd6, 0xdb, 0xce, 0xfb, 0xaa, 0xff, 0xfe, 0xbb, 0xd6, 0x9a, 0xce, 0xab, 0xaa, 0x2a, 0xaa, - 0xdb, 0xd6, 0x9a, 0xce, 0xef, 0xff, 0xff, 0xff, 0xbb, 0xd6, 0x9b, 0xce, 0xa8, 0xaa, 0xae, 0xaa, 0x9a, 0xd6, 0xbb, 0xce, 0xff, 0xff, 0x5f, 0x5e, 0x9b, 0xd6, 0xbb, 0xce, 0xab, 0x7d, 0xfd, 0xf5, - 0xbb, 0xd6, 0x9a, 0xce, 0xbb, 0xaa, 0xaa, 0xaa, 0xbb, 0xd6, 0x9a, 0xce, 0xba, 0xaa, 0xaa, 0xaf, 0x9a, 0xd6, 0xbb, 0xce, 0x5c, 0x5f, 0x57, 0xaf, 0xbb, 0xd6, 0x9a, 0xce, 0xf6, 0xff, 0xaf, 0xbf, - 0xbb, 0xd6, 0x9a, 0xce, 0xda, 0xbf, 0xbd, 0xfb, 0xbb, 0xd6, 0x9a, 0xce, 0xfe, 0xbf, 0xef, 0xbb, 0xbb, 0xce, 0x9a, 0xce, 0xc0, 0xea, 0xef, 0xbc, 0xbb, 0xd6, 0x9a, 0xce, 0x9f, 0xef, 0xeb, 0x7f, - 0xbb, 0xd6, 0x9a, 0xce, 0xbf, 0xbe, 0xff, 0xff, 0xbb, 0xd6, 0x9b, 0xce, 0xaa, 0xef, 0xae, 0xf7, 0xbb, 0xd6, 0x9a, 0xce, 0xef, 0xbf, 0xef, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xab, 0xae, 0xef, 0xff, - 0xbb, 0xd6, 0x9a, 0xce, 0xb6, 0xee, 0xfe, 0x7d, 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xbd, 0xff, 0xfd, 0xbb, 0xd6, 0x9a, 0xce, 0xe7, 0xff, 0x5f, 0xf7, 0xbb, 0xd6, 0x9a, 0xc6, 0xae, 0xbb, 0xeb, 0xff, - 0xbb, 0xce, 0x9a, 0xce, 0xbb, 0x0e, 0xfe, 0xbe, 0xbb, 0xd6, 0x9a, 0xc6, 0xeb, 0xaa, 0xaf, 0xee, 0xbc, 0xd6, 0x9a, 0xce, 0xbb, 0xff, 0xfe, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xae, 0xfb, 0xff, 0xfb, - 0xbc, 0xd6, 0x9a, 0xce, 0xaa, 0xae, 0xef, 0xbf, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xaa, 0xef, 0xff, 0xbb, 0xd6, 0x9a, 0xc6, 0xaa, 0xaa, 0xaa, 0xae, 0xbb, 0xd6, 0x9a, 0xce, 0xea, 0xbf, 0xf7, 0x77, - 0xbc, 0xd6, 0x9a, 0xce, 0xfe, 0xfb, 0xfb, 0xdf, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xeb, 0x7f, 0xfd, 0xbc, 0xce, 0x9a, 0xce, 0xaa, 0xfb, 0xeb, 0xbe, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xef, 0xe9, 0xff, - 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xff, 0xfb, 0xd7, 0xbb, 0xd6, 0x9b, 0xc6, 0xba, 0xaa, 0xaa, 0xbe, 0xbb, 0xd6, 0x9a, 0xce, 0xae, 0xbb, 0xbf, 0xfe, 0x9b, 0xd6, 0xbb, 0xce, 0x7b, 0xfa, 0xef, 0xfb, - 0xdc, 0xd6, 0x9a, 0xce, 0xaf, 0xee, 0xff, 0xff, 0x9b, 0xd6, 0xbb, 0xce, 0xad, 0xef, 0x7d, 0xfb, 0xbc, 0xd6, 0x9a, 0xce, 0xaa, 0xae, 0xab, 0xaa, 0x9b, 0xd6, 0xbb, 0xce, 0xfb, 0xff, 0xf7, 0xfd, - 0x9a, 0xd6, 0xbb, 0xce, 0xef, 0xf7, 0xff, 0xfd, 0xbb, 0xd6, 0x9b, 0xce, 0xa8, 0x88, 0xaa, 0xea, 0x9a, 0xd6, 0xdb, 0xce, 0xfe, 0xaa, 0xbf, 0xfe, 0xdb, 0xd6, 0x9a, 0xce, 0xaf, 0xfa, 0xff, 0xff, - 0x9b, 0xd6, 0xbb, 0xce, 0xbd, 0xef, 0x7f, 0xed, 0xba, 0xd6, 0xdc, 0xce, 0x80, 0x8a, 0xa0, 0xe8, 0xdb, 0xd6, 0xba, 0xce, 0xbe, 0xaf, 0xaf, 0xea, 0xdb, 0xd6, 0xbb, 0xce, 0xbf, 0xbf, 0xbb, 0xbf, - 0xdb, 0xd6, 0xbb, 0xce, 0x8a, 0xba, 0xae, 0xab, 0xdb, 0xd6, 0xba, 0xce, 0xba, 0xab, 0xab, 0xa8, 0xdc, 0xd6, 0xbb, 0xd6, 0xaf, 0xbb, 0xeb, 0xb5, 0xdc, 0xd6, 0xbb, 0xd6, 0xaf, 0xaa, 0xba, 0xae, - 0xdb, 0xde, 0xbb, 0xce, 0xba, 0xab, 0xaa, 0xaa, 0xfc, 0xde, 0xba, 0xce, 0xaf, 0xeb, 0xae, 0xab, 0xdb, 0xd6, 0xbb, 0xd6, 0x0c, 0x00, 0x02, 0x30, 0xfc, 0xde, 0xba, 0xce, 0xeb, 0xaa, 0xae, 0xaa, - 0xfc, 0xde, 0xbb, 0xd6, 0xbf, 0xfe, 0xff, 0xfe, 0xfb, 0xde, 0xbb, 0xd6, 0xaf, 0xfb, 0xbf, 0xeb, 0xfb, 0xd6, 0xdb, 0xd6, 0xdd, 0x55, 0x61, 0x5f, 0xfb, 0xde, 0xba, 0xce, 0xab, 0xae, 0xae, 0xfe, - 0xfc, 0xde, 0xba, 0xd6, 0xab, 0xff, 0xef, 0xff, 0xfc, 0xde, 0xbb, 0xd6, 0xbe, 0xeb, 0xfe, 0xff, 0xfb, 0xde, 0xbb, 0xd6, 0xfb, 0xfe, 0xab, 0xdf, 0xfc, 0xde, 0xda, 0xd6, 0xff, 0xff, 0x7f, 0xf7, - 0x9b, 0xce, 0x7a, 0xc6, 0xb7, 0xfd, 0xf7, 0xff, 0x5a, 0xce, 0x9b, 0xc6, 0xbe, 0xbf, 0xaa, 0xfa, 0x5a, 0xce, 0x9b, 0xc6, 0x7a, 0xef, 0xaf, 0xae, 0x9b, 0xce, 0x5a, 0xc6, 0xae, 0xaa, 0xfa, 0xff, - 0x7a, 0xce, 0x9b, 0xc6, 0xfb, 0xfa, 0xbf, 0x0a, 0x5a, 0xce, 0x9b, 0xc6, 0xf7, 0xef, 0xea, 0xbe, 0x9b, 0xce, 0x5a, 0xc6, 0xaa, 0xba, 0xfb, 0xef, 0x7a, 0xce, 0x9b, 0xc6, 0xfa, 0xab, 0xaa, 0x8a, - 0x9b, 0xce, 0x7a, 0xc6, 0xef, 0xaf, 0xff, 0xfd, 0x9b, 0xce, 0x7a, 0xc6, 0xbe, 0xfe, 0xff, 0xdf, 0x7a, 0xce, 0x9b, 0xc6, 0xbe, 0xba, 0xaa, 0xbf, 0x9b, 0xce, 0x7a, 0xc6, 0xee, 0xae, 0xef, 0x7f, - 0x9a, 0xce, 0x7b, 0xc6, 0xfb, 0xaf, 0xff, 0xdf, 0x9b, 0xce, 0x7a, 0xc6, 0xfb, 0xab, 0xfb, 0xff, 0x7a, 0xce, 0x9b, 0xc6, 0xeb, 0xba, 0xab, 0xaa, 0x7a, 0xce, 0x9b, 0xc6, 0xeb, 0xbf, 0xaa, 0xbf, - 0x7a, 0xce, 0x9b, 0xc6, 0xe2, 0xfa, 0xea, 0xaa, 0x9b, 0xce, 0x7a, 0xc6, 0x0a, 0xaa, 0xae, 0xae, 0x9b, 0xd6, 0x7a, 0xc6, 0xaa, 0xae, 0xff, 0xbf, 0xbb, 0xd6, 0x7a, 0xce, 0xee, 0xff, 0xff, 0xff, - 0xba, 0xce, 0x7b, 0xce, 0xea, 0xaf, 0xde, 0xee, 0x9b, 0xce, 0x9a, 0xc6, 0x08, 0x00, 0xa2, 0x2f, 0x9b, 0xd6, 0x7a, 0xc6, 0xaa, 0xba, 0xfe, 0xff, 0xbb, 0xce, 0x7a, 0xc6, 0xaa, 0xaa, 0xbe, 0xbb, - 0xbb, 0xd6, 0x7a, 0xce, 0xbf, 0xaf, 0xff, 0xff, 0xba, 0xce, 0x9b, 0xce, 0xcb, 0x7f, 0x55, 0x55, 0x9b, 0xd6, 0x9a, 0xc6, 0xaa, 0xfe, 0xbe, 0xbf, 0xbb, 0xce, 0x7a, 0xce, 0xbb, 0xaf, 0xff, 0xfb, - 0xba, 0xce, 0x9b, 0xce, 0x55, 0x55, 0x55, 0xed, 0xbb, 0xce, 0x7a, 0xc6, 0xaa, 0xaa, 0xab, 0xea, 0xbb, 0xce, 0x9a, 0xce, 0x77, 0x1f, 0xf5, 0xdd, 0xbb, 0xd6, 0x9a, 0xc6, 0xef, 0xaf, 0xff, 0xff, - 0xbb, 0xce, 0x7a, 0xc6, 0xaa, 0xaa, 0xaa, 0xaa, 0xbb, 0xd6, 0x7a, 0xc6, 0xaa, 0xaa, 0xfa, 0xff, 0xbb, 0xd6, 0x9a, 0xc6, 0xba, 0xea, 0xff, 0xff, 0xbb, 0xd6, 0x9a, 0xc6, 0xaa, 0xaf, 0xfb, 0xff, - 0xbb, 0xd6, 0x9a, 0xce, 0x7f, 0x7f, 0x55, 0xff, 0x9b, 0xd6, 0x9a, 0xc6, 0xaa, 0xaa, 0xaa, 0xbb, 0xbb, 0xce, 0x7a, 0xce, 0xaa, 0xae, 0xbe, 0xaa, 0x9b, 0xd6, 0xba, 0xc6, 0xfa, 0xef, 0xaf, 0xff, - 0x9b, 0xd6, 0x9a, 0xce, 0x69, 0xdd, 0xf7, 0x55, 0xbb, 0xd6, 0x7a, 0xce, 0xaf, 0xff, 0xeb, 0xff, 0xbb, 0xce, 0x7a, 0xce, 0xaa, 0xea, 0xfe, 0xaa, 0xbb, 0xce, 0x9a, 0xce, 0xf7, 0xd5, 0xf5, 0x67, - 0xbb, 0xd6, 0x9a, 0xce, 0xf5, 0xd5, 0xd7, 0xdf, 0xbb, 0xd6, 0x9a, 0xce, 0xdf, 0xdf, 0xdd, 0x7f, 0xbb, 0xce, 0x9a, 0xce, 0xbf, 0x2f, 0xfb, 0x7c, 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xdf, 0xff, 0xfd, - 0xbb, 0xd6, 0x9a, 0xce, 0xf7, 0xf7, 0xfd, 0xff, 0xbb, 0xce, 0x9a, 0xce, 0xa2, 0xfb, 0xed, 0x28, 0xbb, 0xd6, 0x9a, 0xce, 0xef, 0xff, 0xff, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xff, 0x7f, 0xdf, - 0xbb, 0xd6, 0x7a, 0xce, 0xaa, 0xab, 0xae, 0xfe, 0xbb, 0xce, 0x9b, 0xce, 0x9f, 0x7b, 0xcb, 0x57, 0xbb, 0xd6, 0x9a, 0xce, 0xbf, 0x7f, 0x7f, 0x5d, 0xbb, 0xd6, 0x9a, 0xce, 0xfe, 0xfe, 0xff, 0xdd, - 0xbb, 0xd6, 0x9a, 0xce, 0xaf, 0xfe, 0xff, 0x5d, 0xbb, 0xd6, 0x9a, 0xce, 0x6b, 0xfb, 0xf7, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xef, 0xff, 0xff, 0xf7, 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xbd, 0xbf, 0xff, - 0xbb, 0xd6, 0x9a, 0xce, 0xbf, 0xaf, 0xfb, 0xef, 0xbc, 0xd6, 0x9a, 0xce, 0xea, 0xfe, 0xfa, 0xae, 0xbb, 0xd6, 0x9a, 0xce, 0xfb, 0xdf, 0x9f, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xaa, 0xaf, 0xab, - 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xae, 0xaa, 0xea, 0x9a, 0xd6, 0xbb, 0xce, 0xfd, 0x57, 0xaf, 0xff, 0xdb, 0xd6, 0x9a, 0xce, 0xef, 0xeb, 0xbf, 0xbe, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xba, 0xba, 0xbc, - 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xaf, 0xaa, 0xba, 0xbb, 0xd6, 0x9b, 0xce, 0xaa, 0xae, 0xeb, 0xae, 0xbb, 0xd6, 0x9a, 0xce, 0xee, 0xaa, 0xea, 0xfe, 0xbb, 0xd6, 0x9a, 0xce, 0xba, 0xff, 0xfa, 0xff, - 0xbb, 0xd6, 0x9a, 0xc6, 0xea, 0xea, 0xaa, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xfb, 0x7b, 0xff, 0x5d, 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xff, 0xf7, 0x55, 0xbb, 0xd6, 0x9a, 0xc6, 0xaa, 0xee, 0xff, 0xff, - 0xbb, 0xd6, 0x9a, 0xc6, 0xae, 0xbf, 0xff, 0xff, 0xbb, 0xce, 0x9a, 0xc6, 0xea, 0xfb, 0xff, 0xff, 0xbb, 0xd6, 0x7a, 0xc6, 0xaa, 0xfb, 0xfe, 0xff, 0xbb, 0xce, 0x9b, 0xc6, 0xaa, 0xaa, 0xff, 0xff, - 0xbb, 0xd6, 0x7a, 0xc6, 0xeb, 0xae, 0xaf, 0xff, 0xbb, 0xce, 0x9a, 0xce, 0xff, 0x7f, 0xff, 0xe5, 0xbb, 0xce, 0x9a, 0xce, 0xff, 0xff, 0xbf, 0x7b, 0xbb, 0xd6, 0x9b, 0xc6, 0xff, 0xbf, 0xab, 0xee, - 0xbb, 0xce, 0x7a, 0xce, 0xaa, 0xaa, 0xab, 0xaa, 0xbb, 0xce, 0x9a, 0xce, 0x6d, 0x95, 0xef, 0xbf, 0xbb, 0xd6, 0x9a, 0xc6, 0xaa, 0xff, 0xbb, 0xab, 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xbf, 0xf7, 0xd7, - 0xbb, 0xd6, 0x9a, 0xce, 0xef, 0xff, 0xf5, 0x77, 0xbb, 0xd6, 0x9b, 0xc6, 0xee, 0xef, 0xff, 0xff, 0xbb, 0xce, 0x9a, 0xce, 0xff, 0x8f, 0x5c, 0xfd, 0xbb, 0xce, 0x9a, 0xce, 0xdf, 0x5f, 0xed, 0x5e, - 0xbb, 0xce, 0x9a, 0xce, 0xf5, 0xe7, 0xd5, 0x5d, 0xbb, 0xce, 0x7a, 0xce, 0xae, 0xff, 0xae, 0xaa, 0xbb, 0xd6, 0x9b, 0xce, 0x5d, 0xd7, 0xe5, 0xd5, 0xbb, 0xce, 0x9a, 0xce, 0xbf, 0xfa, 0xfc, 0x7f, - 0xbb, 0xce, 0x9a, 0xce, 0xaf, 0xbf, 0xfb, 0x5d, 0x9b, 0xd6, 0xbb, 0xce, 0xff, 0xaf, 0xfa, 0xea, 0xbb, 0xce, 0x9a, 0xce, 0x00, 0x6f, 0xbb, 0x5d, 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xb5, 0x7d, 0x9d, - 0xbb, 0xd6, 0x9a, 0xce, 0xaf, 0xae, 0xaf, 0xaa, 0x9c, 0xd6, 0xba, 0xce, 0xff, 0xbd, 0xbf, 0x7f, 0xdb, 0xd6, 0x9a, 0xce, 0xff, 0xff, 0xff, 0xff, 0xdb, 0xd6, 0x9a, 0xce, 0xff, 0xef, 0xef, 0xbf, - 0xbb, 0xd6, 0x9a, 0xce, 0xba, 0xaa, 0xaa, 0xaa, 0x9a, 0xd6, 0xdb, 0xce, 0xfe, 0xfb, 0xab, 0xfa, 0xdb, 0xd6, 0x9a, 0xce, 0xfa, 0xfe, 0xeb, 0xbb, 0xdc, 0xd6, 0x9a, 0xce, 0xaf, 0xbf, 0xeb, 0xbb, - 0xdb, 0xd6, 0xba, 0xce, 0xfb, 0xaf, 0xef, 0xaf, 0xdc, 0xd6, 0xba, 0xce, 0xef, 0xee, 0xfb, 0xaf, 0xdb, 0xd6, 0x9b, 0xd6, 0xaa, 0xaa, 0xbe, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0xee, 0xbb, 0xaa, 0xea, - 0xdb, 0xd6, 0xbb, 0xce, 0xab, 0xaa, 0xea, 0xaa, 0xdc, 0xd6, 0xbb, 0xd6, 0xb6, 0xbb, 0x7b, 0x6a, 0xdb, 0xd6, 0xbb, 0xd6, 0x38, 0x02, 0x0b, 0x0a, 0xdc, 0xde, 0xba, 0xce, 0xae, 0xea, 0xaa, 0xba, - 0xfc, 0xde, 0xba, 0xd6, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xd6, 0xba, 0xd6, 0xfb, 0xff, 0xff, 0xee, 0xfc, 0xde, 0xbb, 0xd6, 0xbe, 0xff, 0xff, 0xff, 0xfc, 0xde, 0xba, 0xd6, 0xff, 0xfa, 0xfe, 0xff, - 0xfb, 0xd6, 0xbb, 0xd6, 0xab, 0xab, 0xff, 0xab, 0xfc, 0xde, 0xbb, 0xd6, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xde, 0xba, 0xce, 0xfe, 0xaa, 0xaf, 0xff, 0xdb, 0xd6, 0xba, 0xd6, 0xb8, 0x80, 0xab, 0x82, - 0xdb, 0xd6, 0xbb, 0xd6, 0x03, 0xbc, 0xe7, 0xaf, 0xdc, 0xde, 0xbb, 0xd6, 0x7a, 0xf9, 0xdd, 0xfb, 0xdb, 0xde, 0xbb, 0xd6, 0xee, 0xff, 0xdf, 0xf7, 0xdc, 0xde, 0xbb, 0xd6, 0xaa, 0xf7, 0xba, 0xf7, - 0x7b, 0xc6, 0x5a, 0xbe, 0x00, 0x82, 0xbe, 0xff, 0x7b, 0xce, 0x59, 0xbe, 0xaa, 0xea, 0xbf, 0xff, 0x7a, 0xce, 0x5a, 0xbe, 0xaa, 0xba, 0xff, 0xff, 0x9b, 0xc6, 0x5a, 0xc6, 0xaa, 0xaf, 0xaa, 0xff, - 0x9b, 0xce, 0x5a, 0xbe, 0xfe, 0xab, 0xbb, 0xff, 0x7b, 0xce, 0x5a, 0xbe, 0xaa, 0xaa, 0xaa, 0xbe, 0x7b, 0xce, 0x5a, 0xc6, 0xba, 0xaa, 0xea, 0xef, 0x9b, 0xc6, 0x7a, 0xc6, 0xd9, 0x55, 0x57, 0x5b, - 0x9b, 0xce, 0x7a, 0xc6, 0xff, 0x7f, 0xff, 0x55, 0x9b, 0xce, 0x5a, 0xc6, 0xab, 0xff, 0xf6, 0xff, 0x9b, 0xce, 0x7a, 0xc6, 0xee, 0xff, 0x5d, 0xfd, 0x9b, 0xce, 0x5a, 0xc6, 0xce, 0xbf, 0xba, 0xff, - 0x5a, 0xce, 0x9b, 0xc6, 0xfb, 0xbf, 0xaf, 0xfb, 0x9b, 0xce, 0x7a, 0xc6, 0xff, 0xff, 0x7f, 0xdd, 0x5b, 0xce, 0x9a, 0xc6, 0xff, 0xff, 0xfe, 0xaf, 0x9a, 0xce, 0x7b, 0xc6, 0xfb, 0xef, 0xfd, 0xf5, - 0x9b, 0xce, 0x7a, 0xc6, 0xba, 0xfe, 0xbf, 0xf7, 0x7a, 0xce, 0x9b, 0xc6, 0xfa, 0x2b, 0xea, 0xac, 0x9b, 0xce, 0x7a, 0xc6, 0xe2, 0xab, 0xbf, 0xff, 0x7b, 0xce, 0x9a, 0xc6, 0xfe, 0xab, 0xbb, 0xbe, - 0x7b, 0xce, 0x9a, 0xc6, 0xff, 0xfd, 0xfe, 0xf8, 0x9a, 0xce, 0x7b, 0xce, 0x73, 0xe7, 0x1b, 0x88, 0x9b, 0xce, 0x7a, 0xc6, 0xaa, 0xa2, 0xaa, 0xe2, 0xba, 0xce, 0x7b, 0xc6, 0xfe, 0xff, 0xff, 0xff, - 0x9b, 0xce, 0x7a, 0xc6, 0xa2, 0x8a, 0xaa, 0xbf, 0xbb, 0xce, 0x7a, 0xc6, 0xae, 0xbb, 0xfb, 0xaf, 0xbb, 0xce, 0x7a, 0xc6, 0xae, 0xbf, 0xff, 0xff, 0x9b, 0xce, 0x7a, 0xc6, 0x20, 0x80, 0xaa, 0x8a, - 0x9b, 0xd6, 0x9a, 0xc6, 0xaf, 0xae, 0xaa, 0xfb, 0xba, 0xd6, 0x7b, 0xc6, 0xbe, 0xff, 0xfa, 0xfb, 0x9b, 0xd6, 0x7a, 0xc6, 0xae, 0xaa, 0xba, 0xab, 0xbb, 0xce, 0x7a, 0xce, 0xab, 0xff, 0xbe, 0xbf, - 0xbb, 0xce, 0x7a, 0xc6, 0xbb, 0xaa, 0xaf, 0xab, 0xbb, 0xce, 0x7a, 0xce, 0xaa, 0xee, 0xeb, 0xea, 0x9b, 0xd6, 0x9a, 0xc6, 0xaf, 0xbf, 0xfb, 0xbb, 0xbb, 0xce, 0x7a, 0xce, 0xff, 0xab, 0xea, 0xaf, - 0x9b, 0xce, 0x7a, 0xce, 0xc2, 0x00, 0x28, 0x00, 0x9b, 0xce, 0x7a, 0xce, 0x20, 0x28, 0x02, 0x83, 0xbb, 0xce, 0x7a, 0xc6, 0xea, 0xeb, 0xef, 0xbb, 0x9b, 0xce, 0x7a, 0xc6, 0x00, 0x80, 0x00, 0xc0, - 0x9b, 0xd6, 0x7a, 0xc6, 0xaa, 0xaa, 0xaa, 0xaf, 0x9b, 0xd6, 0x9a, 0xc6, 0xaa, 0xaa, 0xfa, 0xea, 0x9b, 0xd6, 0x9a, 0xc6, 0xbe, 0xaa, 0xab, 0xbf, 0xba, 0xce, 0x9b, 0xce, 0x55, 0x1d, 0xd5, 0x55, - 0xbb, 0xd6, 0x7a, 0xc6, 0xea, 0xba, 0xea, 0xbf, 0xbb, 0xce, 0x9a, 0xce, 0xf7, 0xf5, 0x5e, 0x6d, 0xbb, 0xce, 0x9a, 0xce, 0xdd, 0x5d, 0xdd, 0x2f, 0xbb, 0xce, 0x9a, 0xce, 0x82, 0xff, 0xeb, 0xff, - 0xbb, 0xd6, 0x9a, 0xce, 0xfe, 0xf7, 0x7f, 0xd7, 0xbb, 0xce, 0x9a, 0xce, 0x61, 0xef, 0x5f, 0x75, 0xbb, 0xd6, 0x9a, 0xce, 0xdf, 0x57, 0xd7, 0xf5, 0xbb, 0xce, 0x7a, 0xce, 0xff, 0xab, 0xaf, 0xaf, - 0xbb, 0xd6, 0x9a, 0xc6, 0xfb, 0xfb, 0xff, 0xff, 0xbb, 0xce, 0x9a, 0xce, 0x75, 0xff, 0xfd, 0x79, 0xbb, 0xce, 0x7a, 0xce, 0xab, 0xfe, 0xeb, 0xff, 0xbb, 0xce, 0x9a, 0xce, 0xd5, 0xed, 0xdd, 0x7d, - 0xbb, 0xce, 0x7a, 0xce, 0xaa, 0xaa, 0xaa, 0xbe, 0xbb, 0xd6, 0x9a, 0xce, 0xdd, 0x7d, 0xdf, 0x5d, 0xbb, 0xce, 0x9a, 0xce, 0xb7, 0xf9, 0xff, 0xd7, 0xbc, 0xd6, 0x9a, 0xce, 0xbf, 0xdf, 0x7f, 0xfd, - 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xff, 0x77, 0xff, 0xbc, 0xd6, 0x9a, 0xce, 0xff, 0xff, 0xfa, 0xd7, 0xbb, 0xd6, 0x9a, 0xce, 0xef, 0xff, 0xbf, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xea, 0xaf, 0xbb, 0xff, - 0xbb, 0xd6, 0x9a, 0xc6, 0xaa, 0xaa, 0xaa, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xa6, 0xaa, 0xff, 0xff, 0xbc, 0xd6, 0x9a, 0xce, 0xaa, 0xee, 0xfe, 0x75, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xfa, 0x7f, 0xd7, - 0xbb, 0xd6, 0x9a, 0xce, 0xef, 0xff, 0xf7, 0x5f, 0xbb, 0xd6, 0x9a, 0xce, 0xfb, 0xd7, 0xd5, 0x55, 0xbb, 0xce, 0x7b, 0xce, 0xea, 0xef, 0xaf, 0xaf, 0xbb, 0xd6, 0x7a, 0xc6, 0xae, 0xff, 0xff, 0xff, - 0x9b, 0xce, 0x7a, 0xce, 0x20, 0xb0, 0x80, 0xe0, 0x9b, 0xce, 0x7a, 0xc6, 0x00, 0xaa, 0xaa, 0xaa, 0x9b, 0xce, 0x7a, 0xc6, 0xa8, 0x02, 0x2a, 0xe2, 0xbb, 0xce, 0x7a, 0xc6, 0xea, 0xef, 0xbf, 0xfb, - 0x9b, 0xce, 0x7a, 0xce, 0x00, 0xe0, 0x8a, 0x00, 0x9b, 0xce, 0x7a, 0xc6, 0xba, 0xaa, 0x8a, 0x8e, 0x9c, 0xd6, 0x9a, 0xc6, 0xab, 0xeb, 0xaf, 0xef, 0xbb, 0xce, 0x7a, 0xce, 0xfb, 0xbf, 0xbf, 0xbe, - 0xbb, 0xce, 0x7a, 0xce, 0xef, 0xfb, 0xea, 0xea, 0xbc, 0xd6, 0x9a, 0xc6, 0xef, 0xff, 0xff, 0xff, 0xbb, 0xd6, 0x9a, 0xc6, 0xef, 0xfb, 0xfe, 0xff, 0x9b, 0xd6, 0x9a, 0xc6, 0xeb, 0xfe, 0xaf, 0xff, - 0xbb, 0xce, 0x9a, 0xc6, 0x22, 0xfe, 0xff, 0xff, 0xbc, 0xce, 0x9a, 0xc6, 0xa3, 0xaf, 0xff, 0xff, 0xbc, 0xd6, 0x7a, 0xc6, 0xaa, 0xff, 0xef, 0xff, 0xbb, 0xd6, 0x7a, 0xc6, 0xab, 0xff, 0xff, 0xff, - 0xbb, 0xce, 0x7a, 0xc6, 0xeb, 0xaa, 0xae, 0xbe, 0x9b, 0xce, 0x7a, 0xc6, 0xc0, 0x80, 0x2a, 0xa0, 0x9b, 0xd6, 0x9a, 0xc6, 0xaa, 0xbf, 0xff, 0xae, 0x9b, 0xce, 0x7a, 0xce, 0x00, 0x0b, 0x00, 0x00, - 0xbb, 0xce, 0x7a, 0xce, 0xff, 0xff, 0xaa, 0x2e, 0xbb, 0xce, 0x9b, 0xce, 0x55, 0x5d, 0xb7, 0x5e, 0xbb, 0xce, 0x9a, 0xce, 0xff, 0xfe, 0xf7, 0xdd, 0xbb, 0xce, 0x9a, 0xce, 0xd7, 0xfe, 0x3f, 0xff, - 0xbb, 0xce, 0x9a, 0xce, 0xfd, 0xbf, 0xef, 0x7f, 0xbc, 0xce, 0x9a, 0xce, 0xaa, 0xbe, 0xff, 0xa5, 0xbb, 0xce, 0x9a, 0xce, 0x75, 0xf3, 0xb8, 0xff, 0x9a, 0xd6, 0xbb, 0xce, 0xea, 0xfe, 0x5f, 0xd9, - 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xbb, 0xae, 0xab, 0xbb, 0xd6, 0x9b, 0xce, 0xae, 0xaa, 0xaa, 0xaa, 0x9a, 0xd6, 0xbc, 0xce, 0xb7, 0xeb, 0x6f, 0xab, 0x9b, 0xd6, 0xbb, 0xce, 0xff, 0xd7, 0xff, 0xfe, - 0xdb, 0xd6, 0x9b, 0xce, 0xfe, 0xff, 0xea, 0xff, 0x9b, 0xd6, 0xbb, 0xce, 0xed, 0x7d, 0xfe, 0x7f, 0x9a, 0xd6, 0xbc, 0xce, 0xbe, 0xfd, 0xff, 0xdf, 0xdc, 0xd6, 0xbb, 0xce, 0xef, 0xfe, 0xff, 0xff, - 0xdb, 0xd6, 0x9b, 0xce, 0xea, 0xee, 0xaa, 0xfe, 0xdb, 0xd6, 0xbb, 0xce, 0xba, 0xfe, 0xae, 0xfe, 0xdb, 0xd6, 0xba, 0xce, 0xa8, 0xaa, 0xaa, 0xbe, 0xdc, 0xd6, 0xbb, 0xd6, 0xaa, 0xff, 0xe6, 0x99, - 0xdc, 0xd6, 0xbb, 0xce, 0x2e, 0xa8, 0xaa, 0xaa, 0xdb, 0xd6, 0xba, 0xce, 0x22, 0x22, 0xaa, 0x22, 0xdc, 0xd6, 0xbb, 0xd6, 0xaa, 0xab, 0xaa, 0xfa, 0xdc, 0xde, 0xba, 0xce, 0xba, 0xae, 0xaa, 0xab, - 0xdc, 0xde, 0xbb, 0xd6, 0xee, 0xba, 0xfe, 0xbf, 0xfc, 0xde, 0xba, 0xce, 0xfa, 0xae, 0xfb, 0xbe, 0xdb, 0xd6, 0xbb, 0xd6, 0xbc, 0x03, 0xa0, 0xa0, 0xdc, 0xde, 0xba, 0xd6, 0xee, 0xfe, 0xf7, 0xff, - 0xdc, 0xd6, 0xbb, 0xd6, 0xab, 0xa8, 0x2a, 0xe8, 0xdb, 0xde, 0xbb, 0xce, 0xae, 0xfa, 0xae, 0xff, 0xdc, 0xde, 0xbb, 0xce, 0xaa, 0xef, 0xff, 0xff, 0xdc, 0xd6, 0xba, 0xd6, 0xef, 0xbf, 0xff, 0xab, - 0xdc, 0xd6, 0xba, 0xce, 0xaa, 0xab, 0xaa, 0x8a, 0xdc, 0xde, 0xbb, 0xce, 0xaa, 0xfa, 0xae, 0xab, 0xdb, 0xde, 0xbb, 0xce, 0xaa, 0xae, 0xaa, 0xef, 0xdc, 0xde, 0xbb, 0xd6, 0x7a, 0xbf, 0xf7, 0x5f, - 0x59, 0xc6, 0x7b, 0xbe, 0xea, 0x80, 0x0b, 0x8a, 0x59, 0xc6, 0x7a, 0xbe, 0xe2, 0x02, 0xa8, 0xaa, 0x5a, 0xc6, 0x7b, 0xbe, 0xae, 0x02, 0xab, 0xe2, 0x7b, 0xc6, 0x5a, 0xbe, 0xbe, 0xa8, 0xff, 0xff, - 0x7b, 0xc6, 0x59, 0xbe, 0x28, 0xae, 0xaf, 0xff, 0x7b, 0xc6, 0x5a, 0xbe, 0xaa, 0xeb, 0xff, 0xfb, 0x7b, 0xce, 0x5a, 0xbe, 0xea, 0xfe, 0xff, 0xff, 0x7b, 0xce, 0x59, 0xbe, 0xaa, 0xbf, 0xff, 0xff, - 0x7b, 0xce, 0x59, 0xbe, 0xaa, 0xaf, 0xbe, 0xff, 0x7b, 0xc6, 0x5a, 0xbe, 0xaa, 0x22, 0x8a, 0xab, 0x7b, 0xc6, 0x5a, 0xbe, 0x00, 0x20, 0x08, 0x2e, 0x7b, 0xce, 0x5a, 0xbe, 0xaa, 0xee, 0xaf, 0xbe, - 0x9b, 0xce, 0x5a, 0xc6, 0xab, 0xff, 0xdf, 0xff, 0x7b, 0xce, 0x5a, 0xc6, 0xaa, 0xea, 0xbb, 0xf7, 0x7b, 0xce, 0x5a, 0xc6, 0xaa, 0xbe, 0xea, 0xff, 0x5b, 0xce, 0x9a, 0xc6, 0xea, 0xeb, 0xb7, 0xaa, - 0x9b, 0xce, 0x7a, 0xc6, 0x7f, 0xdf, 0xf5, 0x57, 0x9a, 0xce, 0x5b, 0xc6, 0xbf, 0xff, 0xfe, 0xae, 0x9a, 0xce, 0x7b, 0xc6, 0xfb, 0xff, 0x5b, 0x75, 0x9b, 0xce, 0x7a, 0xc6, 0xaf, 0xff, 0xff, 0xbf, - 0x9b, 0xce, 0x7a, 0xc6, 0xae, 0xfb, 0xfb, 0xed, 0x9b, 0xce, 0x7a, 0xc6, 0xfa, 0x6a, 0xbf, 0xb5, 0x9b, 0xce, 0x7a, 0xc6, 0xaa, 0xab, 0xab, 0xfb, 0x9a, 0xce, 0x7b, 0xc6, 0xaa, 0xea, 0xaf, 0xfb, - 0x7b, 0xce, 0x9a, 0xc6, 0xab, 0xfe, 0xee, 0xee, 0x7a, 0xce, 0x9b, 0xc6, 0xe2, 0xeb, 0xab, 0xbf, 0x9b, 0xce, 0x7a, 0xc6, 0xaa, 0xaa, 0xaa, 0xeb, 0x9b, 0xce, 0x7a, 0xc6, 0x20, 0xaa, 0xaa, 0xe6, - 0x9b, 0xce, 0x7a, 0xc6, 0x20, 0xba, 0xba, 0xaa, 0x9b, 0xce, 0x7a, 0xc6, 0xaa, 0xae, 0xaa, 0xaa, 0x9b, 0xce, 0x7a, 0xc6, 0xaa, 0xab, 0xaa, 0xea, 0x9b, 0xce, 0x7a, 0xc6, 0x28, 0xaa, 0xaa, 0xbb, - 0x7b, 0xce, 0x9a, 0xc6, 0xaa, 0xbe, 0xfe, 0xfe, 0x9b, 0xce, 0x7a, 0xc6, 0xaa, 0xaa, 0xea, 0xaa, 0x9b, 0xce, 0x7a, 0xc6, 0xa2, 0xaa, 0xae, 0xaa, 0x9b, 0xd6, 0x7a, 0xc6, 0xfe, 0xff, 0xff, 0xfb, - 0x9b, 0xce, 0x7a, 0xc6, 0xaa, 0xa2, 0xaa, 0xaa, 0x9b, 0xce, 0x7a, 0xc6, 0x8a, 0xaa, 0xab, 0xa8, 0xbb, 0xce, 0x7a, 0xc6, 0xba, 0xfb, 0xfb, 0xaf, 0x9b, 0xce, 0x7a, 0xc6, 0xaa, 0xaa, 0xa8, 0xaa, - 0x9b, 0xce, 0x7a, 0xc6, 0x80, 0xaa, 0xaa, 0xaa, 0x9b, 0xce, 0x7a, 0xc6, 0xaa, 0x28, 0xaa, 0xaa, 0x9b, 0xce, 0x7a, 0xce, 0x80, 0xc0, 0x00, 0x80, 0xba, 0xce, 0x7b, 0xce, 0xab, 0xbf, 0xff, 0xbf, - 0xbb, 0xce, 0x7a, 0xce, 0xbf, 0xaf, 0xab, 0xfa, 0xbb, 0xce, 0x7a, 0xce, 0xaa, 0xbf, 0xaf, 0xfb, 0x9b, 0xd6, 0x7a, 0xc6, 0xaa, 0xaa, 0xee, 0xff, 0xbb, 0xce, 0x7a, 0xc6, 0xae, 0xaa, 0xbf, 0xab, - 0x9b, 0xce, 0x7a, 0xc6, 0x02, 0x28, 0xaa, 0xab, 0x9b, 0xce, 0x7a, 0xc6, 0x00, 0xa2, 0xaa, 0xaa, 0xbb, 0xce, 0x7a, 0xc6, 0xab, 0xaa, 0xaf, 0xff, 0x9b, 0xce, 0x7a, 0xce, 0xaa, 0x01, 0x00, 0x0a, - 0xbb, 0xce, 0x7a, 0xce, 0xbf, 0xfa, 0xeb, 0xfa, 0xbb, 0xce, 0x7a, 0xce, 0xfa, 0xeb, 0xff, 0xaf, 0x7b, 0xd6, 0x9a, 0xc6, 0xff, 0xfa, 0xfa, 0xff, 0x9b, 0xd6, 0x7a, 0xc6, 0xab, 0xea, 0xfa, 0xff, - 0x9b, 0xce, 0x7a, 0xc6, 0x0a, 0x08, 0x8a, 0xaa, 0x9b, 0xce, 0x7a, 0xc6, 0x00, 0x80, 0x2a, 0xaa, 0xbb, 0xd6, 0x7a, 0xc6, 0xba, 0xef, 0xff, 0xff, 0x9b, 0xd6, 0x7a, 0xc6, 0xaa, 0xab, 0xea, 0xea, - 0xbb, 0xd6, 0x7a, 0xc6, 0xaa, 0xaa, 0xff, 0xff, 0x9b, 0xce, 0x7a, 0xc6, 0x00, 0x00, 0xa8, 0xab, 0x9b, 0xce, 0x7a, 0xc6, 0x00, 0x08, 0xaa, 0xea, 0x9b, 0xce, 0x7a, 0xc6, 0x00, 0x88, 0xa8, 0xab, - 0xbb, 0xd6, 0x9a, 0xc6, 0xfa, 0xff, 0xff, 0xff, 0xbb, 0xce, 0x7a, 0xce, 0xfa, 0xef, 0xaf, 0xaa, 0xbb, 0xd6, 0x7a, 0xc6, 0xef, 0xbf, 0xff, 0xff, 0x9b, 0xce, 0x7a, 0xc6, 0x00, 0x00, 0x80, 0x00, - 0x9b, 0xce, 0x7a, 0xce, 0x00, 0x00, 0x80, 0xb8, 0x9b, 0xce, 0x7a, 0xc6, 0x08, 0x00, 0xba, 0x2a, 0x9b, 0xce, 0x7a, 0xc6, 0x82, 0xa8, 0xc2, 0x2a, 0x9b, 0xce, 0x7a, 0xc6, 0x00, 0x8a, 0xa2, 0xaa, - 0x9b, 0xce, 0x7a, 0xc6, 0xaa, 0xaa, 0xaa, 0xfe, 0x9b, 0xce, 0x7a, 0xc6, 0xaa, 0xae, 0xeb, 0xaa, 0x9b, 0xce, 0x7a, 0xc6, 0xba, 0xfa, 0xaa, 0xee, 0x7b, 0xce, 0x9b, 0xc6, 0xea, 0xbf, 0xff, 0xef, - 0xbb, 0xce, 0x7a, 0xc6, 0xea, 0xfb, 0xbf, 0xfb, 0x9b, 0xce, 0x7a, 0xc6, 0x8e, 0xbb, 0xea, 0xa8, 0x9b, 0xce, 0x7a, 0xce, 0xa0, 0x0a, 0x02, 0xc2, 0xbb, 0xce, 0x7a, 0xc6, 0xaf, 0xba, 0xbb, 0xbb, - 0xbb, 0xce, 0x7a, 0xce, 0xee, 0xea, 0xff, 0xfb, 0xbb, 0xce, 0x7a, 0xc6, 0xab, 0xaa, 0xfe, 0xab, 0xbb, 0xd6, 0x7a, 0xc6, 0xfb, 0xff, 0xff, 0xff, 0xbb, 0xce, 0x7a, 0xc6, 0xaf, 0xae, 0xbe, 0xaa, - 0x9b, 0xce, 0x7a, 0xce, 0x2c, 0x00, 0x02, 0x02, 0x9b, 0xce, 0x7a, 0xce, 0x08, 0x22, 0xb0, 0x00, 0x9b, 0xd6, 0x9a, 0xc6, 0xbf, 0xeb, 0xfb, 0xfb, 0x9b, 0xce, 0x7a, 0xc6, 0xaa, 0x03, 0x82, 0xaa, - 0xbb, 0xce, 0x7a, 0xce, 0xaa, 0xaf, 0xab, 0xff, 0xbb, 0xce, 0x7a, 0xce, 0xfa, 0xeb, 0xff, 0xfb, 0xbb, 0xce, 0x7a, 0xce, 0xab, 0xfa, 0xab, 0xba, 0xbb, 0xce, 0x7a, 0xce, 0xba, 0xaa, 0xfb, 0xfa, - 0xbb, 0xce, 0x7a, 0xc6, 0xbe, 0xaa, 0xaa, 0xaa, 0xbb, 0xce, 0x7a, 0xce, 0xbf, 0xaa, 0xfa, 0xaa, 0xbb, 0xce, 0x9a, 0xc6, 0xbe, 0xfa, 0xef, 0xff, 0xbb, 0xce, 0x9a, 0xce, 0x7d, 0xed, 0x57, 0xd7, - 0x9b, 0xd6, 0x9a, 0xc6, 0xaa, 0xaf, 0xab, 0xfb, 0xbb, 0xd6, 0x7a, 0xce, 0xef, 0xbf, 0xfb, 0xfb, 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0x7f, 0xd5, 0xfd, 0xbb, 0xd6, 0x9a, 0xce, 0xed, 0x6f, 0xff, 0xbf, - 0xbb, 0xce, 0x9a, 0xce, 0xaf, 0x2a, 0x82, 0x0a, 0x9b, 0xd6, 0xbb, 0xce, 0x5b, 0xf9, 0xbf, 0xa5, 0x9a, 0xd6, 0xbb, 0xce, 0xd7, 0xef, 0x6f, 0xf7, 0x9b, 0xd6, 0xbb, 0xce, 0xff, 0xff, 0xff, 0xb7, - 0x9b, 0xd6, 0xbb, 0xce, 0xd7, 0xff, 0x6f, 0xde, 0xbb, 0xd6, 0xba, 0xce, 0xaa, 0xba, 0x2b, 0xff, 0xdb, 0xd6, 0x9b, 0xce, 0xba, 0xeb, 0xbf, 0xff, 0xbb, 0xd6, 0x9b, 0xce, 0x2a, 0x08, 0x22, 0xa2, - 0xdb, 0xd6, 0xbb, 0xce, 0xab, 0x7a, 0xff, 0xba, 0xdc, 0xd6, 0x9b, 0xce, 0xaa, 0xaa, 0xfb, 0xaa, 0xdc, 0xd6, 0x9b, 0xd6, 0xaa, 0xeb, 0xaf, 0xaa, 0xbb, 0xd6, 0xdb, 0xce, 0xbe, 0xaa, 0xaa, 0x8a, - 0xdb, 0xd6, 0xba, 0xce, 0x2b, 0xaa, 0xea, 0xba, 0xdc, 0xd6, 0xba, 0xd6, 0xfe, 0xab, 0xff, 0xab, 0xdb, 0xd6, 0xbb, 0xd6, 0x2b, 0x37, 0xb5, 0xed, 0xdb, 0xd6, 0xbb, 0xce, 0xb8, 0xa2, 0x8a, 0xaa, - 0xdc, 0xde, 0xbb, 0xce, 0xbb, 0xee, 0xaf, 0xef, 0xdc, 0xde, 0xbb, 0xce, 0xaa, 0xaa, 0xff, 0xff, 0xdb, 0xd6, 0xbb, 0xce, 0xa0, 0xa8, 0x80, 0xaa, 0xdc, 0xd6, 0xba, 0xd6, 0xfa, 0x9e, 0xff, 0xff, - 0xbc, 0xde, 0xba, 0xce, 0xaf, 0xeb, 0xff, 0xeb, 0xdb, 0xd6, 0xba, 0xce, 0xef, 0xaa, 0xbf, 0xff, 0xdb, 0xd6, 0xba, 0xce, 0xfe, 0xaa, 0xeb, 0xfa, 0xdb, 0xd6, 0xba, 0xce, 0xae, 0xfb, 0xaa, 0xae, - 0xdb, 0xd6, 0xba, 0xce, 0x8a, 0xba, 0xea, 0x3b, 0xdb, 0xde, 0xbb, 0xce, 0xaf, 0xea, 0xff, 0xbf, 0xdb, 0xd6, 0xbb, 0xce, 0xae, 0xaa, 0xaa, 0xaa, 0xdc, 0xd6, 0xbb, 0xd6, 0xf7, 0x76, 0xd5, 0xfb, - 0x5a, 0xc6, 0x19, 0xb6, 0xaa, 0xaa, 0xea, 0xff, 0x5b, 0xc6, 0x19, 0xbe, 0x23, 0xae, 0xad, 0xff, 0x5b, 0xc6, 0x39, 0xbe, 0xaa, 0xff, 0xb9, 0x27, 0x5b, 0xc6, 0x39, 0xbe, 0x88, 0xaa, 0xa9, 0x7f, - 0x39, 0xc6, 0x7b, 0xbe, 0xee, 0xfe, 0xab, 0xab, 0x7b, 0xc6, 0x39, 0xbe, 0xbb, 0xef, 0xf6, 0xff, 0x5b, 0xc6, 0x3a, 0xbe, 0xc8, 0x8a, 0x02, 0xa8, 0x7b, 0xc6, 0x3a, 0xbe, 0x3b, 0xab, 0xde, 0xff, - 0x7b, 0xc6, 0x3a, 0xbe, 0xaa, 0xbe, 0xba, 0xfa, 0x7b, 0xc6, 0x3a, 0xbe, 0x2a, 0x2a, 0xaa, 0xbf, 0x7b, 0xc6, 0x3a, 0xbe, 0xaa, 0x2b, 0xfa, 0xaf, 0x7b, 0xc6, 0x59, 0xbe, 0xca, 0xfa, 0xff, 0xbb, - 0x5b, 0xc6, 0x79, 0xbe, 0x20, 0xae, 0xaf, 0xa2, 0x7b, 0xce, 0x3a, 0xbe, 0xae, 0xaa, 0xae, 0xae, 0x7b, 0xc6, 0x5a, 0xc6, 0xaf, 0x00, 0x20, 0x0c, 0x5a, 0xce, 0x7b, 0xc6, 0x7e, 0x5f, 0xcd, 0x5d, - 0x7b, 0xce, 0x5a, 0xc6, 0xab, 0xee, 0xa7, 0xee, 0x7b, 0xce, 0x5a, 0xc6, 0xe2, 0xbe, 0xbf, 0xab, 0x9b, 0xce, 0x5a, 0xc6, 0xba, 0xff, 0xef, 0xfb, 0x7a, 0xce, 0x9b, 0xc6, 0xef, 0xba, 0xab, 0xd8, - 0x9a, 0xce, 0x7b, 0xc6, 0xf7, 0x7f, 0xff, 0xff, 0x7b, 0xce, 0x9a, 0xc6, 0x2a, 0xaa, 0xe0, 0x2a, 0x7b, 0xce, 0x7a, 0xc6, 0xa8, 0xca, 0xbf, 0xee, 0x7b, 0xce, 0x9a, 0xc6, 0xba, 0xea, 0xaa, 0x82, - 0x7b, 0xce, 0x9a, 0xc6, 0xca, 0xbf, 0xab, 0xeb, 0x7a, 0xce, 0x9b, 0xc6, 0xbf, 0xbf, 0xaa, 0xab, 0x7b, 0xce, 0x9a, 0xc6, 0xaa, 0xae, 0xeb, 0x2b, 0x7a, 0xce, 0x9b, 0xc6, 0xa2, 0xfb, 0x02, 0x2e, - 0x7a, 0xce, 0x9b, 0xc6, 0x8a, 0xa8, 0xfa, 0xaa, 0x7a, 0xce, 0x9b, 0xc6, 0xa0, 0xfe, 0xae, 0xae, 0x7b, 0xce, 0x9a, 0xc6, 0x08, 0x2b, 0xef, 0xef, 0x7b, 0xce, 0x9a, 0xc6, 0x2a, 0x2a, 0xfb, 0xea, - 0x9b, 0xce, 0x7a, 0xc6, 0xba, 0xea, 0xbe, 0x7d, 0x9b, 0xce, 0x7a, 0xc6, 0xaa, 0xae, 0xeb, 0xf7, 0x7a, 0xce, 0x9b, 0xc6, 0xee, 0xaf, 0xfa, 0xfe, 0x9b, 0xce, 0x7a, 0xc6, 0xaa, 0xaa, 0xbf, 0xdf, - 0x9a, 0xce, 0x7b, 0xc6, 0xaa, 0xae, 0xfb, 0xff, 0x9b, 0xce, 0x7a, 0xc6, 0xae, 0xbb, 0x7b, 0x7d, 0x9b, 0xce, 0x7a, 0xc6, 0xea, 0xfa, 0xad, 0x95, 0x9b, 0xce, 0x7a, 0xc6, 0xbe, 0xaf, 0x7f, 0xff, - 0x9b, 0xce, 0x7a, 0xc6, 0x32, 0xab, 0xeb, 0xff, 0x9b, 0xce, 0x7a, 0xc6, 0xaa, 0xae, 0xae, 0xab, 0x9a, 0xce, 0x7b, 0xc6, 0x2a, 0x8a, 0xaa, 0xab, 0x9b, 0xce, 0x7a, 0xc6, 0xaa, 0xaa, 0xea, 0xee, - 0x7b, 0xce, 0x9a, 0xc6, 0xaa, 0xa8, 0xfa, 0xff, 0x9b, 0xce, 0x7a, 0xc6, 0xa8, 0xaa, 0x2a, 0xfe, 0x9a, 0xce, 0x7b, 0xc6, 0xaa, 0xa8, 0xaa, 0xaa, 0x7a, 0xce, 0x9b, 0xc6, 0xea, 0xa3, 0x9e, 0xfa, - 0x7a, 0xce, 0x9b, 0xc6, 0xbf, 0x7a, 0xaa, 0xaf, 0x9b, 0xce, 0x7a, 0xc6, 0x2a, 0x8a, 0xaa, 0xeb, 0x9b, 0xce, 0x7a, 0xc6, 0x22, 0x0a, 0xaa, 0xba, 0x9b, 0xce, 0x7a, 0xc6, 0xae, 0xa8, 0xba, 0xfb, - 0x9b, 0xce, 0x7a, 0xc6, 0x28, 0xaa, 0xaa, 0xef, 0x7b, 0xce, 0x9a, 0xc6, 0x2a, 0xba, 0x2a, 0xfb, 0x9b, 0xce, 0x7a, 0xc6, 0xab, 0xba, 0xfe, 0xfb, 0x9b, 0xce, 0x7a, 0xc6, 0xc8, 0xea, 0xfe, 0xdf, - 0x9b, 0xce, 0x7a, 0xc6, 0xbe, 0xff, 0x9f, 0xfb, 0x7a, 0xce, 0x9b, 0xc6, 0xc2, 0xba, 0xef, 0xa2, 0x9b, 0xce, 0x7a, 0xc6, 0xaa, 0xaa, 0xef, 0xff, 0x9b, 0xce, 0x7a, 0xc6, 0xaa, 0xaa, 0xff, 0xff, - 0x9b, 0xce, 0x7a, 0xc6, 0xba, 0xff, 0xdf, 0xff, 0x9b, 0xce, 0x7a, 0xc6, 0xfa, 0xea, 0xfb, 0x7f, 0xbb, 0xce, 0x7a, 0xc6, 0xef, 0xff, 0xff, 0xd5, 0x9b, 0xce, 0x7a, 0xc6, 0x2e, 0xeb, 0xba, 0xfd, - 0x7a, 0xce, 0x9b, 0xc6, 0xbb, 0xff, 0xeb, 0xab, 0x7a, 0xce, 0x9b, 0xc6, 0xba, 0xaf, 0xb5, 0xe8, 0x9b, 0xce, 0x7a, 0xce, 0xb0, 0x3b, 0x28, 0x0e, 0x9b, 0xce, 0x7b, 0xce, 0x09, 0xaa, 0x80, 0xe8, - 0xbb, 0xce, 0x7a, 0xc6, 0xeb, 0xeb, 0xff, 0xff, 0x9b, 0xce, 0x7a, 0xc6, 0xa3, 0xea, 0xba, 0xba, 0x9b, 0xce, 0x7a, 0xc6, 0xee, 0xa8, 0xa3, 0xba, 0x9b, 0xce, 0x7a, 0xc6, 0xaa, 0xef, 0xa2, 0xaa, - 0x7a, 0xce, 0x9b, 0xc6, 0xba, 0xff, 0xdf, 0xfa, 0x7a, 0xce, 0xbb, 0xc6, 0xa0, 0xba, 0xfb, 0xaa, 0x9b, 0xce, 0x7a, 0xc6, 0xa8, 0xa2, 0x88, 0x82, 0x9b, 0xce, 0x7a, 0xc6, 0x2c, 0xaa, 0xab, 0xaa, - 0x9b, 0xce, 0x7a, 0xc6, 0x2b, 0xa2, 0xc8, 0x0a, 0xbb, 0xce, 0x7a, 0xc6, 0xba, 0xae, 0xef, 0xab, 0xbb, 0xce, 0x7a, 0xc6, 0xba, 0xaa, 0xff, 0xff, 0x9b, 0xce, 0x7a, 0xce, 0x00, 0xaf, 0xbf, 0xa0, - 0x9b, 0xd6, 0x7a, 0xc6, 0xfa, 0xef, 0xfe, 0xfb, 0x9b, 0xce, 0x7a, 0xc6, 0x2a, 0xa2, 0xaa, 0xfb, 0x9b, 0xd6, 0x7a, 0xc6, 0xaf, 0xaf, 0xff, 0xff, 0x9b, 0xce, 0x7a, 0xc6, 0x00, 0x0a, 0x02, 0xea, - 0x9b, 0xce, 0x7b, 0xc6, 0x00, 0x82, 0xaa, 0x8e, 0x9b, 0xce, 0x7a, 0xc6, 0x22, 0x8a, 0x8a, 0xe2, 0x9b, 0xce, 0x7a, 0xce, 0x20, 0xc8, 0xc8, 0x2a, 0x9b, 0xce, 0x7a, 0xc6, 0xaa, 0xaa, 0xaa, 0xaa, - 0xbb, 0xce, 0x7a, 0xc6, 0xef, 0xbf, 0xea, 0xee, 0x9b, 0xce, 0x7a, 0xc6, 0x80, 0x02, 0x2a, 0x08, 0x9b, 0xd6, 0x9a, 0xc6, 0xff, 0xbb, 0xab, 0xff, 0x9b, 0xd6, 0x7a, 0xc6, 0xea, 0xfa, 0xaa, 0xfb, - 0x9b, 0xce, 0x7a, 0xce, 0x00, 0xbb, 0xb8, 0xf0, 0x9b, 0xce, 0x7a, 0xce, 0x00, 0x02, 0x03, 0x2a, 0x9b, 0xce, 0x7a, 0xc6, 0x02, 0x0a, 0x82, 0x88, 0xbb, 0xce, 0x7a, 0xc6, 0xaa, 0xae, 0xab, 0xbf, - 0xbb, 0xce, 0x7a, 0xce, 0xbf, 0xae, 0xeb, 0xef, 0xbb, 0xce, 0x7a, 0xce, 0xbb, 0xba, 0xfe, 0xab, 0xbc, 0xd6, 0x9a, 0xce, 0xff, 0xbf, 0xff, 0xff, 0xbb, 0xd6, 0x7a, 0xce, 0xaf, 0xaa, 0xae, 0xab, - 0x9a, 0xd6, 0xbb, 0xce, 0xa5, 0xff, 0xff, 0x8b, 0xbb, 0xd6, 0x9b, 0xce, 0xff, 0x7e, 0xdd, 0xd7, 0xbb, 0xce, 0x9a, 0xce, 0xa3, 0xff, 0xbf, 0xf3, 0x9a, 0xd6, 0xbc, 0xce, 0xeb, 0x6a, 0xbf, 0xff, - 0x9a, 0xd6, 0xbb, 0xce, 0xfd, 0xed, 0xff, 0x7f, 0xbc, 0xd6, 0x9a, 0xce, 0xaa, 0x8e, 0xaa, 0xaf, 0xbc, 0xd6, 0x9a, 0xce, 0x8a, 0xaa, 0xae, 0xbb, 0xbc, 0xd6, 0x9b, 0xce, 0x8a, 0x82, 0xaa, 0x9e, - 0xbc, 0xd6, 0xba, 0xce, 0xb8, 0xa2, 0xee, 0xbd, 0x9b, 0xd6, 0xbb, 0xce, 0xdf, 0xad, 0x9f, 0xff, 0xdc, 0xd6, 0xba, 0xce, 0xbb, 0xea, 0xf9, 0xdb, 0xbb, 0xd6, 0xdb, 0xce, 0x00, 0xa2, 0x00, 0xca, - 0xdb, 0xd6, 0xbb, 0xce, 0xab, 0xff, 0xea, 0xfa, 0xdc, 0xd6, 0xbb, 0xce, 0xa8, 0xfa, 0xff, 0xfb, 0xdc, 0xd6, 0xba, 0xce, 0xba, 0xab, 0xea, 0xff, 0xdb, 0xd6, 0xbb, 0xd6, 0x77, 0xdf, 0xe7, 0x99, - 0xdc, 0xd6, 0x9a, 0xce, 0xaa, 0xaa, 0xaa, 0xae, 0xdc, 0xd6, 0xbb, 0xce, 0xaa, 0x2a, 0xae, 0xbf, 0xdc, 0xd6, 0xbb, 0xd6, 0xb5, 0xd6, 0x65, 0x5d, 0xdb, 0xd6, 0xba, 0xce, 0xea, 0xea, 0xfb, 0xff, - 0xba, 0xd6, 0xdc, 0xce, 0x8b, 0xa8, 0x08, 0x2a, 0xba, 0xd6, 0xdc, 0xce, 0xa8, 0xb8, 0x02, 0xc0, 0xdb, 0xd6, 0xbb, 0xce, 0xaa, 0xaa, 0xea, 0xbf, 0xdb, 0xd6, 0x9b, 0xce, 0xaa, 0xaa, 0xab, 0xab, - 0xdc, 0xde, 0xba, 0xce, 0xff, 0xff, 0xff, 0xff, 0xdb, 0xd6, 0xbb, 0xce, 0xa8, 0xae, 0xea, 0x8a, 0xdb, 0xd6, 0xbb, 0xce, 0xae, 0xea, 0xaa, 0xbe, 0xdc, 0xd6, 0xbb, 0xce, 0xea, 0xfa, 0xaa, 0xfa, - 0x3a, 0xc6, 0x19, 0xb6, 0xaa, 0xfa, 0xfa, 0xbf, 0x3b, 0xc6, 0x1a, 0xbe, 0xbf, 0xb9, 0xdd, 0xff, 0x5b, 0xc6, 0x19, 0xb6, 0xba, 0xeb, 0xff, 0xff, 0x5b, 0xc6, 0x19, 0xb6, 0xaa, 0xab, 0xef, 0xb9, - 0x5a, 0xbe, 0x3a, 0xbe, 0x3e, 0xf5, 0x2b, 0x56, 0x5a, 0xc6, 0x39, 0xbe, 0xef, 0xf7, 0xb7, 0xa5, 0x3a, 0xc6, 0x5a, 0xbe, 0xbe, 0xbf, 0xfd, 0x6d, 0x5b, 0xc6, 0x39, 0xbe, 0xea, 0xbf, 0xaf, 0xee, - 0x5b, 0xc6, 0x39, 0xbe, 0xab, 0xaa, 0xbe, 0xab, 0x5a, 0xc6, 0x39, 0xbe, 0xea, 0xaa, 0xad, 0xa7, 0x39, 0xc6, 0x5b, 0xbe, 0xfa, 0xff, 0xb5, 0xff, 0x3a, 0xc6, 0x5b, 0xbe, 0xfa, 0xff, 0xaf, 0xf5, - 0x3a, 0xc6, 0x7b, 0xbe, 0xff, 0xab, 0xee, 0xfb, 0x7b, 0xc6, 0x5a, 0xbe, 0xaa, 0xae, 0xfb, 0xff, 0x7b, 0xc6, 0x5a, 0xc6, 0xd5, 0x5f, 0x7f, 0xfc, 0x7b, 0xc6, 0x5a, 0xbe, 0xa3, 0xaa, 0x8b, 0x2e, - 0x7b, 0xc6, 0x5a, 0xbe, 0x20, 0x2a, 0xa2, 0x80, 0x7b, 0xc6, 0x5a, 0xc6, 0xfa, 0xfd, 0x9e, 0x00, 0x7b, 0xce, 0x5a, 0xc6, 0xfb, 0xf6, 0xff, 0xfd, 0x7b, 0xce, 0x5a, 0xc6, 0xbf, 0xff, 0xdf, 0xef, - 0x7b, 0xce, 0x5a, 0xbe, 0xaa, 0x22, 0xab, 0xbb, 0x5a, 0xce, 0x7b, 0xc6, 0x6b, 0xdf, 0x7f, 0x5f, 0x7a, 0xce, 0x5b, 0xc6, 0xaa, 0xaa, 0xea, 0xe2, 0x9b, 0xce, 0x5a, 0xc6, 0xaa, 0xfe, 0xff, 0xff, - 0x9b, 0xce, 0x7a, 0xc6, 0xfd, 0xff, 0xf5, 0x77, 0x9b, 0xce, 0x5a, 0xc6, 0xab, 0xfb, 0xbf, 0xff, 0x7b, 0xce, 0x7a, 0xc6, 0xab, 0xfe, 0xf6, 0x55, 0x7b, 0xce, 0x5a, 0xbe, 0xaa, 0xa2, 0xaa, 0xab, - 0x9b, 0xce, 0x5a, 0xbe, 0xaa, 0xaa, 0xae, 0xfa, 0x7b, 0xce, 0x5a, 0xc6, 0x00, 0xaa, 0xff, 0xff, 0x7b, 0xce, 0x5a, 0xc6, 0xea, 0xfa, 0xbe, 0xff, 0x7b, 0xce, 0x5a, 0xbe, 0xaa, 0xaa, 0xaa, 0xfa, - 0x7b, 0xce, 0x5a, 0xbe, 0x8a, 0xaa, 0xae, 0xef, 0x7b, 0xce, 0x5a, 0xc6, 0xaa, 0xea, 0xad, 0xf7, 0x7b, 0xce, 0x5a, 0xc6, 0xaa, 0xae, 0xa7, 0xbb, 0x9b, 0xc6, 0x5a, 0xc6, 0xfe, 0xea, 0xaa, 0xb8, - 0x9b, 0xce, 0x5a, 0xc6, 0xfa, 0xff, 0xff, 0xeb, 0x7b, 0xce, 0x5a, 0xc6, 0xaa, 0xef, 0x2a, 0xaa, 0x9a, 0xce, 0x5b, 0xc6, 0xfb, 0xef, 0xab, 0xfa, 0x7b, 0xce, 0x7a, 0xc6, 0xff, 0xfa, 0xf7, 0xf7, - 0x5a, 0xce, 0x9b, 0xc6, 0xbe, 0xff, 0xaf, 0xef, 0x9b, 0xce, 0x7a, 0xc6, 0xfb, 0x77, 0xdf, 0xfd, 0x7b, 0xce, 0x9a, 0xc6, 0xb8, 0xab, 0xba, 0xaa, 0x9b, 0xce, 0x7a, 0xc6, 0xae, 0xea, 0xfe, 0xef, - 0x7b, 0xce, 0x9a, 0xc6, 0xea, 0xaf, 0x00, 0xba, 0x9b, 0xce, 0x7a, 0xc6, 0xbe, 0xfa, 0x7e, 0x7f, 0x9b, 0xce, 0x7a, 0xc6, 0xef, 0xaf, 0xf7, 0x7f, 0x9b, 0xce, 0x7a, 0xc6, 0xaf, 0xf6, 0xfd, 0xf7, - 0x9b, 0xce, 0x5a, 0xc6, 0xaa, 0xaa, 0xee, 0xbe, 0x9b, 0xce, 0x5a, 0xc6, 0xaa, 0xaa, 0xff, 0xff, 0x9b, 0xce, 0x5a, 0xbe, 0xaa, 0xaa, 0xba, 0xfb, 0x7b, 0xce, 0x5a, 0xbe, 0xa8, 0xaa, 0xaa, 0xef, - 0x7b, 0xce, 0x5a, 0xbe, 0xa8, 0xaa, 0xaa, 0xff, 0x7b, 0xce, 0x5a, 0xc6, 0xa0, 0xba, 0xff, 0xf7, 0x7b, 0xce, 0x5a, 0xbe, 0x80, 0xaa, 0xea, 0xbf, 0x7b, 0xce, 0x5a, 0xbe, 0xaa, 0xba, 0xae, 0xbb, - 0x7a, 0xc6, 0x5b, 0xc6, 0x3a, 0x02, 0x00, 0x0e, 0x7b, 0xce, 0x5a, 0xc6, 0xaa, 0xae, 0xeb, 0xff, 0x9b, 0xce, 0x5a, 0xc6, 0xfa, 0xbf, 0xaf, 0xff, 0x7b, 0xce, 0x5a, 0xc6, 0xaa, 0xaa, 0xaf, 0xff, - 0x9b, 0xce, 0x5a, 0xc6, 0xee, 0xff, 0xff, 0xff, 0x5a, 0xce, 0x9b, 0xc6, 0xff, 0xfb, 0xaf, 0xff, 0x7a, 0xce, 0x9b, 0xc6, 0xaa, 0xab, 0xf0, 0xbe, 0x9b, 0xce, 0x7a, 0xc6, 0xae, 0xbf, 0xbf, 0xaf, - 0x7a, 0xce, 0x9b, 0xc6, 0xaf, 0xab, 0xfa, 0xfb, 0x7a, 0xce, 0x9b, 0xc6, 0xaf, 0xba, 0xfb, 0xff, 0x9b, 0xce, 0x7a, 0xc6, 0xaf, 0xaa, 0xeb, 0xfe, 0x9b, 0xce, 0x7a, 0xc6, 0xea, 0xa2, 0xae, 0xaf, - 0x9b, 0xce, 0x7a, 0xce, 0xbb, 0x2e, 0xbb, 0xa2, 0x7a, 0xce, 0x9b, 0xc6, 0xbf, 0xff, 0xab, 0xaa, 0x7b, 0xce, 0x9a, 0xc6, 0xf8, 0xaa, 0x2a, 0xab, 0x9b, 0xce, 0x7a, 0xc6, 0xa2, 0xa0, 0x22, 0x82, - 0x9b, 0xce, 0x7a, 0xce, 0x0a, 0x00, 0xe0, 0xa8, 0x9b, 0xce, 0x7a, 0xc6, 0xaf, 0xae, 0xaa, 0xea, 0x9b, 0xce, 0x7b, 0xce, 0x2e, 0xb0, 0xa3, 0x8e, 0xbb, 0xce, 0x7a, 0xc6, 0xfe, 0xbf, 0xff, 0xef, - 0x9b, 0xce, 0x7a, 0xc6, 0xba, 0xe2, 0xa0, 0xae, 0x9b, 0xce, 0x7a, 0xc6, 0x28, 0xba, 0xaa, 0xea, 0x9b, 0xce, 0x7a, 0xc6, 0xae, 0xbf, 0xbe, 0xea, 0x9b, 0xce, 0x7a, 0xc6, 0xfe, 0xfa, 0xae, 0xab, - 0x9b, 0xce, 0x7a, 0xc6, 0xab, 0xbe, 0xfa, 0xff, 0x9b, 0xce, 0x7a, 0xc6, 0xff, 0xae, 0xef, 0xba, 0x9b, 0xce, 0x7a, 0xc6, 0xab, 0xce, 0x2f, 0xab, 0x9b, 0xce, 0x7a, 0xc6, 0xaa, 0xfa, 0xaa, 0xae, - 0x9b, 0xce, 0x7a, 0xc6, 0x2a, 0x8a, 0xaa, 0xae, 0x9b, 0xce, 0x7a, 0xc6, 0xaa, 0xaa, 0x2e, 0xea, 0x9b, 0xce, 0x7a, 0xc6, 0xaa, 0xaa, 0xae, 0xee, 0x7a, 0xce, 0x9b, 0xc6, 0xa9, 0xea, 0xeb, 0xfe, - 0x9b, 0xce, 0x7a, 0xc6, 0xae, 0xfe, 0xfa, 0xaf, 0x9b, 0xce, 0x7a, 0xc6, 0x22, 0xaa, 0xba, 0xef, 0x9b, 0xce, 0x7a, 0xc6, 0x8a, 0xaa, 0xfa, 0xff, 0x7a, 0xce, 0x9b, 0xc6, 0xab, 0xff, 0xff, 0xa3, - 0x7a, 0xce, 0x9b, 0xc6, 0xea, 0xaa, 0xfa, 0xab, 0x7a, 0xce, 0x9b, 0xc6, 0xaa, 0xaa, 0xfb, 0xfe, 0x9b, 0xce, 0x7a, 0xc6, 0xaa, 0xba, 0xb7, 0xae, 0x7b, 0xd6, 0x9a, 0xc6, 0xff, 0xff, 0xff, 0xfe, - 0x9b, 0xce, 0x7b, 0xce, 0xa0, 0x02, 0x03, 0x0f, 0x9b, 0xd6, 0x9a, 0xc6, 0xaf, 0xab, 0xbf, 0xbf, 0xbb, 0xce, 0x9a, 0xce, 0xfb, 0xf5, 0xff, 0x5d, 0xbb, 0xd6, 0x7b, 0xce, 0xfb, 0xfa, 0xfa, 0xff, - 0xbb, 0xd6, 0x9a, 0xc6, 0xab, 0xab, 0xfb, 0xff, 0xbb, 0xd6, 0x7a, 0xc6, 0xaa, 0xae, 0xab, 0xfe, 0xbb, 0xd6, 0x9b, 0xce, 0xf5, 0x55, 0x55, 0xf5, 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xfd, 0xff, 0xff, - 0xbb, 0xd6, 0x9a, 0xce, 0xbf, 0xbf, 0xf7, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xae, 0xef, 0xaf, 0xff, 0xbb, 0xd6, 0x9b, 0xce, 0xaa, 0xfb, 0xaf, 0xfb, 0xbc, 0xd6, 0x9a, 0xce, 0xbb, 0xae, 0xbf, 0xff, - 0xbb, 0xd6, 0x9a, 0xce, 0xab, 0xba, 0xae, 0xaa, 0x9b, 0xd6, 0xbb, 0xce, 0xff, 0xaf, 0xbf, 0xeb, 0xbc, 0xd6, 0x9b, 0xce, 0xaa, 0xeb, 0xfe, 0xae, 0xdb, 0xd6, 0x9b, 0xce, 0xbb, 0xfb, 0xff, 0xef, - 0xbb, 0xd6, 0xdb, 0xce, 0xe0, 0xa8, 0x02, 0xa8, 0xdc, 0xd6, 0x9b, 0xce, 0xab, 0xfb, 0xbf, 0xbe, 0xdc, 0xd6, 0x9b, 0xce, 0xbb, 0xaa, 0xaa, 0xaf, 0xbb, 0xd6, 0xdb, 0xce, 0x0a, 0x8a, 0xaa, 0xbe, - 0x9a, 0xd6, 0xbc, 0xce, 0x7a, 0x5f, 0xaf, 0xff, 0xdc, 0xd6, 0x9b, 0xce, 0xfb, 0xee, 0xae, 0xef, 0xbb, 0xd6, 0x9a, 0xce, 0x00, 0x2e, 0xa8, 0xaa, 0x9b, 0xd6, 0xdb, 0xce, 0xaa, 0xaf, 0xab, 0xff, - 0x9b, 0xd6, 0xbb, 0xce, 0xff, 0xff, 0xef, 0xfd, 0x9a, 0xd6, 0xbb, 0xce, 0x7f, 0xf6, 0xb7, 0xff, 0xbb, 0xd6, 0xdc, 0xce, 0x2b, 0x00, 0x20, 0x02, 0xdb, 0xd6, 0xba, 0xce, 0xbf, 0xff, 0xfd, 0xfd, - 0xdb, 0xd6, 0x9b, 0xce, 0xaa, 0xab, 0xab, 0xbe, 0xba, 0xd6, 0xdb, 0xce, 0xa8, 0x2a, 0x82, 0xab, 0xdc, 0xd6, 0xbb, 0xce, 0xae, 0xae, 0xfa, 0xbb, 0xdc, 0xd6, 0x9b, 0xd6, 0xaa, 0xaa, 0xaf, 0xaa, - 0x3a, 0xbe, 0x19, 0xb6, 0xad, 0x20, 0x2a, 0xea, 0x3a, 0xbe, 0x19, 0xbe, 0x00, 0xfe, 0x2d, 0x38, 0x5a, 0xbe, 0x19, 0xbe, 0x5f, 0xf5, 0xbf, 0xab, 0x3a, 0xbe, 0x1a, 0xb6, 0x82, 0xac, 0x00, 0x80, - 0x5b, 0xc6, 0x39, 0xbe, 0xb7, 0xff, 0xfd, 0x55, 0x5a, 0xc6, 0x3a, 0xbe, 0xfb, 0xee, 0x67, 0x7d, 0x5a, 0xc6, 0x1a, 0xb6, 0xaa, 0xba, 0xaa, 0xba, 0x5a, 0xc6, 0x3a, 0xbe, 0xaf, 0x7f, 0x5f, 0xff, - 0x5a, 0xc6, 0x39, 0xbe, 0xab, 0xe9, 0xef, 0x7d, 0x5a, 0xc6, 0x3a, 0xbe, 0xab, 0xab, 0xef, 0xfb, 0x7b, 0xc6, 0x3a, 0xbe, 0xee, 0x3d, 0xbd, 0x7e, 0x39, 0xc6, 0x7a, 0xbe, 0xab, 0xfa, 0xfa, 0xaf, - 0x7b, 0xc6, 0x3a, 0xbe, 0xbf, 0xbf, 0xaa, 0x8b, 0x7b, 0xc6, 0x3a, 0xbe, 0xee, 0xaf, 0xaa, 0x0a, 0x7b, 0xc6, 0x5a, 0xc6, 0xda, 0xed, 0xaf, 0x16, 0x7b, 0xc6, 0x3a, 0xc6, 0xaa, 0xa2, 0xa2, 0xc2, - 0x7b, 0xc6, 0x5a, 0xc6, 0x73, 0x56, 0xa3, 0x95, 0x7b, 0xc6, 0x39, 0xbe, 0xaa, 0xa8, 0xaa, 0xea, 0x7b, 0xc6, 0x3a, 0xbe, 0x82, 0xaa, 0xfa, 0xea, 0x7b, 0xc6, 0x5a, 0xbe, 0xaa, 0xa3, 0xfe, 0xbf, - 0x7b, 0xc6, 0x5a, 0xbe, 0x2b, 0xaa, 0xff, 0xff, 0x7b, 0xc6, 0x5a, 0xbe, 0x80, 0xaa, 0x8b, 0xbb, 0x7b, 0xc6, 0x5a, 0xbe, 0xa2, 0x0a, 0x28, 0xeb, 0x7b, 0xc6, 0x5a, 0xc6, 0x02, 0x00, 0xfa, 0xcb, - 0x5a, 0xce, 0x7b, 0xc6, 0x8b, 0x55, 0xfe, 0xd7, 0x7b, 0xce, 0x5a, 0xc6, 0xcd, 0x5f, 0x57, 0x5d, 0x7b, 0xc6, 0x5a, 0xbe, 0x82, 0x2a, 0x2e, 0x2a, 0x7a, 0xce, 0x5b, 0xbe, 0xaa, 0xba, 0xff, 0xff, - 0x7b, 0xc6, 0x5a, 0xbe, 0x00, 0xaa, 0xaa, 0xfa, 0x7b, 0xc6, 0x5a, 0xbe, 0x28, 0x88, 0x2a, 0x22, 0x7b, 0xc6, 0x5a, 0xbe, 0x80, 0xaa, 0xa2, 0x20, 0x7b, 0xce, 0x5a, 0xc6, 0x9f, 0x7d, 0xff, 0xff, - 0x7a, 0xce, 0x5b, 0xc6, 0xdf, 0xff, 0xbf, 0xbf, 0x7b, 0xce, 0x5a, 0xc6, 0xfb, 0xbf, 0xba, 0xaa, 0x5a, 0xce, 0x7b, 0xc6, 0x56, 0x77, 0xff, 0xf6, 0x7b, 0xce, 0x9a, 0xc6, 0xfa, 0xaa, 0xfe, 0x8a, - 0x9a, 0xce, 0x5b, 0xc6, 0xea, 0xfe, 0xaa, 0xef, 0x5b, 0xce, 0x9a, 0xc6, 0xae, 0xdf, 0xea, 0xaf, 0x7b, 0xce, 0x5a, 0xc6, 0xaa, 0xaa, 0xba, 0xa7, 0x7b, 0xce, 0x7a, 0xc6, 0xee, 0x7f, 0xf7, 0x55, - 0x7b, 0xce, 0x5a, 0xc6, 0x0a, 0xba, 0x7e, 0x7e, 0x7b, 0xce, 0x5a, 0xbe, 0xa2, 0xaa, 0xea, 0xfb, 0x7b, 0xce, 0x5a, 0xbe, 0xaa, 0xaa, 0xaa, 0xfb, 0x7b, 0xc6, 0x5a, 0xbe, 0x00, 0x00, 0xe2, 0xde, - 0x7b, 0xc6, 0x5a, 0xbe, 0x00, 0x22, 0xff, 0xe7, 0x9b, 0xce, 0x5a, 0xbe, 0xef, 0xfb, 0xef, 0x55, 0x7b, 0xc6, 0x58, 0xad, 0x00, 0x00, 0x00, 0x24, 0x7b, 0xc6, 0x3a, 0xbe, 0x00, 0xaa, 0xff, 0xff, - 0x7b, 0xc6, 0x3a, 0xbe, 0xa0, 0xaa, 0x7f, 0xbd, 0x7b, 0xc6, 0x3a, 0xbe, 0xaa, 0xbe, 0xbf, 0xde, 0x7b, 0xc6, 0x3a, 0xbe, 0x22, 0xaa, 0xff, 0x7d, 0x3a, 0xc6, 0x7b, 0xbe, 0xef, 0xaf, 0xbe, 0xca, - 0x7b, 0xc6, 0x3a, 0xbe, 0xea, 0xaf, 0xff, 0xb7, 0x7b, 0xc6, 0x5a, 0xbe, 0xfe, 0xdd, 0xff, 0xa7, 0x5b, 0xc6, 0x7a, 0xbe, 0xe2, 0x8a, 0xaf, 0xa2, 0x7b, 0xc6, 0x3a, 0xbe, 0x80, 0xaa, 0xeb, 0xa9, - 0x7b, 0xc6, 0x5a, 0xbe, 0xa0, 0xaa, 0xae, 0x8b, 0x7b, 0xc6, 0x5a, 0xbe, 0xac, 0x8a, 0xa0, 0x2d, 0x7a, 0xc6, 0x5b, 0xbe, 0xae, 0x0a, 0x88, 0xb2, 0x7a, 0xc6, 0x5b, 0xc6, 0x80, 0x00, 0x01, 0x83, - 0x9a, 0xce, 0x7b, 0xc6, 0x57, 0xff, 0xd5, 0x5f, 0x9a, 0xce, 0x5b, 0xc6, 0xff, 0xff, 0xae, 0xef, 0x9b, 0xce, 0x7a, 0xc6, 0xdf, 0xd7, 0xff, 0x9d, 0x7a, 0xce, 0x9b, 0xc6, 0xaa, 0xeb, 0xea, 0xfe, - 0x9b, 0xce, 0x7a, 0xc6, 0xea, 0xa0, 0xa2, 0xfa, 0x9b, 0xce, 0x7a, 0xc6, 0xa8, 0xaa, 0xaa, 0xab, 0x7a, 0xce, 0x9b, 0xc6, 0xaf, 0xae, 0xbf, 0x78, 0x7a, 0xce, 0x9b, 0xc6, 0xaa, 0xaa, 0xfe, 0x37, - 0x9b, 0xce, 0x7a, 0xc6, 0xaa, 0xaa, 0xaa, 0xea, 0x9b, 0xce, 0x7a, 0xce, 0xaa, 0x0a, 0x88, 0x0e, 0x7a, 0xce, 0x9b, 0xc6, 0x2f, 0xfa, 0xef, 0xab, 0x9b, 0xd6, 0x7a, 0xc6, 0xbe, 0xee, 0xef, 0xbf, - 0x9b, 0xce, 0x7b, 0xc6, 0xe8, 0xe2, 0x8a, 0xfa, 0x9b, 0xce, 0x7a, 0xc6, 0x8b, 0xea, 0xbe, 0xbf, 0x9b, 0xce, 0x7a, 0xc6, 0xa8, 0xaf, 0xfa, 0xbe, 0x9b, 0xce, 0x7a, 0xc6, 0xfb, 0xfa, 0x6b, 0xef, - 0x9b, 0xce, 0x7a, 0xc6, 0xaf, 0xea, 0xfb, 0xed, 0x9b, 0xce, 0x7a, 0xc6, 0xfe, 0x9e, 0xff, 0xdf, 0x7b, 0xce, 0x5a, 0xc6, 0xa0, 0xa8, 0xa8, 0xba, 0x7a, 0xce, 0x9b, 0xc6, 0xa2, 0xaa, 0xff, 0xfb, - 0x9b, 0xce, 0x7a, 0xc6, 0xfe, 0xff, 0xbf, 0xde, 0x9b, 0xce, 0x7a, 0xc6, 0xeb, 0xfa, 0x7f, 0xf7, 0x9b, 0xce, 0x7a, 0xc6, 0xaf, 0xff, 0xff, 0xf7, 0x7a, 0xce, 0x9b, 0xc6, 0xb8, 0xaa, 0xab, 0x8f, - 0x9b, 0xce, 0x7a, 0xc6, 0xf2, 0xab, 0xff, 0x7f, 0x9b, 0xce, 0x7a, 0xc6, 0xbb, 0xfe, 0xff, 0x7f, 0x5b, 0xce, 0x9b, 0xc6, 0xdd, 0xff, 0xff, 0xfe, 0x7a, 0xce, 0x9b, 0xc6, 0x0e, 0xaa, 0xaa, 0xff, - 0x9c, 0xce, 0x7a, 0xc6, 0xfb, 0xf7, 0xfe, 0xfe, 0x7a, 0xce, 0x9b, 0xc6, 0xa0, 0xba, 0xaf, 0xff, 0x9b, 0xce, 0x7a, 0xc6, 0xef, 0xeb, 0xf7, 0xf7, 0x7a, 0xce, 0x9b, 0xc6, 0xaa, 0x96, 0xfd, 0x2a, - 0x7b, 0xce, 0x9a, 0xc6, 0xfa, 0xa8, 0xaf, 0xda, 0x7b, 0xce, 0x9b, 0xc6, 0xc2, 0xaa, 0xee, 0xeb, 0x9b, 0xce, 0x7a, 0xc6, 0xfa, 0xaa, 0xab, 0xaa, 0x9b, 0xce, 0x7b, 0xce, 0x09, 0x02, 0xc8, 0x82, - 0x9b, 0xce, 0x7a, 0xce, 0x30, 0x02, 0x0b, 0x28, 0xbb, 0xce, 0x9a, 0xc6, 0xbf, 0xff, 0xff, 0xbf, 0xbb, 0xce, 0x9a, 0xc6, 0x8b, 0xff, 0xae, 0xef, 0xbb, 0xce, 0x7a, 0xc6, 0xae, 0xeb, 0xea, 0xea, - 0xbc, 0xce, 0x9a, 0xce, 0x55, 0xd5, 0xd5, 0xb7, 0xbb, 0xd6, 0x7a, 0xc6, 0xee, 0xbf, 0xfe, 0xfb, 0x9c, 0xd6, 0x9a, 0xc6, 0xbe, 0xaa, 0xbe, 0xaa, 0xbc, 0xce, 0x7a, 0xce, 0xea, 0xab, 0xab, 0xab, - 0xbb, 0xd6, 0x7a, 0xce, 0xbf, 0xab, 0xbf, 0xab, 0xbb, 0xd6, 0x9a, 0xce, 0xbb, 0xff, 0xf5, 0x7b, 0xbc, 0xd6, 0x9a, 0xce, 0x7e, 0xff, 0xdf, 0xff, 0xbc, 0xd6, 0x9a, 0xce, 0xaf, 0xff, 0xeb, 0xe6, - 0x9b, 0xd6, 0xbb, 0xce, 0x5a, 0xeb, 0xff, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xeb, 0xaa, 0xbe, 0x9a, 0xd6, 0xbc, 0xce, 0xff, 0xff, 0xff, 0xfe, 0x9b, 0xd6, 0xbb, 0xce, 0xf7, 0xdf, 0xb7, 0xef, - 0xbc, 0xd6, 0x9b, 0xce, 0xab, 0xab, 0xbb, 0xaa, 0xbc, 0xd6, 0x9b, 0xce, 0xa2, 0x3e, 0xea, 0xbf, 0xbc, 0xd6, 0xba, 0xce, 0x0a, 0x8a, 0xae, 0xaa, 0xbc, 0xd6, 0x9a, 0xce, 0x80, 0x8a, 0xa2, 0x28, - 0xbb, 0xd6, 0x9b, 0xce, 0xaa, 0xa8, 0xa2, 0xae, 0xdc, 0xd6, 0x9a, 0xce, 0xbf, 0xef, 0xaf, 0xbf, 0xbb, 0xd6, 0x9a, 0xce, 0xae, 0xaa, 0xaa, 0xab, 0xbc, 0xd6, 0x9a, 0xce, 0xaa, 0xaa, 0xea, 0xaa, - 0xbb, 0xd6, 0x9b, 0xce, 0xaa, 0xea, 0xaa, 0xba, 0x9b, 0xd6, 0xbc, 0xce, 0xff, 0xaf, 0xfd, 0xfd, 0xdc, 0xd6, 0x9a, 0xce, 0xab, 0xee, 0xaa, 0xaa, 0xdb, 0xd6, 0x9b, 0xce, 0xfa, 0xba, 0xab, 0xea, - 0xdc, 0xd6, 0xbb, 0xce, 0xea, 0xbf, 0xbf, 0xff, 0xbc, 0xd6, 0xdb, 0xce, 0xab, 0x02, 0x8a, 0x2a, 0xdb, 0xd6, 0xbb, 0xce, 0xaf, 0xaf, 0xff, 0xef, 0xdc, 0xd6, 0xbb, 0xd6, 0x7a, 0xb7, 0xef, 0x5d, - 0x3a, 0xbe, 0x19, 0xbe, 0x8f, 0xbb, 0x2f, 0xdf, 0x5a, 0xc6, 0xf9, 0xb5, 0xab, 0xaa, 0xb9, 0xaa, 0x3a, 0xc6, 0x1a, 0xb6, 0xbb, 0xba, 0xaf, 0xaf, 0x3b, 0xc6, 0x19, 0xb6, 0xaa, 0xaa, 0xfb, 0xbf, - 0x3a, 0xc6, 0x19, 0xb6, 0xaa, 0xae, 0xab, 0xea, 0x5b, 0xc6, 0x19, 0xb6, 0xaa, 0xfe, 0xbf, 0xeb, 0x5a, 0xbe, 0x19, 0xbe, 0xea, 0xff, 0xdf, 0xbf, 0x5a, 0xc6, 0x19, 0xb6, 0xaf, 0xfb, 0xff, 0xee, - 0x5b, 0xc6, 0x19, 0xbe, 0x8f, 0xbb, 0xbb, 0xbf, 0x5a, 0xc6, 0x39, 0xbe, 0xdb, 0xe7, 0x55, 0x7b, 0x5b, 0xc6, 0x19, 0xbe, 0xa8, 0x6f, 0xab, 0xab, 0x5b, 0xc6, 0x3a, 0xbe, 0xbe, 0xda, 0xbd, 0xab, - 0x7b, 0xc6, 0x39, 0xbe, 0x8e, 0xaf, 0xff, 0x55, 0x7b, 0xc6, 0x3a, 0xbe, 0x8a, 0xba, 0xfb, 0xf7, 0x7b, 0xc6, 0x59, 0xbe, 0xae, 0xfe, 0xef, 0xfe, 0x5b, 0xc6, 0x3a, 0xbe, 0xa0, 0x0a, 0x02, 0xfc, - 0x7b, 0xc6, 0x39, 0xbe, 0xab, 0xff, 0xbf, 0x7f, 0x5b, 0xc6, 0x3a, 0xbe, 0xa0, 0xab, 0xfe, 0xfb, 0x5b, 0xc6, 0x39, 0xbe, 0xa8, 0xae, 0xff, 0xbf, 0x5b, 0xc6, 0x3a, 0xbe, 0xeb, 0xff, 0xdf, 0xd7, - 0x5b, 0xc6, 0x3a, 0xbe, 0x8e, 0xea, 0xff, 0xfe, 0x5b, 0xc6, 0x3a, 0xbe, 0x38, 0xba, 0xeb, 0xf5, 0x5b, 0xc6, 0x3a, 0xbe, 0x22, 0x28, 0xeb, 0xe5, 0x7b, 0xc6, 0x39, 0xbe, 0xea, 0x8a, 0xfa, 0xef, - 0x7b, 0xc6, 0x3a, 0xbe, 0xab, 0xaa, 0xab, 0x7f, 0x7b, 0xc6, 0x3a, 0xbe, 0xaa, 0xaa, 0xa2, 0xaf, 0x7b, 0xc6, 0x3a, 0xbe, 0xea, 0xaa, 0xae, 0x2b, 0x7b, 0xc6, 0x5a, 0xbe, 0xfb, 0x2b, 0x8b, 0xaf, - 0x7b, 0xce, 0x5a, 0xbe, 0xbb, 0xab, 0xaf, 0xff, 0x7a, 0xc6, 0x5b, 0xc6, 0x02, 0x83, 0x80, 0xef, 0x7b, 0xce, 0x5a, 0xbe, 0xba, 0xab, 0xaa, 0xaa, 0x5b, 0xce, 0x7a, 0xc6, 0xb7, 0xff, 0xd7, 0xd5, - 0x5b, 0xce, 0x7a, 0xc6, 0xde, 0x57, 0xf5, 0x55, 0x9b, 0xc6, 0x5a, 0xc6, 0xfb, 0xef, 0xef, 0xbf, 0x7b, 0xc6, 0x5a, 0xc6, 0xbb, 0x3a, 0x00, 0x00, 0x7b, 0xce, 0x5a, 0xbe, 0xaa, 0xea, 0xaa, 0xaa, - 0x7b, 0xce, 0x5a, 0xbe, 0xaa, 0xaa, 0xfa, 0xfb, 0x7b, 0xce, 0x5a, 0xbe, 0xaa, 0xaa, 0xfb, 0xef, 0x7b, 0xc6, 0x3a, 0xbe, 0x22, 0x82, 0xe8, 0xee, 0x7b, 0xc6, 0x5a, 0xbe, 0xaa, 0xae, 0xaf, 0x5d, - 0x7b, 0xc6, 0x5a, 0xbe, 0xaa, 0xba, 0xfd, 0xdf, 0x5b, 0xc6, 0x3a, 0xbe, 0x88, 0x3a, 0xfe, 0x7b, 0x5b, 0xc6, 0x3a, 0xbe, 0xea, 0xfa, 0xfd, 0x7f, 0x5b, 0xc6, 0x1a, 0xbe, 0xaa, 0xaa, 0xab, 0xe5, - 0x7b, 0xc6, 0x3a, 0xb6, 0xaa, 0xbb, 0xff, 0xde, 0x5b, 0xc6, 0x3a, 0xb6, 0xe2, 0xea, 0xff, 0xff, 0x5b, 0xc6, 0x3a, 0xb6, 0xba, 0xfb, 0xfd, 0xff, 0x5b, 0xc6, 0x3a, 0xb6, 0xae, 0xaf, 0xff, 0xfb, - 0x5b, 0xbe, 0x1a, 0xb6, 0xea, 0xe0, 0xfa, 0xab, 0x5b, 0xc6, 0x3a, 0xb6, 0xef, 0xfb, 0xff, 0xbf, 0x5b, 0xc6, 0x3a, 0xb6, 0xab, 0xaf, 0xab, 0xba, 0x5b, 0xc6, 0x3a, 0xbe, 0xf7, 0xd9, 0x7f, 0xdd, - 0x3a, 0xc6, 0x5b, 0xbe, 0xa9, 0x79, 0x6a, 0xaa, 0x5b, 0xc6, 0x3a, 0xbe, 0x8b, 0xaf, 0xeb, 0xb7, 0x3b, 0xc6, 0x7a, 0xbe, 0x2a, 0xfa, 0xaa, 0xea, 0x7b, 0xc6, 0x3a, 0xbe, 0xfb, 0xfa, 0xbb, 0xeb, - 0x5b, 0xc6, 0x7a, 0xbe, 0x2a, 0xf0, 0x8a, 0xaa, 0x7b, 0xc6, 0x5a, 0xbe, 0xae, 0xbf, 0xab, 0xbf, 0x7b, 0xc6, 0x5a, 0xbe, 0x0a, 0xab, 0xba, 0xeb, 0x7a, 0xc6, 0x5b, 0xbe, 0x80, 0x2a, 0xae, 0xa0, - 0x7b, 0xc6, 0x5a, 0xc6, 0x0f, 0x30, 0xa2, 0x03, 0x9b, 0xce, 0x7a, 0xc6, 0x55, 0xfd, 0xd5, 0xdd, 0x9b, 0xce, 0x7a, 0xc6, 0xff, 0xdf, 0xff, 0xaf, 0x9b, 0xce, 0x7a, 0xc6, 0xef, 0xef, 0xbf, 0xaa, - 0x9b, 0xce, 0x7a, 0xc6, 0xff, 0xea, 0xaa, 0x8a, 0x9b, 0xce, 0x7a, 0xce, 0xbb, 0x88, 0x00, 0x08, 0xbb, 0xce, 0x7a, 0xc6, 0xfe, 0xff, 0xea, 0xee, 0x9b, 0xce, 0x7a, 0xc6, 0x8e, 0x88, 0xa8, 0xa8, - 0x9b, 0xce, 0x7a, 0xc6, 0x2a, 0x8a, 0x8a, 0xaa, 0x9b, 0xce, 0x7a, 0xc6, 0xaa, 0xaa, 0xfe, 0xfe, 0x7a, 0xce, 0x9b, 0xc6, 0xaa, 0x2a, 0xfa, 0xfe, 0x9b, 0xce, 0x7a, 0xc6, 0xee, 0xee, 0xea, 0xaa, - 0x9b, 0xce, 0x5a, 0xc6, 0xaa, 0xae, 0xaa, 0xaa, 0x7a, 0xce, 0x9b, 0xc6, 0x2a, 0xf8, 0xaa, 0xaf, 0x9b, 0xce, 0x7a, 0xc6, 0xbf, 0xbf, 0xfb, 0xae, 0x7b, 0xce, 0x9a, 0xc6, 0x02, 0xeb, 0xab, 0xc2, - 0x7a, 0xce, 0x9b, 0xc6, 0xa8, 0xbb, 0xb8, 0xa6, 0x9b, 0xce, 0x5a, 0xc6, 0xef, 0xba, 0xea, 0xfe, 0x7b, 0xce, 0x9b, 0xc6, 0xbf, 0xe8, 0xea, 0xaa, 0x9b, 0xce, 0x7a, 0xc6, 0xff, 0xd7, 0xf7, 0xfd, - 0x9b, 0xce, 0x5a, 0xc6, 0xbe, 0x6a, 0xfa, 0xfe, 0x9b, 0xce, 0x7a, 0xc6, 0xff, 0x7e, 0x75, 0x7d, 0x9b, 0xce, 0x7a, 0xc6, 0xff, 0x5f, 0xd7, 0xf5, 0x9b, 0xce, 0x7a, 0xc6, 0xff, 0xff, 0xdf, 0x55, - 0x9b, 0xce, 0x5a, 0xc6, 0xee, 0xee, 0xbe, 0xbe, 0x5a, 0xce, 0x9b, 0xc6, 0xff, 0xfe, 0xef, 0xfe, 0x9b, 0xce, 0x5a, 0xc6, 0xbe, 0xeb, 0xae, 0xbb, 0x9b, 0xce, 0x7a, 0xc6, 0x7f, 0x5f, 0x7f, 0x7d, - 0x9b, 0xce, 0x7a, 0xc6, 0x6f, 0xfd, 0xfd, 0xfd, 0x9b, 0xce, 0x7a, 0xc6, 0x7f, 0xff, 0x7f, 0xff, 0x7b, 0xce, 0x7a, 0xc6, 0xb7, 0xaf, 0xff, 0xff, 0x7a, 0xce, 0x9b, 0xc6, 0xaa, 0xae, 0xaf, 0xfe, - 0x9b, 0xce, 0x7a, 0xc6, 0xeb, 0xff, 0xbb, 0xeb, 0x7b, 0xce, 0x9a, 0xc6, 0xaa, 0xbe, 0x2f, 0xaa, 0x9b, 0xce, 0x7a, 0xc6, 0xaa, 0xaa, 0xae, 0xab, 0x9c, 0xce, 0x7a, 0xc6, 0xaa, 0xaa, 0xea, 0xae, - 0x9b, 0xce, 0x7a, 0xc6, 0x32, 0x22, 0xa2, 0x2a, 0x9b, 0xce, 0x7a, 0xc6, 0xaa, 0xaa, 0xa0, 0x02, 0x9b, 0xce, 0x7a, 0xc6, 0x80, 0x08, 0xa2, 0xa0, 0x9b, 0xd6, 0x7a, 0xc6, 0xab, 0xee, 0xbe, 0xfb, - 0x9b, 0xce, 0x7a, 0xc6, 0x20, 0xa8, 0x08, 0x88, 0x9b, 0xce, 0x7a, 0xc6, 0x20, 0x28, 0x80, 0x20, 0x9b, 0xce, 0x7a, 0xc6, 0x02, 0x02, 0x08, 0x0c, 0x7c, 0xd6, 0x9a, 0xc6, 0xbe, 0xbf, 0xff, 0xfe, - 0xbb, 0xce, 0x9a, 0xce, 0x7d, 0x55, 0x7d, 0x95, 0xbb, 0xce, 0x9b, 0xce, 0x15, 0x75, 0x57, 0x57, 0xbb, 0xce, 0x9b, 0xce, 0x34, 0x75, 0xa5, 0xfa, 0xbb, 0xd6, 0x9b, 0xce, 0xff, 0xdb, 0xf5, 0x9f, - 0x9b, 0xd6, 0xba, 0xce, 0xff, 0xfe, 0xfa, 0xff, 0xbb, 0xd6, 0x9a, 0xce, 0xab, 0xfa, 0xaa, 0xfb, 0x9b, 0xd6, 0xbb, 0xce, 0xf5, 0xff, 0xea, 0xff, 0x9b, 0xd6, 0xbb, 0xce, 0xff, 0xed, 0xfd, 0xfe, - 0x9b, 0xd6, 0xbc, 0xce, 0xbf, 0xff, 0x7f, 0xff, 0x9b, 0xd6, 0xbc, 0xce, 0xfe, 0xaf, 0xdf, 0xeb, 0xdb, 0xd6, 0x9b, 0xce, 0xeb, 0xff, 0xbf, 0xff, 0x9b, 0xd6, 0xbc, 0xce, 0x7b, 0xeb, 0xff, 0xff, - 0xbc, 0xd6, 0x9a, 0xce, 0xaa, 0xaa, 0xaa, 0xba, 0x9b, 0xd6, 0xbc, 0xce, 0xdf, 0xff, 0xbe, 0xff, 0xbc, 0xd6, 0x9b, 0xce, 0xea, 0xfa, 0xfa, 0xba, 0x9b, 0xd6, 0xbb, 0xce, 0xff, 0xaf, 0xef, 0xf7, - 0x9c, 0xd6, 0xba, 0xce, 0xab, 0xeb, 0xeb, 0xaa, 0xbb, 0xd6, 0x9b, 0xce, 0x82, 0xaa, 0xaa, 0xaa, 0xdc, 0xd6, 0x9b, 0xce, 0xbf, 0xea, 0xef, 0xaa, 0xdc, 0xd6, 0x9b, 0xce, 0xaa, 0xaa, 0xab, 0xba, - 0xdc, 0xd6, 0x9b, 0xce, 0xea, 0xab, 0xaa, 0xaa, 0xdc, 0xd6, 0xbb, 0xce, 0xbb, 0xfe, 0xbb, 0xaa, 0xdc, 0xd6, 0xbb, 0xce, 0xaa, 0xea, 0xeb, 0xa2, 0xdc, 0xd6, 0xbb, 0xce, 0xeb, 0xfe, 0xaa, 0xea, - 0x3a, 0xbe, 0x19, 0xbe, 0x8b, 0xb8, 0xff, 0xe8, 0x3a, 0xbe, 0x1a, 0xb6, 0xe2, 0xe0, 0x2a, 0x08, 0x3b, 0xbe, 0xf9, 0xb5, 0xea, 0xaa, 0x8a, 0xca, 0x3b, 0xc6, 0x19, 0xb6, 0xfa, 0xaf, 0xfe, 0xfb, - 0x3b, 0xbe, 0x19, 0xb6, 0x28, 0x8b, 0x8a, 0xaa, 0x3a, 0xc6, 0x19, 0xb6, 0xea, 0xbe, 0xee, 0xee, 0x3b, 0xbe, 0x19, 0xbe, 0x76, 0xdc, 0xa3, 0xef, 0x3a, 0xbe, 0x19, 0xb6, 0x2f, 0x82, 0xaa, 0x8a, - 0x3b, 0xc6, 0x19, 0xb6, 0xab, 0xab, 0xeb, 0xff, 0x5a, 0xc6, 0x19, 0xb6, 0xea, 0xfe, 0xef, 0xff, 0x3b, 0xc6, 0x19, 0xb6, 0xac, 0xaa, 0xaa, 0xba, 0x5a, 0xc6, 0x19, 0xb6, 0xaa, 0xaa, 0xbe, 0xda, - 0x3b, 0xc6, 0x19, 0xb6, 0xea, 0xea, 0xfe, 0xff, 0x5b, 0xc6, 0xf9, 0xb5, 0xaa, 0xaa, 0xbf, 0x7f, 0x5b, 0xc6, 0x19, 0xb6, 0xaa, 0xba, 0xbe, 0xdf, 0x5b, 0xc6, 0x19, 0xb6, 0x2a, 0xaa, 0xaa, 0xfe, - 0x5b, 0xc6, 0x19, 0xbe, 0xea, 0xfa, 0xeb, 0xee, 0x5b, 0xc6, 0x19, 0xbe, 0xab, 0xaa, 0xee, 0xfb, 0x1a, 0xc6, 0x5a, 0xbe, 0xff, 0x8b, 0xfa, 0xfb, 0x5a, 0xbe, 0x19, 0xbe, 0xfa, 0xff, 0xbe, 0xaa, - 0x1b, 0xc6, 0x39, 0xb6, 0xaa, 0xff, 0xff, 0xfb, 0x5b, 0xc6, 0x1a, 0xb6, 0xaa, 0xbf, 0xff, 0xba, 0x5b, 0xc6, 0x39, 0xbe, 0xbf, 0xdd, 0x75, 0xd5, 0x3a, 0xc6, 0x5b, 0xbe, 0xbe, 0x8b, 0x7f, 0x7e, - 0x7b, 0xc6, 0x39, 0xbe, 0xbb, 0xff, 0x5f, 0x7f, 0x5b, 0xc6, 0x39, 0xbe, 0x02, 0xaa, 0xab, 0xba, 0x5b, 0xc6, 0x5a, 0xbe, 0xab, 0x88, 0xb9, 0x94, 0x5b, 0xc6, 0x3a, 0xbe, 0x88, 0xaf, 0xfa, 0xaa, - 0x7b, 0xce, 0x5a, 0xbe, 0xaf, 0xff, 0xff, 0xff, 0x7b, 0xce, 0x5a, 0xbe, 0xaf, 0xaa, 0xfb, 0xfb, 0x7b, 0xc6, 0x5a, 0xbe, 0x00, 0xa8, 0xfa, 0x35, 0x9b, 0xce, 0x5a, 0xbe, 0xbb, 0xff, 0xf7, 0xfd, - 0x7a, 0xc6, 0x5b, 0xc6, 0xeb, 0xfb, 0xb3, 0x22, 0x9b, 0xc6, 0x5a, 0xc6, 0xdf, 0x75, 0xff, 0xde, 0x5b, 0xc6, 0x3a, 0xbe, 0x00, 0x00, 0x2c, 0xe8, 0x7b, 0xc6, 0x3a, 0xbe, 0x82, 0xfa, 0xff, 0x5f, - 0x5b, 0xc6, 0x1a, 0xbe, 0xaa, 0x22, 0xaa, 0xfe, 0x5b, 0xc6, 0x19, 0xbe, 0x00, 0xa0, 0xaa, 0xfd, 0x5b, 0xc6, 0x3a, 0xbe, 0x7e, 0xff, 0xf7, 0xb5, 0x5b, 0xc6, 0x3a, 0xbe, 0xe5, 0xf7, 0xfd, 0x5d, - 0x5b, 0xbe, 0x3a, 0xbe, 0xde, 0xdd, 0xf9, 0xfd, 0x5b, 0xc6, 0x3a, 0xbe, 0xdd, 0xeb, 0x75, 0xfd, 0x5b, 0xbe, 0x3a, 0xbe, 0x57, 0xf7, 0x67, 0x7d, 0x3b, 0xbe, 0x5a, 0xb6, 0xc0, 0x20, 0xa2, 0xe8, - 0x5b, 0xbe, 0x1a, 0xb6, 0xea, 0xbe, 0xaa, 0xf2, 0x5b, 0xc6, 0x19, 0xb6, 0xef, 0xfb, 0xef, 0xff, 0x1a, 0xbe, 0x3b, 0xb6, 0xdc, 0x7f, 0xf7, 0xb6, 0x5b, 0xbe, 0x1a, 0xb6, 0xee, 0xfb, 0xaa, 0xab, - 0x3b, 0xc6, 0x1a, 0xb6, 0xae, 0xae, 0xab, 0xaa, 0x5b, 0xbe, 0x3a, 0xbe, 0xfd, 0x55, 0xb7, 0x55, 0x5b, 0xc6, 0x3a, 0xbe, 0x5d, 0x7f, 0xdf, 0x7f, 0x5b, 0xc6, 0x3a, 0xbe, 0xdd, 0x9f, 0xbb, 0xef, - 0x3a, 0xc6, 0x5b, 0xbe, 0x6b, 0x7e, 0x2b, 0x7d, 0x7b, 0xc6, 0x3a, 0xbe, 0x77, 0xdf, 0x7d, 0xaf, 0x5b, 0xc6, 0x3a, 0xbe, 0xee, 0x3f, 0xee, 0xb2, 0x3a, 0xc6, 0x5b, 0xbe, 0xde, 0xff, 0x7d, 0x7f, - 0x7b, 0xc6, 0x3a, 0xbe, 0xff, 0xfb, 0xab, 0xbb, 0x7b, 0xc6, 0x5a, 0xbe, 0xbf, 0xbf, 0x2b, 0x0b, 0x9b, 0xce, 0x5a, 0xc6, 0x55, 0xff, 0xff, 0xab, 0x9b, 0xce, 0x5a, 0xc6, 0xbd, 0xfe, 0xab, 0x2a, - 0x9b, 0xce, 0x7a, 0xc6, 0xdf, 0xf7, 0xab, 0x08, 0x9b, 0xce, 0x7a, 0xc6, 0xdf, 0xaa, 0x02, 0x28, 0x9b, 0xd6, 0x7a, 0xc6, 0xff, 0xfb, 0xba, 0xfa, 0x9b, 0xce, 0x7a, 0xc6, 0xaa, 0x0a, 0x00, 0x00, - 0xbb, 0xce, 0x7a, 0xce, 0xeb, 0xba, 0xae, 0xbe, 0xbb, 0xd6, 0x7a, 0xc6, 0xaf, 0xfb, 0xff, 0xff, 0x9b, 0xce, 0x7a, 0xce, 0x0b, 0xaa, 0x00, 0xf2, 0x9b, 0xce, 0x7a, 0xce, 0x73, 0xea, 0x80, 0x33, - 0x9b, 0xce, 0x7a, 0xce, 0xe1, 0xff, 0x2a, 0xfa, 0x7a, 0xce, 0x9b, 0xc6, 0xea, 0xaa, 0xab, 0xae, 0x7a, 0xce, 0x9b, 0xc6, 0xaf, 0xea, 0xe8, 0xaa, 0x7b, 0xce, 0x9a, 0xc6, 0xaa, 0xfa, 0xff, 0xab, - 0x9b, 0xce, 0x7a, 0xc6, 0xfb, 0xaf, 0xbf, 0xf6, 0x7a, 0xce, 0x9b, 0xc6, 0x2b, 0xbe, 0xaa, 0xfa, 0x7b, 0xce, 0x9a, 0xc6, 0x2a, 0x0a, 0xbe, 0x2b, 0x9b, 0xce, 0x5a, 0xc6, 0xaa, 0xaa, 0xab, 0xfe, - 0x7a, 0xce, 0x9b, 0xc6, 0xae, 0xb8, 0x2e, 0xba, 0x7b, 0xce, 0x5a, 0xc6, 0x92, 0xaa, 0xae, 0xba, 0x9b, 0xce, 0x5a, 0xc6, 0xef, 0xfe, 0xaf, 0xfe, 0x7b, 0xce, 0x5a, 0xc6, 0x88, 0xa8, 0xaa, 0xfe, - 0x9b, 0xce, 0x5a, 0xc6, 0xaf, 0xbf, 0xba, 0xff, 0x9b, 0xce, 0x5a, 0xc6, 0xaf, 0xfe, 0xfe, 0xbb, 0x7b, 0xc6, 0x5a, 0xc6, 0x0e, 0x28, 0x38, 0x00, 0x5a, 0xce, 0x9b, 0xc6, 0xbf, 0xeb, 0xff, 0xef, - 0x9b, 0xce, 0x5a, 0xbe, 0xaa, 0xaa, 0xfe, 0xfe, 0x9b, 0xce, 0x5a, 0xc6, 0xfb, 0xbb, 0xbf, 0xff, 0x7b, 0xce, 0x5a, 0xc6, 0xaa, 0xea, 0xbe, 0xaa, 0x9b, 0xc6, 0x5a, 0xc6, 0xaa, 0xaf, 0xea, 0xeb, - 0x5a, 0xce, 0x7b, 0xc6, 0x5f, 0xf9, 0x57, 0x55, 0x9b, 0xce, 0x7a, 0xc6, 0xff, 0xfd, 0xff, 0x6d, 0x7a, 0xce, 0x9b, 0xc6, 0x2e, 0xbf, 0xe2, 0xba, 0x7b, 0xce, 0x7a, 0xc6, 0xf8, 0xfa, 0xbf, 0x2e, - 0x9b, 0xce, 0x7a, 0xc6, 0xaa, 0xfa, 0xff, 0xfa, 0x9b, 0xce, 0x7a, 0xc6, 0xaa, 0xbe, 0xb7, 0xbd, 0x7a, 0xce, 0x9b, 0xc6, 0xae, 0xeb, 0x0a, 0xab, 0x9b, 0xce, 0x7a, 0xc6, 0xae, 0xae, 0x2a, 0xab, - 0x7a, 0xce, 0x9b, 0xc6, 0xea, 0xfd, 0xaa, 0xea, 0x9b, 0xce, 0x7b, 0xc6, 0x8a, 0xaa, 0x0a, 0x2a, 0x9b, 0xce, 0x7a, 0xce, 0x00, 0x0f, 0xca, 0x02, 0x9b, 0xd6, 0x7a, 0xc6, 0xfe, 0xef, 0xfe, 0xbf, - 0x7c, 0xd6, 0x9a, 0xc6, 0xef, 0xef, 0xff, 0xbe, 0x9b, 0xce, 0x7a, 0xc6, 0x20, 0x0a, 0xba, 0xaa, 0xbb, 0xce, 0x7a, 0xce, 0xfb, 0xef, 0xff, 0xff, 0x9c, 0xce, 0x7b, 0xce, 0xa6, 0xa2, 0xae, 0xaa, - 0xbb, 0xce, 0x9a, 0xce, 0xf5, 0x55, 0xed, 0x55, 0x9b, 0xd6, 0x9a, 0xce, 0x55, 0xf9, 0x7d, 0xed, 0xbb, 0xce, 0x7b, 0xce, 0xbb, 0xbb, 0xfa, 0xfb, 0x9b, 0xd6, 0xbb, 0xce, 0xdd, 0xff, 0xfb, 0xea, - 0xbb, 0xd6, 0x9b, 0xce, 0xfe, 0xbf, 0xab, 0x7b, 0xbc, 0xd6, 0x9a, 0xce, 0xeb, 0xaf, 0xae, 0xaf, 0xbb, 0xd6, 0x9b, 0xce, 0xaa, 0xaa, 0xea, 0xfe, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xab, 0xab, 0xba, - 0xbc, 0xd6, 0x9b, 0xce, 0xbb, 0xbe, 0xbf, 0xee, 0x9b, 0xd6, 0xbb, 0xce, 0xfe, 0xef, 0xb7, 0x97, 0x9b, 0xd6, 0xbb, 0xce, 0x7f, 0xff, 0xaa, 0xd6, 0x9c, 0xd6, 0xbb, 0xce, 0xef, 0xf7, 0xd7, 0xf8, - 0x9a, 0xd6, 0xbc, 0xce, 0xbd, 0xff, 0xfa, 0xab, 0xbb, 0xd6, 0x9b, 0xce, 0xae, 0xaa, 0xfa, 0xea, 0x9b, 0xd6, 0xbc, 0xce, 0xeb, 0xee, 0xae, 0xfb, 0xbb, 0xd6, 0x9a, 0xce, 0xae, 0xaa, 0x2a, 0xa2, - 0x9b, 0xd6, 0xbc, 0xce, 0xfb, 0xee, 0xbf, 0x7e, 0xdc, 0xd6, 0x9a, 0xce, 0xab, 0xee, 0x2b, 0xee, 0xdc, 0xd6, 0x9b, 0xd6, 0xea, 0xfa, 0xaa, 0xaa, 0xdc, 0xd6, 0xbb, 0xd6, 0xe5, 0x75, 0x95, 0x7f, - 0xdc, 0xd6, 0xbb, 0xd6, 0x6d, 0xe3, 0xf7, 0xa7, 0xdc, 0xde, 0xbb, 0xce, 0xff, 0xbf, 0xaf, 0xea, 0xdb, 0xd6, 0xbb, 0xd6, 0xdf, 0x0f, 0xff, 0x8b, 0xdc, 0xd6, 0xbb, 0xce, 0xee, 0xfa, 0xea, 0xa8, - 0x3a, 0xbe, 0xf9, 0xb5, 0xa0, 0xab, 0xaa, 0xff, 0x3b, 0xbe, 0xf9, 0xb5, 0xaa, 0xaa, 0xf2, 0xaf, 0x3a, 0xbe, 0xf9, 0xb5, 0xaa, 0xa2, 0xfb, 0xfb, 0x3a, 0xbe, 0x19, 0xb6, 0xce, 0xab, 0x77, 0xff, - 0xf9, 0xbd, 0x3a, 0xb6, 0xab, 0xaf, 0xff, 0xea, 0x3a, 0xbe, 0xf9, 0xb5, 0xab, 0x8a, 0xaf, 0xfe, 0x19, 0xbe, 0x3a, 0xb6, 0x00, 0xaa, 0x8a, 0xfc, 0x3a, 0xbe, 0x19, 0xb6, 0xaf, 0x5e, 0xff, 0xff, - 0x1a, 0xbe, 0xf9, 0xb5, 0x00, 0x82, 0xaf, 0x0e, 0x3b, 0xbe, 0xf9, 0xb5, 0xaa, 0xab, 0xaf, 0xfb, 0x3b, 0xbe, 0xf9, 0xb5, 0x0a, 0xaa, 0xba, 0xfa, 0x3a, 0xbe, 0xf9, 0xb5, 0x2b, 0xb8, 0xb9, 0xdf, - 0x3a, 0xbe, 0xf9, 0xb5, 0xa8, 0xfa, 0xfa, 0x5f, 0x1a, 0xbe, 0xf9, 0xb5, 0xa2, 0x3a, 0xaf, 0xa6, 0x3a, 0xbe, 0xf9, 0xb5, 0xb8, 0xbf, 0xbf, 0x5f, 0x3a, 0xbe, 0xf9, 0xb5, 0x2a, 0xaf, 0x77, 0x5d, - 0x3b, 0xbe, 0xf9, 0xb5, 0xa2, 0x2e, 0xaf, 0xbf, 0x3b, 0xbe, 0xf9, 0xb5, 0x02, 0x02, 0x0a, 0xbe, 0x3b, 0xc6, 0x19, 0xb6, 0xaa, 0xaa, 0xea, 0xff, 0x3b, 0xc6, 0x19, 0xb6, 0xfb, 0xaf, 0xff, 0xbf, - 0x3b, 0xbe, 0x19, 0xb6, 0xa0, 0x22, 0x8a, 0x0a, 0x3b, 0xbe, 0x19, 0xbe, 0xf0, 0x80, 0x22, 0x26, 0x5b, 0xbe, 0x3a, 0xbe, 0x55, 0xdf, 0x67, 0x55, 0x5a, 0xc6, 0x3a, 0xbe, 0xb5, 0xae, 0xe7, 0xff, - 0x5a, 0xc6, 0x3a, 0xbe, 0xe7, 0xff, 0xff, 0xd5, 0x5b, 0xc6, 0x3a, 0xbe, 0xbf, 0xeb, 0xaa, 0xe3, 0x5b, 0xc6, 0x3a, 0xbe, 0xbe, 0xf9, 0xea, 0x0a, 0x5b, 0xc6, 0x3a, 0xbe, 0xab, 0x20, 0xbe, 0x7b, - 0x5b, 0xc6, 0x3a, 0xbe, 0x38, 0xba, 0xab, 0xda, 0x5b, 0xc6, 0x1a, 0xbe, 0x80, 0xaa, 0xea, 0xff, 0x5b, 0xc6, 0x1a, 0xbe, 0xea, 0x8a, 0xae, 0xfd, 0x5b, 0xc6, 0x19, 0xb6, 0x02, 0x8a, 0xae, 0xb6, - 0x7b, 0xc6, 0x1a, 0xbe, 0x2a, 0xaa, 0x7f, 0xff, 0x7b, 0xc6, 0x1a, 0xbe, 0x80, 0xaa, 0xff, 0xf7, 0x5b, 0xc6, 0x1a, 0xbe, 0xa8, 0xfb, 0x7f, 0x57, 0x5b, 0xc6, 0x19, 0xb6, 0xaa, 0xae, 0x6f, 0xff, - 0x3b, 0xc6, 0x1a, 0xb6, 0xea, 0xfa, 0xbf, 0xff, 0x3b, 0xbe, 0x19, 0xb6, 0x0b, 0x88, 0x7a, 0xff, 0x3b, 0xbe, 0xfa, 0xb5, 0xa2, 0xea, 0xbf, 0xff, 0x5b, 0xbe, 0x1a, 0xb6, 0xfa, 0xca, 0xfd, 0x77, - 0x3a, 0xc6, 0x1a, 0xb6, 0xab, 0xbf, 0xff, 0xff, 0x3b, 0xbe, 0x1a, 0xb6, 0x00, 0x38, 0x02, 0xc8, 0x5b, 0xbe, 0x1a, 0xbe, 0xff, 0xfa, 0xaa, 0xef, 0x3b, 0xbe, 0x1a, 0xb6, 0xa0, 0x28, 0x82, 0x00, - 0x5b, 0xc6, 0x1a, 0xb6, 0xff, 0xbf, 0xfa, 0xba, 0x3b, 0xbe, 0x1a, 0xbe, 0x7e, 0xe0, 0x80, 0x2f, 0x3b, 0xc6, 0x1a, 0xb6, 0xbf, 0xef, 0xfb, 0xea, 0x3a, 0xbe, 0x1a, 0xb6, 0xa2, 0x0a, 0x00, 0xaa, - 0x3b, 0xc6, 0x19, 0xb6, 0xae, 0xab, 0xfa, 0xfb, 0x5b, 0xc6, 0x1a, 0xb6, 0xaa, 0x2a, 0xaf, 0xab, 0x5b, 0xc6, 0x3a, 0xbe, 0xff, 0x2b, 0xdb, 0x7b, 0x7b, 0xc6, 0x3a, 0xbe, 0xeb, 0xbb, 0xaf, 0x0b, - 0x7b, 0xc6, 0x3a, 0xbe, 0xfe, 0xaa, 0x0a, 0x00, 0x7b, 0xce, 0x5a, 0xbe, 0xff, 0xaa, 0xab, 0xaa, 0x7b, 0xce, 0x5a, 0xbe, 0xff, 0xaa, 0xaa, 0xaa, 0x7b, 0xce, 0x5a, 0xc6, 0x7d, 0xab, 0x32, 0x2a, - 0x9b, 0xce, 0x5a, 0xc6, 0xfd, 0xef, 0xaa, 0xaa, 0x9b, 0xce, 0x7a, 0xc6, 0xff, 0xfb, 0xea, 0xae, 0x7a, 0xce, 0x9b, 0xc6, 0x2b, 0xaa, 0xab, 0xa2, 0x9b, 0xce, 0x7a, 0xc6, 0xaa, 0x02, 0x2a, 0x8a, - 0x9b, 0xd6, 0x7a, 0xce, 0xbf, 0xbf, 0xfe, 0x7f, 0x9b, 0xce, 0x7a, 0xce, 0x00, 0x02, 0x02, 0xfa, 0xbb, 0xce, 0x7a, 0xce, 0xfb, 0xea, 0xff, 0xff, 0x9b, 0xd6, 0x9a, 0xc6, 0xaf, 0xea, 0xaa, 0xbe, - 0x9b, 0xd6, 0x7a, 0xc6, 0xba, 0xeb, 0xaa, 0xff, 0x9b, 0xd6, 0x7b, 0xc6, 0xbe, 0xab, 0xaf, 0xfa, 0x9b, 0xce, 0x7a, 0xc6, 0xa2, 0x8a, 0xa0, 0xaa, 0x9b, 0xce, 0x7a, 0xce, 0xef, 0x80, 0xb0, 0xfd, - 0x9b, 0xce, 0x7a, 0xc6, 0xaa, 0xbf, 0xae, 0xbe, 0x7a, 0xce, 0x9b, 0xc6, 0xbf, 0x22, 0xaa, 0xaa, 0x7b, 0xd6, 0x9a, 0xc6, 0xff, 0xfe, 0xaf, 0xef, 0x7a, 0xce, 0x9b, 0xc6, 0xaa, 0xbf, 0x2a, 0xaa, - 0x9b, 0xce, 0x7a, 0xc6, 0xad, 0xea, 0xae, 0xaf, 0x9b, 0xce, 0x7a, 0xc6, 0xbf, 0xeb, 0xfe, 0xbb, 0x9b, 0xce, 0x7a, 0xc6, 0xff, 0xff, 0xff, 0xee, 0x7a, 0xce, 0x9b, 0xc6, 0x3a, 0xbf, 0xfa, 0xb0, - 0x7b, 0xce, 0x7a, 0xc6, 0xba, 0xdf, 0xff, 0x2c, 0x7b, 0xce, 0x5a, 0xc6, 0xee, 0xab, 0xaa, 0x88, 0x7b, 0xce, 0x7a, 0xc6, 0x7d, 0xfe, 0xff, 0xea, 0x7b, 0xce, 0x5a, 0xc6, 0xae, 0xeb, 0xdf, 0xaa, - 0x7b, 0xce, 0x5a, 0xbe, 0xaa, 0xae, 0xbe, 0xae, 0x7b, 0xc6, 0x5a, 0xc6, 0x88, 0x00, 0xff, 0x8a, 0x7b, 0xce, 0x5a, 0xbe, 0xba, 0xfe, 0xaa, 0xaa, 0x7b, 0xc6, 0x5a, 0xc6, 0x0a, 0x0a, 0x02, 0xae, - 0x9b, 0xce, 0x7a, 0xc6, 0x75, 0x5d, 0xff, 0xd5, 0x7b, 0xce, 0x5a, 0xc6, 0xbe, 0xbf, 0xa8, 0xbb, 0x7b, 0xce, 0x5a, 0xc6, 0x8b, 0x8b, 0xaa, 0xbe, 0x7b, 0xce, 0x7a, 0xc6, 0xfe, 0xdf, 0xfb, 0x7b, - 0x9b, 0xce, 0x5a, 0xc6, 0xab, 0xaf, 0xff, 0xff, 0x7b, 0xce, 0x5a, 0xc6, 0xaa, 0xca, 0xaa, 0xeb, 0x7a, 0xce, 0x9b, 0xc6, 0xbf, 0x02, 0xaa, 0xaa, 0x9b, 0xce, 0x5a, 0xc6, 0xaa, 0xab, 0xba, 0xaf, - 0x9b, 0xce, 0x7a, 0xc6, 0xfb, 0xff, 0xbb, 0xfa, 0x9b, 0xce, 0x7a, 0xc6, 0xff, 0xef, 0xff, 0xa7, 0x7a, 0xce, 0x9b, 0xc6, 0xbe, 0x22, 0xaa, 0xaa, 0x9b, 0xce, 0x7a, 0xc6, 0xea, 0xaf, 0x2f, 0xcb, - 0x7a, 0xce, 0xbb, 0xc6, 0xba, 0xea, 0xaa, 0xaa, 0x9b, 0xce, 0x7a, 0xc6, 0xba, 0xff, 0xea, 0xfa, 0x9c, 0xd6, 0x7a, 0xc6, 0xff, 0xff, 0xfe, 0xfb, 0x9b, 0xce, 0x7a, 0xc6, 0xae, 0xaa, 0x2a, 0xae, - 0x9b, 0xce, 0x7a, 0xc6, 0xa8, 0xaa, 0xaa, 0xae, 0x9b, 0xd6, 0x7b, 0xc6, 0xff, 0xef, 0xef, 0xbf, 0x9b, 0xce, 0x7a, 0xce, 0xa8, 0x83, 0xa8, 0x00, 0x9c, 0xce, 0x7a, 0xc6, 0x0a, 0x22, 0x80, 0xa0, - 0x9c, 0xd6, 0x7a, 0xc6, 0xba, 0xbf, 0xaa, 0xbb, 0xbb, 0xd6, 0x7b, 0xce, 0xbf, 0xff, 0xff, 0xbf, 0xbc, 0xd6, 0x9a, 0xce, 0xdd, 0xd5, 0xff, 0x6f, 0xbb, 0xd6, 0x9b, 0xce, 0x7d, 0x5d, 0xb5, 0xdd, - 0xbc, 0xd6, 0x9b, 0xce, 0xdd, 0x79, 0x5d, 0xdd, 0xbb, 0xd6, 0x9b, 0xce, 0xdd, 0xff, 0xdd, 0xdd, 0xbc, 0xd6, 0x9b, 0xce, 0xff, 0xff, 0xff, 0xe5, 0xbb, 0xd6, 0x9b, 0xce, 0xea, 0xab, 0xf5, 0x7d, - 0xbb, 0xd6, 0x9b, 0xce, 0xeb, 0xff, 0xfb, 0xad, 0x9a, 0xd6, 0xbc, 0xce, 0xaa, 0xef, 0xff, 0xaa, 0xbc, 0xd6, 0x9b, 0xce, 0xeb, 0xab, 0xab, 0xeb, 0x9b, 0xd6, 0xbc, 0xce, 0xf5, 0xfa, 0xbf, 0xaa, - 0xbc, 0xd6, 0x9b, 0xce, 0xfa, 0xbf, 0xaf, 0xaa, 0xbb, 0xd6, 0x9b, 0xce, 0xaa, 0xae, 0xaa, 0xa2, 0xbc, 0xd6, 0x9b, 0xce, 0xeb, 0xaf, 0xa8, 0xaa, 0xbc, 0xde, 0x9a, 0xce, 0xff, 0xbf, 0xbf, 0xbe, - 0xdc, 0xd6, 0xbb, 0xce, 0xff, 0xff, 0xbf, 0xae, 0xdc, 0xd6, 0xbb, 0xd6, 0x75, 0x5d, 0x7d, 0x5e, 0xdc, 0xd6, 0xbb, 0xd6, 0x56, 0x57, 0xbd, 0xad, 0xdc, 0xd6, 0xbb, 0xd6, 0x75, 0xad, 0xbf, 0xbb, - 0xdc, 0xde, 0xbb, 0xce, 0xaf, 0xab, 0xea, 0xae, 0xdc, 0xd6, 0xbb, 0xd6, 0xb9, 0xb6, 0xa8, 0xaa, 0xdc, 0xd6, 0xbb, 0xd6, 0xaf, 0xab, 0xef, 0xa2, 0xdc, 0xde, 0xbb, 0xd6, 0xf7, 0xff, 0xaf, 0xef, - 0xf9, 0xbd, 0x3a, 0xb6, 0xa8, 0x28, 0xeb, 0xaf, 0xf9, 0xbd, 0x1a, 0xb6, 0x7f, 0xee, 0xef, 0xa9, 0x1a, 0xbe, 0xf9, 0xb5, 0xbc, 0xbe, 0xaf, 0xfc, 0x1a, 0xbe, 0xf9, 0xb5, 0xb2, 0xb8, 0xe9, 0xfa, - 0x3a, 0xbe, 0xf9, 0xb5, 0xbe, 0xfb, 0xff, 0x77, 0x1a, 0xbe, 0xf9, 0xb5, 0x22, 0xb8, 0xf4, 0xf7, 0x3a, 0xbe, 0xf9, 0xb5, 0xab, 0xfe, 0xdd, 0x75, 0x1a, 0xbe, 0xf9, 0xb5, 0xec, 0xaa, 0xab, 0x77, - 0x1a, 0xbe, 0xd9, 0xb5, 0x22, 0xa8, 0xab, 0x7e, 0x1a, 0xbe, 0xd9, 0xb5, 0xaa, 0x0a, 0xa2, 0xfe, 0x1a, 0xbe, 0xd9, 0xad, 0xaa, 0xaa, 0xfa, 0xfd, 0x1a, 0xbe, 0xd9, 0xad, 0xaa, 0xaa, 0xff, 0x7d, - 0x19, 0xb6, 0xda, 0xad, 0x8e, 0xea, 0xff, 0xfb, 0x1a, 0xb6, 0xd9, 0xad, 0x2a, 0xaa, 0xba, 0xff, 0x1a, 0xb6, 0xd9, 0xb5, 0xca, 0x7e, 0xef, 0xbf, 0x1a, 0xbe, 0xd9, 0xad, 0xaf, 0xab, 0xaa, 0xba, - 0x1a, 0xbe, 0xf9, 0xad, 0xbb, 0xec, 0xbe, 0xff, 0x1a, 0xbe, 0xf9, 0xb5, 0xab, 0xb9, 0x8f, 0x8f, 0x19, 0xbe, 0x3a, 0xb6, 0x2f, 0x83, 0x00, 0xaf, 0x3a, 0xbe, 0x19, 0xb6, 0xea, 0xaa, 0xaa, 0xea, - 0x3b, 0xbe, 0xf9, 0xb5, 0x0f, 0x82, 0x8a, 0x88, 0x3a, 0xbe, 0x1a, 0xbe, 0xce, 0x48, 0x02, 0x27, 0x5b, 0xc6, 0x19, 0xb6, 0xaa, 0xff, 0xfd, 0xbd, 0x5b, 0xc6, 0x1a, 0xbe, 0xbf, 0xf5, 0xfe, 0x7c, - 0x5b, 0xc6, 0x19, 0xbe, 0xfc, 0xea, 0xdf, 0x55, 0x5a, 0xbe, 0xfa, 0xb5, 0x80, 0xaa, 0xaa, 0xff, 0x5b, 0xc6, 0x19, 0xb6, 0x0a, 0xaf, 0xf7, 0xdd, 0x3b, 0xc6, 0xf9, 0xb5, 0x00, 0xaa, 0xfe, 0x7f, - 0x5b, 0xc6, 0x1a, 0xb6, 0xea, 0xfe, 0xf5, 0x7d, 0x3b, 0xbe, 0x1a, 0xb6, 0x02, 0x0a, 0xb2, 0xff, 0x3b, 0xbe, 0x1a, 0xb6, 0xea, 0x2e, 0xaa, 0xd5, 0x3b, 0xbe, 0xf9, 0xb5, 0x0a, 0x88, 0xb9, 0xfe, - 0x3b, 0xbe, 0x19, 0xb6, 0x8c, 0xeb, 0xbe, 0x7d, 0x3a, 0xbe, 0xfa, 0xb5, 0xa2, 0xaa, 0x8b, 0xdf, 0x1b, 0xbe, 0xfa, 0xb5, 0xa0, 0xa0, 0xba, 0x5a, 0x3b, 0xbe, 0xf9, 0xb5, 0xba, 0xfe, 0xbb, 0xbb, - 0x3b, 0xbe, 0xfa, 0xb5, 0xaa, 0xff, 0xef, 0xb8, 0x1a, 0xbe, 0x19, 0xb6, 0xf0, 0x00, 0xaa, 0xf0, 0x3a, 0xbe, 0x19, 0xb6, 0x6e, 0xbb, 0xae, 0x2f, 0x3b, 0xbe, 0x19, 0xb6, 0xaf, 0xa9, 0xfa, 0xab, - 0x3b, 0xbe, 0x1a, 0xb6, 0xbf, 0xab, 0xe2, 0xee, 0x1b, 0xbe, 0x39, 0xb6, 0xb6, 0xaa, 0x20, 0x8b, 0x3b, 0xbe, 0x1a, 0xb6, 0x0a, 0x08, 0x08, 0x3e, 0x3b, 0xbe, 0x1a, 0xb6, 0x00, 0x00, 0x02, 0xb8, - 0x5b, 0xc6, 0x19, 0xb6, 0xaa, 0xaa, 0xff, 0xff, 0x5b, 0xc6, 0x1a, 0xb6, 0xba, 0xfe, 0xbf, 0xb7, 0x3b, 0xc6, 0x19, 0xb6, 0xee, 0xeb, 0xaf, 0xaa, 0x5b, 0xc6, 0x1a, 0xbe, 0x5f, 0x57, 0xfe, 0x2a, - 0x5b, 0xc6, 0x1a, 0xbe, 0xe5, 0xff, 0xaf, 0x00, 0x7b, 0xc6, 0x3a, 0xbe, 0xf5, 0xaf, 0x2a, 0x02, 0x7b, 0xc6, 0x5a, 0xbe, 0xb5, 0x02, 0x00, 0x00, 0x5b, 0xce, 0x7a, 0xc6, 0xb5, 0xae, 0xd7, 0xff, - 0x7b, 0xce, 0x7a, 0xc6, 0xea, 0x7f, 0xaa, 0xbc, 0x9b, 0xce, 0x7a, 0xc6, 0x7f, 0x5f, 0xff, 0xeb, 0x7b, 0xce, 0x7a, 0xc6, 0xf9, 0xba, 0x2b, 0xff, 0x9b, 0xce, 0x5a, 0xce, 0xea, 0xea, 0xaf, 0xae, - 0x7b, 0xce, 0x9a, 0xc6, 0xaa, 0xaa, 0xeb, 0x20, 0x9b, 0xce, 0x7a, 0xc6, 0xbe, 0xff, 0xaa, 0xbb, 0x9b, 0xce, 0x7a, 0xc6, 0xaf, 0xaa, 0xea, 0xaa, 0x9b, 0xd6, 0x7a, 0xc6, 0xbf, 0xef, 0xfb, 0xbf, - 0x9b, 0xce, 0x7a, 0xc6, 0xa8, 0xaa, 0xaa, 0xaa, 0x9b, 0xce, 0x7a, 0xce, 0x3e, 0x8f, 0xc2, 0xaf, 0x9b, 0xce, 0x7a, 0xc6, 0xaa, 0xaa, 0xa8, 0xa2, 0x9b, 0xce, 0x7a, 0xc6, 0xa8, 0xaa, 0xaa, 0xf2, - 0x9b, 0xce, 0x7a, 0xc6, 0xaa, 0xaa, 0xaa, 0xaa, 0x9b, 0xce, 0x7a, 0xc6, 0xfa, 0xaa, 0xba, 0xea, 0x9b, 0xce, 0x7a, 0xc6, 0xab, 0xaa, 0xba, 0x8b, 0x7a, 0xce, 0x9b, 0xc6, 0x82, 0xaa, 0xe0, 0xbe, - 0x9b, 0xce, 0x7a, 0xc6, 0xae, 0xaa, 0xaa, 0xbe, 0x9b, 0xce, 0x7a, 0xc6, 0xea, 0xaa, 0xee, 0xba, 0x9b, 0xce, 0x7a, 0xc6, 0xfb, 0xbe, 0xaa, 0xf7, 0x7b, 0xce, 0x7a, 0xc6, 0xaa, 0xa8, 0xbe, 0xfe, - 0x7a, 0xce, 0x9b, 0xc6, 0x8a, 0x0e, 0x08, 0x2a, 0x9b, 0xce, 0x7a, 0xc6, 0xea, 0xdb, 0xff, 0xff, 0x9b, 0xce, 0x7a, 0xc6, 0xe6, 0xff, 0xff, 0xdf, 0x9b, 0xce, 0x5a, 0xc6, 0xba, 0xaf, 0xbf, 0xaf, - 0x9b, 0xce, 0x7a, 0xc6, 0xfa, 0xff, 0xf7, 0x55, 0x9b, 0xce, 0x7a, 0xc6, 0xff, 0xfe, 0x5f, 0xfd, 0x9b, 0xce, 0x5a, 0xc6, 0xab, 0xfa, 0xfa, 0xff, 0x9b, 0xce, 0x5a, 0xc6, 0xfe, 0xff, 0xfe, 0xff, - 0x7b, 0xc6, 0x5a, 0xc6, 0xef, 0xa8, 0x03, 0x20, 0x7b, 0xce, 0x5a, 0xc6, 0x7b, 0xff, 0xfa, 0x6b, 0x7a, 0xce, 0x5b, 0xc6, 0xfb, 0xbf, 0xf7, 0x7b, 0x7b, 0xce, 0x5a, 0xc6, 0xea, 0xff, 0xee, 0xff, - 0x7b, 0xce, 0x5a, 0xc6, 0xae, 0x7e, 0xff, 0xfb, 0x7b, 0xce, 0x5a, 0xbe, 0xaa, 0xae, 0xbf, 0xfa, 0x7b, 0xce, 0x5a, 0xc6, 0xef, 0xbe, 0xfa, 0xdf, 0x7b, 0xce, 0x5a, 0xc6, 0xbf, 0xab, 0xbf, 0xab, - 0x9b, 0xc6, 0x5a, 0xbe, 0xfa, 0xaa, 0xaa, 0xfb, 0x7b, 0xce, 0x5a, 0xc6, 0xab, 0xab, 0xae, 0xba, 0x9b, 0xce, 0x5a, 0xc6, 0xff, 0xfa, 0xfb, 0xff, 0x9b, 0xce, 0x7a, 0xc6, 0xff, 0xff, 0xdf, 0xfd, - 0x7a, 0xce, 0x9b, 0xc6, 0xab, 0xf8, 0xa2, 0xa2, 0x7b, 0xce, 0x9a, 0xc6, 0xa0, 0x23, 0xf8, 0x3e, 0x7a, 0xce, 0x9b, 0xc6, 0xeb, 0xaa, 0xab, 0xfe, 0x7a, 0xce, 0x9b, 0xc6, 0xaa, 0xbb, 0xaa, 0xab, - 0x9b, 0xce, 0x7b, 0xc6, 0x3a, 0xea, 0xef, 0xff, 0x9b, 0xce, 0x7a, 0xc6, 0xaa, 0xaf, 0xfe, 0xeb, 0x9b, 0xce, 0x7a, 0xc6, 0x8a, 0xbb, 0xbb, 0xae, 0x9b, 0xce, 0x7a, 0xc6, 0x8a, 0xaa, 0xaa, 0xf8, - 0x7b, 0xce, 0x9a, 0xc6, 0xee, 0xae, 0xaa, 0xaa, 0x9b, 0xce, 0x7a, 0xc6, 0x8a, 0x2a, 0xaa, 0xa8, 0x9b, 0xce, 0x7a, 0xce, 0x3c, 0x3f, 0x30, 0x02, 0xbb, 0xce, 0x7a, 0xce, 0xab, 0xfe, 0xff, 0xaf, - 0xbc, 0xd6, 0x7a, 0xce, 0xff, 0xff, 0xff, 0xee, 0xbb, 0xd6, 0x9b, 0xce, 0xed, 0x55, 0x55, 0x5d, 0xbc, 0xd6, 0x7a, 0xce, 0xee, 0xae, 0xff, 0xff, 0xbb, 0xd6, 0x7b, 0xce, 0xae, 0xea, 0xeb, 0xff, - 0x9b, 0xd6, 0x7b, 0xce, 0xee, 0xba, 0xbb, 0xff, 0xbb, 0xd6, 0x7b, 0xce, 0xff, 0xff, 0xef, 0xbf, 0x9b, 0xd6, 0xbb, 0xce, 0x80, 0xaa, 0xaa, 0xbe, 0xbb, 0xd6, 0x9a, 0xce, 0xff, 0xbf, 0xbf, 0xbf, - 0x9b, 0xd6, 0xbb, 0xce, 0xff, 0xff, 0xff, 0xaa, 0x9b, 0xd6, 0xbb, 0xce, 0xeb, 0xaa, 0xef, 0xeb, 0x9a, 0xd6, 0xbb, 0xce, 0xbf, 0xff, 0xbf, 0xbf, 0xbc, 0xd6, 0x9b, 0xce, 0xea, 0xff, 0xba, 0xaa, - 0xbc, 0xd6, 0x9b, 0xce, 0xaa, 0xab, 0xaa, 0xab, 0xdc, 0xde, 0x9b, 0xce, 0xff, 0xff, 0xff, 0xef, 0xdc, 0xd6, 0x9b, 0xce, 0xfe, 0xab, 0xaa, 0xeb, 0xdc, 0xd6, 0xbb, 0xd6, 0x7e, 0xd5, 0xf5, 0x95, - 0xdb, 0xd6, 0xbc, 0xd6, 0xfe, 0xff, 0xd7, 0x6b, 0xdc, 0xde, 0xbb, 0xce, 0xbf, 0xaa, 0xbf, 0xaa, 0xdc, 0xde, 0xbb, 0xd6, 0xfd, 0xff, 0xfb, 0xc9, 0xdc, 0xde, 0xbb, 0xd6, 0xe9, 0xef, 0xbf, 0xab, - 0xdc, 0xde, 0xbb, 0xd6, 0xbd, 0xaf, 0xaf, 0xaf, 0xfc, 0xde, 0xbb, 0xd6, 0xff, 0xbf, 0xbf, 0xef, 0xdc, 0xde, 0xbb, 0xd6, 0xab, 0xfa, 0xba, 0xbe, 0xfc, 0xde, 0xbb, 0xd6, 0xfe, 0xeb, 0xff, 0x7e, - 0x1a, 0xbe, 0xd9, 0xad, 0xfa, 0xff, 0xdf, 0x7f, 0x1a, 0xb6, 0xd9, 0xad, 0x82, 0xfb, 0xfd, 0x57, 0x1a, 0xb6, 0xd9, 0xad, 0xff, 0xe3, 0xff, 0x7e, 0xfa, 0xbd, 0xd9, 0xad, 0xaa, 0xbe, 0xff, 0xff, - 0xfa, 0xb5, 0xd9, 0xb5, 0xe0, 0xf2, 0xcb, 0xcf, 0xf9, 0xbd, 0xda, 0xad, 0xba, 0xfe, 0xfe, 0xff, 0xfa, 0xb5, 0xd9, 0xad, 0x0a, 0xc2, 0xa8, 0xae, 0xfa, 0xb5, 0xd9, 0xad, 0x80, 0xa2, 0xfb, 0xbe, - 0xfa, 0xb5, 0xb9, 0xad, 0x82, 0xa2, 0xa8, 0xaf, 0xda, 0xb5, 0xd9, 0xad, 0xa0, 0xed, 0xfb, 0x55, 0xb9, 0xb5, 0xfa, 0xad, 0xff, 0xaa, 0xaa, 0xfe, 0xfa, 0xb5, 0xd9, 0xad, 0xa2, 0xfa, 0xff, 0x7f, - 0xda, 0xb5, 0xf9, 0xad, 0x80, 0xb0, 0xb2, 0x20, 0xfa, 0xbd, 0xb9, 0xad, 0xeb, 0xab, 0x8b, 0x2a, 0xfa, 0xb5, 0xd9, 0xad, 0x0e, 0x02, 0x08, 0x00, 0x1a, 0xbe, 0xd9, 0xb5, 0xeb, 0xfd, 0xaf, 0xaa, - 0x1a, 0xbe, 0xd9, 0xb5, 0xfd, 0x2a, 0x2a, 0x02, 0x3b, 0xbe, 0x19, 0xb6, 0xd5, 0xff, 0xbf, 0x23, 0x3b, 0xbe, 0x19, 0xb6, 0xfe, 0xee, 0xba, 0x83, 0x3b, 0xbe, 0xf9, 0xb5, 0x2a, 0xab, 0xaf, 0x28, - 0x3b, 0xbe, 0x19, 0xbe, 0xb7, 0xbb, 0x3b, 0xaf, 0x3a, 0xc6, 0x1a, 0xb6, 0xab, 0xae, 0xeb, 0xff, 0x3a, 0xbe, 0xf9, 0xb5, 0x0a, 0x2a, 0x88, 0x6b, 0x3b, 0xbe, 0xf9, 0xb5, 0x88, 0xfa, 0xfe, 0x7f, - 0x1a, 0xbe, 0xf9, 0xb5, 0xa8, 0xfa, 0xaf, 0xf5, 0x1a, 0xbe, 0xf9, 0xb5, 0xaa, 0xee, 0xfa, 0xf7, 0x1a, 0xbe, 0xf9, 0xb5, 0xbf, 0xaa, 0xb2, 0x8b, 0xf9, 0xbd, 0x1a, 0xb6, 0x5f, 0xd7, 0xab, 0x8d, - 0x1a, 0xbe, 0xf9, 0xb5, 0xa2, 0xfe, 0xec, 0xfd, 0x1a, 0xbe, 0xfa, 0xb5, 0xaa, 0x6e, 0xaa, 0xf8, 0x1a, 0xbe, 0xf9, 0xb5, 0xba, 0xa7, 0xfb, 0x7b, 0x1a, 0xbe, 0xf9, 0xb5, 0xbe, 0xfe, 0xd7, 0x55, - 0x1b, 0xbe, 0xda, 0xb5, 0xaa, 0xaa, 0xae, 0xba, 0x1b, 0xbe, 0xf9, 0xad, 0xef, 0xeb, 0xaa, 0xae, 0x1a, 0xbe, 0xfa, 0xb5, 0x5b, 0xad, 0x2f, 0xba, 0x1b, 0xbe, 0xf9, 0xb5, 0x2e, 0x3f, 0x2a, 0xa2, - 0x3b, 0xc6, 0x1a, 0xb6, 0xff, 0xef, 0xff, 0xff, 0x1b, 0xbe, 0xf9, 0xb5, 0x28, 0x8b, 0xaa, 0x00, 0x1b, 0xbe, 0xf9, 0xb5, 0xaa, 0xa8, 0xa8, 0x08, 0xfa, 0xbd, 0x3a, 0xb6, 0xa2, 0xbf, 0xfd, 0xfa, - 0x3b, 0xbe, 0xf9, 0xb5, 0xaa, 0xfa, 0xaa, 0x82, 0x3b, 0xbe, 0x19, 0xb6, 0xfa, 0xbf, 0xb7, 0x8a, 0x3b, 0xc6, 0x19, 0xb6, 0xff, 0xfb, 0xba, 0xaa, 0x5b, 0xc6, 0x1a, 0xbe, 0x7d, 0xdd, 0xab, 0x00, - 0x7b, 0xc6, 0x3a, 0xbe, 0x55, 0xf7, 0xba, 0x2a, 0x7b, 0xc6, 0x3a, 0xbe, 0xd5, 0xfb, 0xaf, 0x20, 0x7b, 0xc6, 0x3a, 0xbe, 0xf7, 0x8f, 0x0a, 0x00, 0x7b, 0xce, 0x5a, 0xc6, 0x5d, 0xfd, 0xab, 0xaa, - 0x7b, 0xce, 0x5a, 0xc6, 0x5d, 0xba, 0xaa, 0x0a, 0x9b, 0xce, 0x5a, 0xc6, 0xff, 0xaf, 0xab, 0xab, 0x5b, 0xce, 0x9a, 0xc6, 0xaa, 0xea, 0xfe, 0xab, 0x9b, 0xce, 0x5a, 0xc6, 0xff, 0xee, 0xff, 0xaf, - 0x5b, 0xce, 0x9a, 0xc6, 0xfb, 0xea, 0xbf, 0xfe, 0x9b, 0xce, 0x7a, 0xc6, 0xfb, 0xfb, 0xff, 0xff, 0x7b, 0xce, 0x9a, 0xc6, 0x22, 0x0a, 0xaa, 0xab, 0x9b, 0xce, 0x7a, 0xc6, 0xea, 0x6b, 0xff, 0xff, - 0x7a, 0xce, 0x9b, 0xc6, 0x0a, 0xba, 0x0a, 0xeb, 0x9b, 0xce, 0x7a, 0xc6, 0xaa, 0xfe, 0xbb, 0xaa, 0x9b, 0xce, 0x7a, 0xc6, 0xea, 0xab, 0xfe, 0xba, 0x9b, 0xce, 0x7a, 0xc6, 0xaa, 0xaa, 0xba, 0xea, - 0x7b, 0xd6, 0x9a, 0xc6, 0xbf, 0xbf, 0xfe, 0xfb, 0x9a, 0xce, 0x7b, 0xce, 0x8b, 0xad, 0x2a, 0xb6, 0x7b, 0xd6, 0x9a, 0xc6, 0xfa, 0xff, 0xff, 0xff, 0x9b, 0xce, 0x7a, 0xce, 0x0f, 0xa0, 0xe0, 0x8a, - 0x9b, 0xce, 0x7a, 0xc6, 0xaa, 0xea, 0xae, 0xae, 0x7a, 0xce, 0x9b, 0xc6, 0xaa, 0x9e, 0xea, 0x2e, 0x7b, 0xce, 0x9a, 0xc6, 0xaf, 0x82, 0xab, 0xf8, 0x9b, 0xce, 0x7a, 0xc6, 0xbe, 0xfe, 0xff, 0xdf, - 0x9b, 0xce, 0x5a, 0xc6, 0xaa, 0xaa, 0xaa, 0xbe, 0x9b, 0xce, 0x5a, 0xc6, 0xaa, 0xea, 0xeb, 0xfe, 0x7b, 0xce, 0x5a, 0xc6, 0x2a, 0xab, 0xee, 0xfb, 0x5a, 0xce, 0x7b, 0xc6, 0x5f, 0x77, 0xe5, 0x5f, - 0x7b, 0xce, 0x5a, 0xc6, 0xba, 0xaf, 0xfe, 0xfe, 0x7b, 0xce, 0x7a, 0xc6, 0xbf, 0x7f, 0x5b, 0xf5, 0x7b, 0xc6, 0x3a, 0xc6, 0xaa, 0xea, 0x88, 0xea, 0x7b, 0xce, 0x5a, 0xbe, 0xaa, 0xaf, 0xbb, 0xab, - 0x7b, 0xce, 0x5a, 0xc6, 0xae, 0xfb, 0xff, 0x7f, 0x7b, 0xce, 0x5a, 0xbe, 0xaa, 0xfa, 0xeb, 0xfe, 0x7b, 0xc6, 0x5a, 0xbe, 0x82, 0xa8, 0xaa, 0x2a, 0x7b, 0xce, 0x5a, 0xc6, 0xff, 0xff, 0xed, 0xdd, - 0x7b, 0xc6, 0x5a, 0xc6, 0xb0, 0xc0, 0x0e, 0xa8, 0x7b, 0xc6, 0x5a, 0xc6, 0xa3, 0x3f, 0xef, 0xf3, 0x7b, 0xc6, 0x5a, 0xbe, 0x80, 0xa6, 0x8a, 0xbe, 0x7b, 0xce, 0x5a, 0xbe, 0xaa, 0xff, 0xff, 0xff, - 0x7b, 0xc6, 0x5a, 0xbe, 0x03, 0x8a, 0x02, 0x82, 0x7b, 0xc6, 0x5a, 0xbe, 0xaa, 0x0a, 0x8a, 0x2a, 0x7b, 0xc6, 0x5a, 0xc6, 0x8c, 0x88, 0x2b, 0xb2, 0x9b, 0xce, 0x5a, 0xbe, 0xfe, 0xff, 0xfe, 0xfa, - 0x7b, 0xc6, 0x5a, 0xc6, 0x20, 0xea, 0xa8, 0x82, 0x7b, 0xce, 0x5a, 0xc6, 0xef, 0xfa, 0xae, 0xbe, 0x9b, 0xce, 0x5a, 0xc6, 0xef, 0xff, 0xff, 0xff, 0x7b, 0xce, 0x7a, 0xc6, 0xbd, 0xaf, 0xab, 0xff, - 0x7a, 0xce, 0x9b, 0xc6, 0xaa, 0xae, 0x08, 0xfe, 0x7a, 0xce, 0x9b, 0xc6, 0xaa, 0xbf, 0xbc, 0xea, 0x7a, 0xce, 0x9b, 0xc6, 0xaf, 0xaf, 0xa0, 0xeb, 0x7a, 0xce, 0x9b, 0xc6, 0xbf, 0xaa, 0xbf, 0xfe, - 0x5a, 0xce, 0x9b, 0xc6, 0xff, 0xff, 0xfb, 0xbf, 0x7a, 0xce, 0x9b, 0xc6, 0xea, 0xaa, 0xeb, 0xa0, 0x9b, 0xce, 0x7a, 0xc6, 0xaf, 0xef, 0xeb, 0xbf, 0x9b, 0xce, 0x7a, 0xc6, 0x8b, 0xfe, 0xfe, 0xee, - 0x9b, 0xce, 0x7a, 0xc6, 0xaa, 0xaa, 0xaa, 0xa8, 0x7b, 0xd6, 0x9a, 0xc6, 0xbe, 0xaf, 0xff, 0xfa, 0x7c, 0xd6, 0x9a, 0xc6, 0xfe, 0xbe, 0xaa, 0xff, 0x9b, 0xce, 0x7b, 0xce, 0x80, 0x0a, 0x0c, 0xfe, - 0x9b, 0xce, 0x7a, 0xc6, 0x80, 0x02, 0xa2, 0x82, 0x9b, 0xd6, 0x7b, 0xc6, 0xea, 0xeb, 0xaa, 0xbe, 0xbc, 0xce, 0x9a, 0xce, 0x57, 0x75, 0xe5, 0x55, 0x9b, 0xce, 0x7a, 0xce, 0x0b, 0x02, 0x0a, 0x0a, - 0xbb, 0xd6, 0x7b, 0xce, 0xff, 0xff, 0xef, 0xfb, 0x7b, 0xd6, 0xbb, 0xce, 0xff, 0xaf, 0xaf, 0xff, 0xbb, 0xd6, 0x9b, 0xce, 0xdd, 0xfd, 0xfd, 0xfd, 0xbb, 0xd6, 0x9b, 0xce, 0xbb, 0xff, 0xbb, 0xfd, - 0x9b, 0xd6, 0xbc, 0xce, 0xe3, 0xbe, 0xab, 0xe2, 0xbb, 0xd6, 0x9a, 0xce, 0xaa, 0xaa, 0xaf, 0xaa, 0xbb, 0xd6, 0x9b, 0xce, 0xea, 0xab, 0xaa, 0xab, 0xbb, 0xd6, 0x9b, 0xce, 0x2a, 0xe2, 0xaa, 0xaa, - 0xbc, 0xd6, 0x9b, 0xd6, 0x2b, 0x8a, 0xaa, 0xaa, 0xdc, 0xde, 0x9b, 0xce, 0xef, 0xfb, 0xaa, 0xbf, 0xdc, 0xd6, 0x9b, 0xd6, 0xfe, 0xab, 0xaa, 0xaf, 0xdc, 0xd6, 0xbb, 0xd6, 0x95, 0x9d, 0xe5, 0xed, - 0xdc, 0xde, 0xbb, 0xd6, 0xd7, 0xff, 0xef, 0xfe, 0xdc, 0xde, 0xbb, 0xd6, 0x7f, 0xf5, 0xef, 0xbe, 0xfc, 0xde, 0xbb, 0xd6, 0xff, 0xff, 0xff, 0xfe, 0xfc, 0xde, 0xbb, 0xd6, 0xfb, 0xbf, 0xff, 0xff, - 0xdc, 0xde, 0xdb, 0xd6, 0xbd, 0x57, 0xd9, 0xaf, 0xfc, 0xde, 0xbb, 0xd6, 0xbb, 0xff, 0xef, 0xff, 0xfc, 0xde, 0xbb, 0xd6, 0xbf, 0xff, 0xeb, 0xbf, 0xdc, 0xde, 0xbb, 0xd6, 0xee, 0xef, 0xff, 0xff, - 0xb9, 0xb5, 0xda, 0xad, 0xaa, 0x5a, 0x7f, 0x7f, 0xda, 0xb5, 0xd9, 0xad, 0x68, 0xfd, 0xff, 0xf7, 0xd9, 0xb5, 0xd9, 0xad, 0xae, 0xb2, 0x2b, 0x3d, 0xb9, 0xb5, 0xfa, 0xad, 0xe9, 0xfd, 0xaa, 0xff, - 0xda, 0xb5, 0xd9, 0xad, 0xe8, 0xfa, 0xfd, 0xc2, 0xb9, 0xb5, 0x1a, 0xae, 0xaa, 0xaa, 0x5f, 0xeb, 0xda, 0xb5, 0xf9, 0xad, 0x02, 0xb8, 0xff, 0xb9, 0xf9, 0xb5, 0xba, 0xad, 0xfa, 0xa8, 0xaa, 0xba, - 0xf9, 0xb5, 0xba, 0xad, 0xaf, 0xba, 0x22, 0xee, 0xd9, 0xb5, 0xfa, 0xad, 0xab, 0xeb, 0xff, 0xea, 0xfa, 0xb5, 0xb9, 0xad, 0xac, 0xaa, 0x28, 0x0a, 0xda, 0xb5, 0xf9, 0xad, 0xaf, 0xaa, 0x3d, 0x8f, - 0xf9, 0xb5, 0xda, 0xad, 0x2f, 0xba, 0xaa, 0x0a, 0x1a, 0xbe, 0xd9, 0xb5, 0xd7, 0xef, 0xef, 0x0a, 0x1a, 0xbe, 0xd9, 0xb5, 0xff, 0xff, 0x2a, 0x82, 0x3a, 0xbe, 0xd9, 0xb5, 0xfb, 0xff, 0xae, 0x8a, - 0x1a, 0xbe, 0x19, 0xb6, 0xeb, 0x7a, 0x97, 0xb9, 0x19, 0xbe, 0x3a, 0xb6, 0x80, 0x2b, 0xbf, 0xea, 0x19, 0xbe, 0x3b, 0xb6, 0xbd, 0x02, 0xa2, 0x02, 0x5a, 0xbe, 0xfa, 0xb5, 0x8a, 0xaa, 0xfe, 0xd5, - 0x3b, 0xbe, 0xf9, 0xb5, 0xba, 0xe2, 0xee, 0xdf, 0x3b, 0xbe, 0xf9, 0xb5, 0xfe, 0xf7, 0xfb, 0xf7, 0x1a, 0xbe, 0xf9, 0xb5, 0xde, 0xff, 0xdb, 0xef, 0x1a, 0xbe, 0xd9, 0xad, 0xba, 0xfa, 0xea, 0xee, - 0xfa, 0xb5, 0xd9, 0xad, 0xb3, 0xb8, 0xaf, 0xbc, 0x1a, 0xb6, 0xda, 0xb5, 0xbe, 0xdf, 0xbf, 0xf8, 0x1b, 0xbe, 0xf9, 0xb5, 0x8b, 0xa5, 0x55, 0xd5, 0xd9, 0xbd, 0x1a, 0xb6, 0x9b, 0x5d, 0x7d, 0xff, - 0xf9, 0xbd, 0x1a, 0xb6, 0xa8, 0xef, 0x7a, 0x55, 0x1a, 0xbe, 0xf9, 0xb5, 0x7e, 0xee, 0xff, 0x77, 0x19, 0xbe, 0xda, 0xad, 0xff, 0xfa, 0xfa, 0xab, 0x3a, 0xbe, 0xf9, 0xad, 0xff, 0xff, 0xbf, 0x2f, - 0x3a, 0xbe, 0xd9, 0xb5, 0xfd, 0xaa, 0xea, 0xa2, 0x1b, 0xbe, 0xf9, 0xb5, 0xbb, 0xee, 0x8a, 0x88, 0x3a, 0xbe, 0xfa, 0xb5, 0xbf, 0xbe, 0xee, 0xab, 0x3b, 0xbe, 0x19, 0xb6, 0xfa, 0xf6, 0xeb, 0xea, - 0x3a, 0xbe, 0x19, 0xb6, 0xeb, 0x3d, 0xeb, 0xaf, 0x1a, 0xbe, 0x3b, 0xb6, 0x22, 0x82, 0x00, 0xaf, 0x3a, 0xbe, 0x1a, 0xb6, 0xfd, 0xae, 0xb2, 0x2f, 0x5b, 0xc6, 0x1a, 0xb6, 0xbf, 0xff, 0xff, 0xfb, - 0x7b, 0xc6, 0x1a, 0xb6, 0xb7, 0xff, 0xbf, 0x29, 0x7b, 0xc6, 0x39, 0xbe, 0x55, 0xf5, 0xfe, 0x02, 0x7b, 0xc6, 0x3a, 0xbe, 0xbd, 0xab, 0x2a, 0x00, 0x9b, 0xce, 0x5a, 0xc6, 0x55, 0x7f, 0xeb, 0x8b, - 0x9a, 0xce, 0x5b, 0xc6, 0xd5, 0xff, 0xaa, 0x2a, 0x9b, 0xce, 0x5a, 0xc6, 0xff, 0xab, 0xaa, 0x00, 0x9a, 0xce, 0x7b, 0xc6, 0xf7, 0xef, 0xbb, 0xaa, 0x7a, 0xce, 0x9b, 0xc6, 0x00, 0xab, 0xfa, 0xfb, - 0x7a, 0xce, 0x9b, 0xc6, 0x0a, 0xab, 0xaf, 0xaa, 0x5a, 0xce, 0x7b, 0xc6, 0xbe, 0xff, 0xbd, 0xd7, 0x5b, 0xce, 0x9a, 0xc6, 0xaa, 0xee, 0xbe, 0xbe, 0x9b, 0xce, 0x5a, 0xc6, 0xaa, 0xaa, 0xae, 0xaa, - 0x7b, 0xce, 0x9a, 0xc6, 0xf8, 0x82, 0xe8, 0x8a, 0x9b, 0xce, 0x7a, 0xc6, 0xfa, 0xaa, 0xab, 0xff, 0x7a, 0xce, 0x9b, 0xc6, 0xe0, 0xfa, 0x00, 0xff, 0x7a, 0xce, 0x9b, 0xc6, 0x02, 0xe0, 0xb0, 0x22, - 0x9a, 0xce, 0x7b, 0xc6, 0xea, 0xfb, 0xea, 0x7b, 0x7b, 0xce, 0x9a, 0xc6, 0xf8, 0xbf, 0xab, 0x00, 0x5a, 0xce, 0x9b, 0xc6, 0xb5, 0xaf, 0xeb, 0xfe, 0x9b, 0xce, 0x7a, 0xc6, 0xab, 0xba, 0xfb, 0x67, - 0x9b, 0xce, 0x7a, 0xc6, 0x2a, 0xaa, 0xff, 0xff, 0x9b, 0xce, 0x7a, 0xc6, 0xa2, 0xba, 0xef, 0xf7, 0x7b, 0xce, 0x9a, 0xc6, 0xab, 0x82, 0xa8, 0xeb, 0x7b, 0xce, 0x9a, 0xc6, 0xa2, 0xbe, 0x2a, 0x98, - 0x7b, 0xce, 0x7a, 0xc6, 0xe2, 0xea, 0xff, 0xfe, 0x5a, 0xce, 0x9b, 0xc6, 0xda, 0xaa, 0xab, 0xaa, 0x7b, 0xce, 0x7a, 0xc6, 0xfa, 0xfa, 0x7e, 0x55, 0x5a, 0xce, 0x7b, 0xc6, 0x75, 0xbf, 0x57, 0xa5, - 0x9b, 0xce, 0x5a, 0xc6, 0xbb, 0xef, 0xff, 0xff, 0x5b, 0xce, 0x7a, 0xc6, 0xfb, 0x7f, 0x57, 0x7a, 0x7a, 0xc6, 0x5b, 0xc6, 0xfa, 0xf0, 0x8a, 0x8c, 0x7b, 0xce, 0x5a, 0xbe, 0x8a, 0xae, 0xea, 0xfb, - 0x7b, 0xce, 0x5a, 0xc6, 0xfe, 0xf5, 0x55, 0x75, 0x7b, 0xce, 0x5a, 0xbe, 0xba, 0xae, 0xaf, 0xbf, 0x7b, 0xc6, 0x5a, 0xbe, 0xa8, 0x23, 0xa3, 0x2b, 0x7b, 0xce, 0x5a, 0xbe, 0xfb, 0xee, 0xff, 0xaa, - 0x7b, 0xc6, 0x5a, 0xbe, 0xba, 0x2a, 0x80, 0xaa, 0x7b, 0xc6, 0x5a, 0xc6, 0x1f, 0x7f, 0x02, 0x23, 0x7b, 0xc6, 0x5a, 0xc6, 0x7d, 0xa9, 0x0a, 0x3c, 0x7b, 0xce, 0x5a, 0xbe, 0xfa, 0xfa, 0xee, 0xeb, - 0x7b, 0xc6, 0x5a, 0xc6, 0x37, 0xbf, 0x3f, 0xdf, 0x7b, 0xc6, 0x5a, 0xc6, 0xef, 0xa8, 0x00, 0xf0, 0x7b, 0xc6, 0x5a, 0xc6, 0xe7, 0x7f, 0x38, 0x2e, 0x7a, 0xc6, 0x5b, 0xc6, 0xe2, 0xe0, 0x38, 0x8a, - 0x7b, 0xc6, 0x5a, 0xbe, 0x22, 0xab, 0x88, 0xa6, 0x7a, 0xc6, 0x5b, 0xbe, 0xba, 0xbb, 0x28, 0xa2, 0x7b, 0xc6, 0x5a, 0xbe, 0x0a, 0x0a, 0x08, 0x00, 0x9b, 0xc6, 0x5a, 0xc6, 0xeb, 0x7f, 0xbe, 0xaa, - 0x7b, 0xce, 0x5a, 0xc6, 0xff, 0xff, 0xea, 0xfe, 0x9b, 0xce, 0x5a, 0xc6, 0xf7, 0xff, 0xfa, 0xfe, 0x5a, 0xce, 0x9b, 0xc6, 0xfa, 0xab, 0xeb, 0xbf, 0x7a, 0xce, 0x9b, 0xc6, 0xbe, 0x0a, 0xab, 0xea, - 0x7a, 0xce, 0x9b, 0xc6, 0xaa, 0xc8, 0xfe, 0xab, 0x7a, 0xce, 0x9b, 0xc6, 0x82, 0xaa, 0xfa, 0xbe, 0x7a, 0xce, 0x9b, 0xc6, 0xeb, 0xbf, 0x2b, 0x2a, 0x5a, 0xce, 0x9b, 0xc6, 0xea, 0xfb, 0xbe, 0xfe, - 0x7a, 0xce, 0x9b, 0xc6, 0x0a, 0xef, 0xba, 0x7a, 0x7a, 0xce, 0x9b, 0xc6, 0xaa, 0xeb, 0xae, 0xf2, 0x9b, 0xce, 0x7a, 0xc6, 0xeb, 0xaf, 0xea, 0xff, 0x9b, 0xce, 0x7a, 0xc6, 0xee, 0xaf, 0xaa, 0x2a, - 0x7b, 0xce, 0x9b, 0xc6, 0x2a, 0x2a, 0xbf, 0xaf, 0x9b, 0xce, 0x7a, 0xc6, 0x22, 0xa0, 0xa8, 0xfa, 0x9b, 0xce, 0x7a, 0xc6, 0xaa, 0xbe, 0xbf, 0xfb, 0x9b, 0xd6, 0x7a, 0xc6, 0xea, 0xff, 0xff, 0xff, - 0x9b, 0xd6, 0x7a, 0xc6, 0xbf, 0xef, 0xff, 0xbf, 0x9b, 0xce, 0x7a, 0xce, 0x3a, 0x3e, 0x28, 0xc2, 0xbb, 0xce, 0x7a, 0xce, 0xff, 0xea, 0xfa, 0xee, 0xbc, 0xd6, 0x7a, 0xc6, 0xeb, 0xaf, 0xaf, 0xfe, - 0xbb, 0xd6, 0x7b, 0xce, 0xaf, 0xbf, 0xff, 0xfb, 0xbc, 0xd6, 0x9a, 0xce, 0xbf, 0xff, 0xff, 0xf5, 0xbc, 0xd6, 0x9a, 0xce, 0xbf, 0xff, 0xbf, 0x7b, 0x9b, 0xd6, 0xbb, 0xce, 0xaf, 0xab, 0xba, 0x2f, - 0x9b, 0xd6, 0xbb, 0xce, 0xaa, 0xbf, 0xfa, 0xb6, 0x9b, 0xd6, 0xbb, 0xce, 0xaf, 0xea, 0xaf, 0x76, 0x9b, 0xd6, 0xbb, 0xce, 0xfe, 0xbe, 0xde, 0xdf, 0x9b, 0xd6, 0xbb, 0xce, 0xaf, 0xff, 0xe7, 0xab, - 0xbc, 0xd6, 0x9b, 0xd6, 0x8e, 0xaa, 0xa0, 0x02, 0xdc, 0xde, 0xbb, 0xce, 0xff, 0xff, 0xff, 0xaf, 0xbc, 0xde, 0xdb, 0xce, 0xfb, 0xaf, 0xae, 0xbf, 0xdc, 0xd6, 0xbb, 0xd6, 0xaf, 0xbf, 0x8a, 0xbd, - 0xdc, 0xde, 0xbb, 0xd6, 0x7f, 0xef, 0xbf, 0xdf, 0xdc, 0xde, 0xbb, 0xd6, 0xbf, 0xff, 0xfb, 0xff, 0xdc, 0xde, 0xbb, 0xd6, 0xfb, 0x3f, 0xff, 0xff, 0xdc, 0xde, 0xbb, 0xd6, 0xeb, 0xfb, 0xff, 0xff, - 0xbb, 0xde, 0xdc, 0xd6, 0x5b, 0xfa, 0xdf, 0xef, 0xdc, 0xde, 0xbb, 0xd6, 0xbe, 0xfb, 0xbf, 0xff, 0xdc, 0xd6, 0xbb, 0xd6, 0x22, 0xab, 0x0a, 0x2f, 0xdc, 0xde, 0xbb, 0xd6, 0x7f, 0xfa, 0xff, 0xff, - 0xb9, 0xb5, 0xda, 0xad, 0x5f, 0xb5, 0xd5, 0xe7, 0xfa, 0xb5, 0xb9, 0xad, 0xab, 0xaa, 0xbb, 0xff, 0xfa, 0xb5, 0xd9, 0xa5, 0x2b, 0xab, 0xbe, 0xab, 0xfa, 0xb5, 0xb9, 0xad, 0xca, 0xea, 0xfe, 0xf7, - 0xda, 0xb5, 0xb8, 0xa5, 0x22, 0xab, 0xfa, 0xef, 0xda, 0xb5, 0xb9, 0xad, 0xa0, 0xba, 0xff, 0xd5, 0xfa, 0xad, 0xb9, 0xad, 0xef, 0xad, 0xb7, 0x7b, 0xda, 0xb5, 0xb9, 0xad, 0xaa, 0xba, 0x9f, 0xab, - 0xfa, 0xb5, 0xd9, 0xad, 0xb5, 0x55, 0xf5, 0xef, 0xfa, 0xb5, 0xd9, 0xad, 0x7d, 0xf5, 0xff, 0x2e, 0xfa, 0xb5, 0xd9, 0xad, 0xab, 0xfe, 0xbb, 0x80, 0x1a, 0xbe, 0xf9, 0xb5, 0xd5, 0x95, 0x8f, 0x0a, - 0x3a, 0xbe, 0xf9, 0xb5, 0xf5, 0xab, 0xaa, 0xea, 0x3a, 0xbe, 0x19, 0xb6, 0xaf, 0xab, 0xd5, 0x55, 0x3a, 0xbe, 0xf9, 0xb5, 0xb8, 0xfe, 0x7b, 0xd5, 0x1a, 0xbe, 0xf9, 0xb5, 0xb8, 0xab, 0x3f, 0xd7, - 0x3a, 0xbe, 0xf9, 0xb5, 0xcb, 0xff, 0xd5, 0x55, 0x1a, 0xbe, 0xd9, 0xb5, 0xa0, 0xfa, 0x7f, 0xff, 0xfa, 0xb5, 0xd9, 0xad, 0x08, 0x28, 0xbe, 0xff, 0xfa, 0xb5, 0xb9, 0xad, 0x00, 0x88, 0xea, 0xa9, - 0xfa, 0xb5, 0xd9, 0xad, 0x20, 0xaf, 0x77, 0xfd, 0xfa, 0xb5, 0xd9, 0xad, 0x20, 0xcf, 0xd5, 0xff, 0x1a, 0xb6, 0xd9, 0xad, 0x20, 0xea, 0xed, 0xff, 0xf9, 0xb5, 0xda, 0xad, 0x80, 0x8b, 0xaa, 0x8a, - 0x1a, 0xb6, 0xd9, 0xad, 0xbf, 0xbf, 0xbf, 0x2a, 0x1a, 0xb6, 0xd9, 0xad, 0x8b, 0x89, 0xaf, 0x00, 0x19, 0xbe, 0xfa, 0xad, 0xfe, 0xbf, 0xba, 0xaa, 0x1a, 0xbe, 0xf9, 0xb5, 0xf7, 0xfe, 0xdf, 0xbe, - 0x3a, 0xbe, 0xf9, 0xb5, 0xdf, 0x7f, 0xd7, 0xeb, 0x3a, 0xbe, 0xf9, 0xb5, 0xd5, 0xf7, 0xaf, 0x00, 0x3b, 0xbe, 0x19, 0xb6, 0xdd, 0x0a, 0x82, 0xea, 0x3a, 0xbe, 0x19, 0xb6, 0xff, 0x2e, 0xff, 0x5a, - 0x3a, 0xbe, 0xf9, 0xb5, 0xa2, 0xaa, 0xe7, 0xba, 0x3a, 0xbe, 0x1a, 0xb6, 0xff, 0x55, 0x5f, 0xab, 0x3a, 0xbe, 0xfa, 0xb5, 0xee, 0xae, 0xaa, 0x8a, 0x5a, 0xbe, 0xf9, 0xb5, 0xfd, 0xff, 0xab, 0x0a, - 0x7b, 0xbe, 0x19, 0xb6, 0xf5, 0x7f, 0xfd, 0x0a, 0x7b, 0xc6, 0x19, 0xbe, 0xd7, 0xff, 0xaa, 0x02, 0x7b, 0xc6, 0x19, 0xbe, 0xd5, 0xff, 0x2a, 0x2a, 0x9b, 0xce, 0x39, 0xbe, 0xf5, 0xaf, 0xab, 0x82, - 0x9b, 0xce, 0x5a, 0xc6, 0xfd, 0xff, 0xae, 0xba, 0x9b, 0xce, 0x7a, 0xc6, 0x55, 0xff, 0xaf, 0xab, 0x9b, 0xce, 0x7a, 0xc6, 0xaf, 0xab, 0xae, 0xfa, 0x9b, 0xce, 0x7a, 0xc6, 0xab, 0xaa, 0xaa, 0xeb, - 0x9a, 0xce, 0x7b, 0xc6, 0xa8, 0xaa, 0xaa, 0xbf, 0x9b, 0xce, 0x7a, 0xc6, 0xaa, 0xfa, 0xff, 0x6e, 0x9b, 0xce, 0x5a, 0xc6, 0xaa, 0xaa, 0xfa, 0xff, 0x7b, 0xce, 0x5a, 0xc6, 0xaa, 0xeb, 0xfa, 0xeb, - 0x7b, 0xce, 0x5a, 0xc6, 0xaa, 0xfa, 0xef, 0xbb, 0x7b, 0xce, 0x5a, 0xc6, 0xba, 0xde, 0xf7, 0xb5, 0x7b, 0xce, 0x5a, 0xbe, 0xaa, 0xae, 0xaa, 0xfe, 0x7b, 0xce, 0x5a, 0xc6, 0xaa, 0xea, 0x7d, 0xd5, - 0x7b, 0xce, 0x5a, 0xbe, 0xaa, 0xaa, 0xaf, 0xfb, 0x7b, 0xce, 0x5a, 0xbe, 0xaa, 0xea, 0xbf, 0xbf, 0x7b, 0xce, 0x5a, 0xc6, 0x2a, 0x2e, 0xbd, 0xd5, 0x7b, 0xce, 0x5a, 0xc6, 0x22, 0xaa, 0xab, 0xbd, - 0x9b, 0xce, 0x5a, 0xc6, 0xaa, 0xae, 0xfb, 0xff, 0x7b, 0xce, 0x5a, 0xc6, 0x2a, 0xaa, 0xea, 0xaf, 0x9b, 0xce, 0x7a, 0xc6, 0x7f, 0x5f, 0xdd, 0xf7, 0x9b, 0xce, 0x5a, 0xc6, 0xae, 0xaf, 0xfb, 0xee, - 0x7b, 0xce, 0x5a, 0xc6, 0x2a, 0xa0, 0xaa, 0xaa, 0x9b, 0xce, 0x7a, 0xc6, 0xfd, 0xd5, 0xde, 0xd5, 0x5a, 0xce, 0x9b, 0xc6, 0xfa, 0xaf, 0xff, 0xaf, 0x7b, 0xce, 0x5a, 0xc6, 0xa0, 0xaa, 0xfb, 0xff, - 0x7b, 0xc6, 0x5a, 0xc6, 0xfc, 0x0a, 0x80, 0xff, 0x7b, 0xc6, 0x5a, 0xc6, 0xeb, 0x0c, 0x8d, 0xa3, 0x7b, 0xc6, 0x5a, 0xbe, 0x22, 0xb0, 0xae, 0xef, 0x7a, 0xc6, 0x5b, 0xbe, 0x8a, 0xaa, 0xf2, 0xfd, - 0x7a, 0xc6, 0x3b, 0xbe, 0xf8, 0x88, 0x9f, 0xff, 0x7b, 0xc6, 0x1a, 0xbe, 0xa2, 0xaa, 0xeb, 0xfa, 0x7b, 0xc6, 0x3a, 0xbe, 0x22, 0xbb, 0xbf, 0xff, 0x7b, 0xc6, 0x5a, 0xbe, 0xaa, 0x29, 0x5f, 0xd7, - 0x7a, 0xc6, 0x5b, 0xbe, 0xfa, 0xfb, 0xeb, 0xbd, 0x7b, 0xc6, 0x3a, 0xbe, 0xaa, 0xea, 0xa3, 0xee, 0x7b, 0xc6, 0x3a, 0xbe, 0x0a, 0xab, 0xed, 0xff, 0x7b, 0xc6, 0x5a, 0xbe, 0x80, 0x2b, 0xa5, 0xeb, - 0x7b, 0xc6, 0x3a, 0xbe, 0x00, 0x20, 0x82, 0x0b, 0x7b, 0xce, 0x5a, 0xc6, 0xee, 0xdf, 0xff, 0x75, 0x7b, 0xce, 0x5a, 0xbe, 0xaa, 0xab, 0xfa, 0xbf, 0x7b, 0xc6, 0x5a, 0xbe, 0x2a, 0x20, 0x30, 0xaa, - 0x7b, 0xc6, 0x5a, 0xbe, 0xaa, 0xa0, 0xba, 0xea, 0x7b, 0xce, 0x5a, 0xbe, 0xfe, 0xae, 0xff, 0xff, 0x7b, 0xce, 0x5a, 0xbe, 0xae, 0xba, 0xfb, 0xaf, 0x7a, 0xc6, 0x5b, 0xbe, 0xa2, 0xab, 0xfe, 0xea, - 0x7b, 0xc6, 0x5a, 0xbe, 0xab, 0xaa, 0xee, 0x02, 0x7b, 0xc6, 0x5a, 0xbe, 0xaa, 0x28, 0x88, 0x88, 0x7b, 0xc6, 0x5a, 0xc6, 0x03, 0x02, 0x83, 0xc2, 0x7b, 0xce, 0x5a, 0xc6, 0xaa, 0xab, 0xbf, 0xff, - 0x5a, 0xce, 0x7b, 0xc6, 0xd5, 0x57, 0x55, 0xf6, 0x7b, 0xce, 0x5a, 0xc6, 0xee, 0xea, 0xea, 0xab, 0x7b, 0xce, 0x7a, 0xc6, 0xaf, 0xdf, 0x55, 0x7f, 0x7b, 0xce, 0x5a, 0xc6, 0xaa, 0xea, 0xfa, 0xeb, - 0x9b, 0xce, 0x7a, 0xc6, 0xfd, 0xf7, 0xf5, 0x75, 0x5a, 0xce, 0x9b, 0xc6, 0xeb, 0xff, 0xff, 0xee, 0x7b, 0xce, 0x5a, 0xc6, 0x2a, 0xb8, 0x8c, 0x2a, 0x7a, 0xce, 0x9b, 0xc6, 0xa0, 0xa8, 0xfb, 0x3a, - 0x7a, 0xce, 0x9b, 0xc6, 0xe7, 0xaa, 0xaa, 0xf0, 0x7a, 0xce, 0x9b, 0xc6, 0xaf, 0xaa, 0xea, 0xff, 0x9b, 0xce, 0x7a, 0xce, 0x7f, 0xaf, 0xef, 0xfe, 0x7b, 0xce, 0x9b, 0xc6, 0xa8, 0xfa, 0xba, 0x2a, - 0x9b, 0xce, 0x7a, 0xc6, 0xaa, 0xee, 0xff, 0xff, 0x7a, 0xce, 0x9b, 0xc6, 0xeb, 0xaa, 0xfa, 0xa0, 0x9b, 0xce, 0x7a, 0xc6, 0xba, 0xff, 0xef, 0xbf, 0x9b, 0xce, 0x7a, 0xc6, 0xff, 0xfb, 0xeb, 0xaa, - 0x9b, 0xce, 0x7a, 0xc6, 0xe2, 0xab, 0xaa, 0x80, 0xbb, 0xce, 0x7a, 0xce, 0xbb, 0xbf, 0xbf, 0xef, 0xbc, 0xce, 0x7a, 0xce, 0xba, 0xaf, 0xfe, 0xff, 0x7c, 0xd6, 0x9a, 0xc6, 0xaf, 0xfb, 0xff, 0xff, - 0x9c, 0xd6, 0x7a, 0xce, 0xbf, 0xfa, 0xff, 0xfb, 0x9b, 0xd6, 0x9a, 0xc6, 0xab, 0xab, 0xba, 0xab, 0xbb, 0xce, 0x7a, 0xce, 0xbf, 0xaa, 0xfa, 0xea, 0xbb, 0xd6, 0x7b, 0xce, 0xfb, 0xff, 0xbf, 0xff, - 0xbb, 0xd6, 0x9a, 0xce, 0xed, 0xff, 0xf7, 0xfd, 0xbc, 0xd6, 0x9a, 0xce, 0xab, 0xae, 0xee, 0xef, 0x9c, 0xd6, 0xba, 0xce, 0xbf, 0xff, 0xff, 0xff, 0xbc, 0xd6, 0x9a, 0xce, 0xaa, 0x2a, 0xaa, 0xa0, - 0xbc, 0xd6, 0x9b, 0xce, 0x02, 0x28, 0x20, 0xb0, 0xbc, 0xde, 0xbb, 0xce, 0xfe, 0xff, 0xab, 0xff, 0xdc, 0xd6, 0xbb, 0xd6, 0x56, 0x75, 0x55, 0x55, 0xdc, 0xde, 0xbb, 0xce, 0xbf, 0xff, 0xef, 0xbf, - 0xdc, 0xd6, 0xbb, 0xd6, 0x9d, 0xae, 0xaa, 0xba, 0xdc, 0xd6, 0xbb, 0xd6, 0xaa, 0xa8, 0xe8, 0x7a, 0xdc, 0xde, 0xbb, 0xd6, 0xff, 0xff, 0xf7, 0xdb, 0xdc, 0xde, 0xbb, 0xd6, 0xbd, 0xfb, 0x7f, 0xdd, - 0xdc, 0xde, 0xbb, 0xd6, 0xff, 0xf5, 0xff, 0xf5, 0xdc, 0xd6, 0xbb, 0xd6, 0xeb, 0xa5, 0xbb, 0xd6, 0xfc, 0xd6, 0xbb, 0xd6, 0xbf, 0xff, 0xbf, 0xff, 0xdc, 0xde, 0xbb, 0xd6, 0xdf, 0x7f, 0xef, 0x9f, - 0xda, 0xb5, 0xb8, 0xa5, 0xaa, 0xea, 0xbb, 0xbf, 0xda, 0xb5, 0xb9, 0xa5, 0xbe, 0x8b, 0xab, 0xab, 0xfa, 0xb5, 0xb8, 0xa5, 0xfa, 0xfb, 0xbf, 0xff, 0x98, 0xad, 0xd9, 0xa5, 0xf5, 0xf7, 0xae, 0x2f, - 0xd9, 0xb5, 0xb9, 0xa5, 0xf7, 0xaf, 0xaf, 0xba, 0xda, 0xb5, 0xb9, 0xad, 0xd7, 0xf7, 0xaa, 0x22, 0xfa, 0xb5, 0xb8, 0xad, 0xf7, 0xeb, 0xa3, 0x03, 0x1a, 0xbe, 0xd9, 0xad, 0xdf, 0xad, 0xae, 0xfb, - 0x1a, 0xbe, 0xd9, 0xad, 0xfb, 0xfa, 0xfa, 0xff, 0xfa, 0xb5, 0xd9, 0xad, 0xa8, 0x82, 0xea, 0xfa, 0x1a, 0xb6, 0xd9, 0xad, 0x2a, 0xba, 0xff, 0xff, 0x1a, 0xbe, 0xd9, 0xad, 0x0a, 0xbf, 0xdf, 0xfd, - 0x1a, 0xbe, 0xd9, 0xad, 0xaa, 0xea, 0xef, 0xe7, 0xfa, 0xb5, 0xd9, 0xad, 0x00, 0x2c, 0x00, 0xad, 0xfa, 0xbd, 0xd9, 0xad, 0xef, 0xfa, 0xeb, 0xff, 0xfa, 0xb5, 0xd9, 0xb5, 0x8d, 0x8c, 0x33, 0x21, - 0x1a, 0xb6, 0xd9, 0xb5, 0xb3, 0xae, 0xea, 0xff, 0xfa, 0xb5, 0xd9, 0xad, 0xee, 0xee, 0x22, 0x88, 0xfa, 0xb5, 0xb9, 0xad, 0xab, 0x22, 0x2a, 0xa8, 0xfa, 0xb5, 0xb9, 0xad, 0xee, 0xaa, 0x08, 0x00, - 0x1a, 0xb6, 0xd9, 0xad, 0xff, 0xfa, 0x0a, 0xa0, 0x1a, 0xbe, 0xb9, 0xad, 0xff, 0xff, 0xaa, 0x8a, 0x1a, 0xbe, 0xd9, 0xad, 0xff, 0xbf, 0xaa, 0x2a, 0x1a, 0xbe, 0xd9, 0xb5, 0xbd, 0xaf, 0x02, 0x00, - 0x1a, 0xbe, 0xf9, 0xb5, 0xf7, 0x02, 0x28, 0x38, 0x3a, 0xbe, 0xf9, 0xb5, 0xff, 0x6f, 0xaa, 0xae, 0xf9, 0xbd, 0x3a, 0xb6, 0xbf, 0xfe, 0xbe, 0xba, 0x3a, 0xbe, 0xf9, 0xb5, 0xbf, 0xaf, 0xa8, 0xae, - 0x3a, 0xbe, 0x19, 0xb6, 0x8b, 0x2a, 0xca, 0x02, 0x5a, 0xc6, 0x19, 0xb6, 0xef, 0xeb, 0xab, 0xae, 0x5b, 0xc6, 0x19, 0xb6, 0xbf, 0xee, 0xef, 0xac, 0x5a, 0xc6, 0x19, 0xb6, 0xdf, 0xbb, 0xaf, 0xaa, - 0x5b, 0xc6, 0x39, 0xbe, 0x55, 0xd5, 0x0b, 0x22, 0x7b, 0xc6, 0x3a, 0xbe, 0x55, 0xaf, 0x8b, 0x23, 0x9b, 0xce, 0x3a, 0xbe, 0x55, 0xff, 0xaa, 0xa2, 0x7b, 0xc6, 0x59, 0xbe, 0xf9, 0x0a, 0x00, 0x02, - 0x7b, 0xce, 0x5a, 0xbe, 0xbf, 0xaa, 0xae, 0xaa, 0x7b, 0xce, 0x5a, 0xbe, 0xaa, 0xaa, 0xab, 0xae, 0x9b, 0xce, 0x5a, 0xc6, 0xff, 0xbb, 0xff, 0x7f, 0x7b, 0xce, 0x5a, 0xc6, 0x82, 0x7a, 0xbd, 0xab, - 0x7a, 0xce, 0x9b, 0xc6, 0xea, 0xaf, 0xa0, 0x02, 0x7a, 0xce, 0x9b, 0xc6, 0x8f, 0xaa, 0xaa, 0x00, 0x7a, 0xce, 0x9b, 0xc6, 0xeb, 0xfe, 0x0a, 0xa8, 0x5a, 0xce, 0x9b, 0xc6, 0xaf, 0xbf, 0xfe, 0xea, - 0x7b, 0xce, 0x5a, 0xc6, 0xaa, 0x2c, 0xa0, 0xe8, 0x9b, 0xce, 0x5a, 0xc6, 0xea, 0xfe, 0xfa, 0xff, 0x7b, 0xce, 0x5a, 0xc6, 0xbe, 0xfa, 0xeb, 0xa5, 0x7b, 0xce, 0x5a, 0xc6, 0xaf, 0xae, 0xfe, 0xe7, - 0x7b, 0xc6, 0x5a, 0xc6, 0x0a, 0x38, 0x20, 0xbb, 0x7b, 0xc6, 0x5a, 0xc6, 0xfe, 0x03, 0xb8, 0x2d, 0x9b, 0xc6, 0x5a, 0xc6, 0x7b, 0x7e, 0xeb, 0x7f, 0x5b, 0xc6, 0x3a, 0xbe, 0x28, 0x08, 0x80, 0xe0, - 0x7b, 0xc6, 0x59, 0xbe, 0xea, 0xef, 0xfe, 0x77, 0x5b, 0xc6, 0x39, 0xbe, 0xa0, 0xba, 0x9b, 0xff, 0x3a, 0xc6, 0x7b, 0xbe, 0xff, 0xfb, 0xbf, 0xea, 0x7b, 0xc6, 0x3a, 0xbe, 0x8a, 0xaf, 0xee, 0x7f, - 0x7b, 0xc6, 0x3a, 0xbe, 0xa8, 0xaa, 0xae, 0xd5, 0x7b, 0xce, 0x3a, 0xbe, 0xaa, 0xaa, 0xff, 0xff, 0x7b, 0xce, 0x5a, 0xbe, 0xaa, 0xaf, 0xbf, 0xff, 0x7a, 0xce, 0x3b, 0xbe, 0x2a, 0xaa, 0xea, 0xfa, - 0x7b, 0xce, 0x5a, 0xbe, 0xaa, 0xaa, 0xba, 0xff, 0x7a, 0xce, 0x5b, 0xbe, 0xaa, 0xbb, 0xeb, 0xbf, 0x7a, 0xc6, 0x3b, 0xbe, 0x88, 0x88, 0xaa, 0xab, 0x7b, 0xce, 0x5a, 0xbe, 0xaa, 0xaf, 0xab, 0xef, - 0x7b, 0xc6, 0x5a, 0xbe, 0xa0, 0x8f, 0xaf, 0xae, 0x3a, 0xc6, 0x7b, 0xbe, 0xa2, 0xef, 0xfa, 0xba, 0x5a, 0xc6, 0x3b, 0xbe, 0x8a, 0xbf, 0xbe, 0xba, 0x3a, 0xc6, 0x5b, 0xbe, 0xea, 0x77, 0x7f, 0xff, - 0x7b, 0xc6, 0x1a, 0xbe, 0xfe, 0xee, 0xaf, 0x1b, 0x5b, 0xc6, 0x3a, 0xbe, 0xff, 0xf7, 0xfb, 0x77, 0x5b, 0xc6, 0x1a, 0xbe, 0xcb, 0xba, 0xa6, 0xfb, 0x5b, 0xc6, 0x1a, 0xbe, 0xbe, 0x2b, 0xaa, 0xee, - 0x5b, 0xc6, 0x1a, 0xbe, 0x28, 0xaa, 0xfb, 0xff, 0x5b, 0xc6, 0x3a, 0xb6, 0xaa, 0xaa, 0xbb, 0xfb, 0x7b, 0xc6, 0x3a, 0xbe, 0xe8, 0xbf, 0xff, 0xe7, 0x5b, 0xc6, 0x3a, 0xbe, 0xa8, 0xaa, 0xea, 0xe6, - 0x3a, 0xc6, 0x5b, 0xbe, 0xde, 0xea, 0xaa, 0xde, 0x3a, 0xc6, 0x9b, 0xbe, 0x6a, 0xaa, 0xaa, 0xaa, 0x3a, 0xc6, 0x7b, 0xbe, 0xa9, 0xaf, 0xfe, 0x88, 0x5b, 0xc6, 0x3a, 0xbe, 0x00, 0xc8, 0x80, 0xea, - 0x3b, 0xc6, 0x7a, 0xbe, 0xfb, 0xaa, 0xef, 0xfe, 0x7b, 0xc6, 0x3a, 0xbe, 0x8a, 0xaf, 0xbe, 0xfe, 0x7b, 0xce, 0x5a, 0xbe, 0xaf, 0xff, 0xff, 0xff, 0x7b, 0xc6, 0x3a, 0xbe, 0xa2, 0x2a, 0xba, 0xa8, - 0x7b, 0xce, 0x5a, 0xbe, 0xbb, 0xff, 0xff, 0xfb, 0x7b, 0xc6, 0x5a, 0xbe, 0xa2, 0xb9, 0xbf, 0xf6, 0x7b, 0xce, 0x5a, 0xbe, 0xbf, 0xab, 0xba, 0xab, 0x7b, 0xc6, 0x5a, 0xc6, 0x35, 0x2a, 0x82, 0xad, - 0x9b, 0xce, 0x5a, 0xc6, 0xef, 0x7f, 0xf7, 0x7d, 0x5b, 0xce, 0x9a, 0xc6, 0xaf, 0x9e, 0xaf, 0xff, 0x7b, 0xce, 0x5a, 0xc6, 0xeb, 0xbe, 0xab, 0xee, 0x9b, 0xc6, 0x7a, 0xc6, 0xe5, 0xfd, 0xff, 0x75, - 0x9b, 0xce, 0x5a, 0xc6, 0xef, 0xbb, 0xef, 0xef, 0x7a, 0xce, 0x9b, 0xc6, 0xe8, 0x2a, 0xcb, 0xba, 0x7a, 0xce, 0x9b, 0xc6, 0xab, 0xbe, 0xbe, 0x56, 0x9c, 0xce, 0x7a, 0xc6, 0xbf, 0xf7, 0xff, 0xbb, - 0x9b, 0xce, 0x7a, 0xc6, 0xfa, 0xff, 0x7f, 0xff, 0x7b, 0xce, 0x9a, 0xc6, 0xa2, 0x0a, 0xaa, 0xff, 0x9b, 0xce, 0x7a, 0xc6, 0xca, 0xfe, 0x5f, 0x7b, 0x9b, 0xce, 0x7a, 0xc6, 0xfe, 0xf5, 0xff, 0xff, - 0x9b, 0xce, 0x7a, 0xc6, 0xfe, 0xf6, 0xff, 0x5f, 0x7a, 0xce, 0x9b, 0xc6, 0x8a, 0xaa, 0xaf, 0xf8, 0x9b, 0xce, 0x7a, 0xc6, 0xab, 0xaa, 0xae, 0xab, 0x9c, 0xce, 0x7a, 0xc6, 0x2a, 0xaa, 0xaa, 0xaa, - 0x9b, 0xce, 0x7a, 0xc6, 0x22, 0x02, 0xaa, 0xab, 0x9b, 0xce, 0x7a, 0xc6, 0x22, 0xea, 0xae, 0xb2, 0x9b, 0xce, 0x7b, 0xce, 0x03, 0xaa, 0x7a, 0xe3, 0x9c, 0xd6, 0x7a, 0xce, 0xeb, 0xff, 0xff, 0xdd, - 0x9b, 0xce, 0x7b, 0xce, 0x38, 0x82, 0x0b, 0x07, 0xbb, 0xce, 0x7a, 0xce, 0xfe, 0xff, 0xaa, 0xff, 0x9c, 0xd6, 0x7a, 0xc6, 0xba, 0xaa, 0xaa, 0x3a, 0xba, 0xce, 0x9b, 0xce, 0x15, 0x5f, 0x55, 0x55, - 0xbc, 0xd6, 0x9b, 0xce, 0xb7, 0xf7, 0x7d, 0xd5, 0xbb, 0xd6, 0x9a, 0xce, 0xb9, 0xfe, 0xff, 0xff, 0xbb, 0xd6, 0x9b, 0xce, 0xaa, 0xab, 0xaa, 0xaa, 0xbc, 0xd6, 0x9b, 0xce, 0xea, 0xca, 0xaa, 0xaa, - 0x9a, 0xd6, 0xbc, 0xce, 0xaf, 0x7f, 0xfb, 0xab, 0xbc, 0xd6, 0x9b, 0xce, 0xa8, 0xaa, 0x2a, 0xaa, 0xdc, 0xd6, 0xbb, 0xd6, 0xd5, 0xdb, 0x79, 0x75, 0xdc, 0xd6, 0xbb, 0xd6, 0xd5, 0xef, 0x56, 0x5a, - 0xdc, 0xd6, 0xbb, 0xd6, 0x69, 0xeb, 0xdd, 0x55, 0xdc, 0xd6, 0xbb, 0xce, 0xaa, 0xaa, 0xba, 0xbe, 0xdc, 0xd6, 0xbb, 0xd6, 0xad, 0x5e, 0x57, 0xf5, 0xdc, 0xd6, 0xbb, 0xd6, 0xea, 0xbf, 0xfd, 0x77, - 0xdc, 0xde, 0xbb, 0xce, 0xee, 0xfb, 0xef, 0xeb, 0xdc, 0xde, 0xbb, 0xce, 0xea, 0xae, 0xfb, 0xee, 0xdc, 0xde, 0xbb, 0xce, 0xaa, 0xaf, 0xef, 0xef, 0xdc, 0xd6, 0xbb, 0xd6, 0x6b, 0xba, 0x6a, 0xe3, -}; diff --git a/progs/tests/texcompress2.c b/progs/tests/texcompress2.c deleted file mode 100644 index b95aca9fb9..0000000000 --- a/progs/tests/texcompress2.c +++ /dev/null @@ -1,292 +0,0 @@ -/* - * Test texture compression. - */ - - -#include <assert.h> -#include <stdio.h> -#include <GL/glew.h> -#include <GL/glut.h> -#include "readtex.c" - -#define IMAGE_FILE "../images/arch.rgb" - -static int ImgWidth, ImgHeight; -static GLenum ImgFormat; -static GLenum CompFormat; -static GLfloat EyeDist = 5.0; -static GLfloat Rot = 0.0; -const GLenum Target = GL_TEXTURE_2D; - - -static void -CheckError(int line) -{ - GLenum err = glGetError(); - if (err) { - printf("GL Error %d at line %d\n", (int) err, line); - } -} - - -static const char * -LookupFormat(GLenum format) -{ - switch (format) { - case GL_COMPRESSED_RGB_S3TC_DXT1_EXT: - return "GL_COMPRESSED_RGB_S3TC_DXT1_EXT"; - case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: - return "GL_COMPRESSED_RGBA_S3TC_DXT1_EXT"; - case GL_COMPRESSED_RGBA_S3TC_DXT3_EXT: - return "GL_COMPRESSED_RGBA_S3TC_DXT3_EXT"; - default: - return "other"; - } -} - - -static void -TestSubTex(void) -{ - GLboolean all = 0*GL_TRUE; - GLubyte *buffer; - GLint size, fmt; - - glGetTexLevelParameteriv(Target, 0, - GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB, &size); - glGetTexLevelParameteriv(Target, 0, GL_TEXTURE_INTERNAL_FORMAT, &fmt); - - buffer = (GLubyte *) malloc(size); - glGetCompressedTexImageARB(Target, 0, buffer); - - printf("Testing sub-texture replacement\n"); - if (all) - glCompressedTexImage2DARB(Target, 0, - fmt, ImgWidth, ImgHeight, 0, - size, buffer); - else { - /* bottom half */ - glCompressedTexSubImage2DARB(Target, 0, - 0, 0, /* pos */ - ImgWidth, ImgHeight / 2, - fmt, size/2, buffer); - /* top half */ - glCompressedTexSubImage2DARB(Target, 0, - 0, ImgHeight / 2, /* pos */ - ImgWidth, ImgHeight / 2, - fmt, size/2, buffer + size / 2); - } - - free(buffer); -} - - -static void -TestGetTex(void) -{ - GLubyte *buffer; - - buffer = (GLubyte *) malloc(3 * ImgWidth * ImgHeight); - - glGetTexImage(GL_TEXTURE_2D, - 0, - GL_RGB, - GL_UNSIGNED_BYTE, - buffer); - - free(buffer); -} - - -static void -LoadCompressedImage(const char *file) -{ - const GLenum filter = GL_LINEAR; - GLubyte *image; - GLint p; - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glPixelStorei(GL_PACK_ALIGNMENT, 1); - - /* - * Load image and scale if needed. - */ - image = LoadRGBImage( file, &ImgWidth, &ImgHeight, &ImgFormat ); - if (!image) { - printf("Couldn't read %s\n", IMAGE_FILE); - exit(0); - } - printf("Image is %d x %d\n", ImgWidth, ImgHeight); - - /* power of two */ - assert(ImgWidth == 128 || ImgWidth == 256 || ImgWidth == 512); - assert(ImgWidth == 128 || ImgHeight == 256 || ImgHeight == 512); - - if (ImgFormat == GL_RGB) - CompFormat = GL_COMPRESSED_RGB_S3TC_DXT1_EXT; - else - CompFormat = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT; - - if (ImgFormat == GL_RGBA) { - int i, numAlpha = 0; - for (i = 0; i < ImgWidth * ImgHeight; i++) { - if (image[i*4+3] != 0 && image[i*4+3] != 0xff) { - numAlpha++; - } - if (image[i*4+3] == 0) - image[i*4+3] = 4 * i / ImgWidth; - } - printf("Num Alpha !=0,255: %d\n", numAlpha); - } - - CompFormat = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT; - - - /* - * Give image to OpenGL and have it compress it. - */ - glTexImage2D(Target, 0, CompFormat, ImgWidth, ImgHeight, 0, - ImgFormat, GL_UNSIGNED_BYTE, image); - CheckError(__LINE__); - - free(image); - - glGetTexLevelParameteriv(Target, 0, GL_TEXTURE_INTERNAL_FORMAT, &p); - printf("Compressed Internal Format: %s (0x%x)\n", LookupFormat(p), p); - assert(p == CompFormat); - - printf("Original size: %d bytes\n", ImgWidth * ImgHeight * 3); - glGetTexLevelParameteriv(Target, 0, GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB, &p); - printf("Compressed size: %d bytes\n", p); - - glTexParameteri(Target, GL_TEXTURE_MIN_FILTER, filter); - glTexParameteri(Target, GL_TEXTURE_MAG_FILTER, filter); - - if (0) - TestSubTex(); - else - TestGetTex(); - -} - - -static void -Init(const char *file) -{ - GLint numFormats, formats[100]; - GLint p; - - if (!glutExtensionSupported("GL_ARB_texture_compression")) { - printf("Sorry, GL_ARB_texture_compression is required.\n"); - exit(1); - } - if (!glutExtensionSupported("GL_EXT_texture_compression_s3tc")) { - printf("Sorry, GL_EXT_texture_compression_s3tc is required.\n"); - exit(1); - } - - printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - - glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB, &numFormats); - glGetIntegerv(GL_COMPRESSED_TEXTURE_FORMATS_ARB, formats); - printf("%d supported compression formats: ", numFormats); - for (p = 0; p < numFormats; p++) - printf("0x%x ", formats[p]); - printf("\n"); - - LoadCompressedImage(file); - - glEnable(GL_TEXTURE_2D); - - if (ImgFormat == GL_RGBA) { - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glEnable(GL_BLEND); - } -} - - -static void -Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum(-1, 1, -1, 1, 4, 100); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); -} - - -static void -Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 'd': - EyeDist -= 1.0; - if (EyeDist < 4.0) - EyeDist = 4.0; - break; - case 'D': - EyeDist += 1.0; - break; - case 'z': - Rot += 5.0; - break; - case 'Z': - Rot -= 5.0; - break; - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void -Draw( void ) -{ - glClearColor(0.3, 0.3, .8, 0); - glClear(GL_COLOR_BUFFER_BIT); - - glPushMatrix(); - glTranslatef(0, 0, -(EyeDist+0.01)); - glRotatef(Rot, 0, 0, 1); - glBegin(GL_POLYGON); - glTexCoord2f(0, 0); glVertex2f(-1, -1); - glTexCoord2f(1, 0); glVertex2f( 1, -1); - glTexCoord2f(1, 1); glVertex2f( 1, 1); - glTexCoord2f(0, 1); glVertex2f(-1, 1); - glEnd(); - glPopMatrix(); - - glutSwapBuffers(); -} - - -int -main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowSize( 600, 600 ); - - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE); - - glutCreateWindow(argv[0]); - glewInit(); - - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Draw ); - - if (argc > 1) - Init(argv[1]); - else - Init(IMAGE_FILE); - - glutMainLoop(); - return 0; -} diff --git a/progs/tests/texcompsub.c b/progs/tests/texcompsub.c deleted file mode 100644 index 215f5711d9..0000000000 --- a/progs/tests/texcompsub.c +++ /dev/null @@ -1,183 +0,0 @@ -/* - * Test texture compression. - */ - - -#include <assert.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <GL/glew.h> -#include <GL/glut.h> - -#include "texcomp_image.h" - -static int ImgWidth = 512; -static int ImgHeight = 512; -static GLenum CompFormat = GL_COMPRESSED_RGBA_S3TC_DXT1_EXT; -static GLfloat EyeDist = 5.0; -static GLfloat Rot = 0.0; -const GLenum Target = GL_TEXTURE_2D; - - -static void -CheckError(int line) -{ - GLenum err = glGetError(); - if (err) { - printf("GL Error %d at line %d\n", (int) err, line); - } -} - -static void -LoadCompressedImage(void) -{ - unsigned char ImgDataTemp[ImgSize / 4]; - unsigned i; - const GLenum filter = GL_LINEAR; - const int half = ImgSize / 2; - - glTexImage2D(Target, 0, CompFormat, ImgWidth, ImgHeight, 0, - GL_RGB, GL_UNSIGNED_BYTE, NULL); - - /* bottom half */ - glCompressedTexSubImage2DARB(Target, 0, - 0, 0, /* pos */ - ImgWidth, ImgHeight / 2, - CompFormat, ImgSize / 2, ImgData /*+ ImgSize / 2*/); - - /* top left */ - for (i = 0; i < ImgHeight / 8; i++) { - memcpy(&ImgDataTemp[i * ImgWidth], &ImgData[half + i * 2 * ImgWidth], ImgWidth); - } - glCompressedTexSubImage2DARB(Target, 0, - 0, ImgHeight / 2, /* pos */ - ImgWidth / 2, ImgHeight / 2, - CompFormat, ImgSize / 4, ImgDataTemp); - - /* top right */ - for (i = 0; i < ImgHeight / 8; i++) { - memcpy(&ImgDataTemp[i * ImgWidth], &ImgData[half + i * 2 * ImgWidth + ImgWidth], ImgWidth); - } - glCompressedTexSubImage2DARB(Target, 0, - ImgWidth / 2, ImgHeight / 2, /* pos */ - ImgWidth / 2, ImgHeight / 2, - CompFormat, ImgSize / 4, ImgDataTemp); - - glTexParameteri(Target, GL_TEXTURE_MIN_FILTER, filter); - glTexParameteri(Target, GL_TEXTURE_MAG_FILTER, filter); -} - -static void -Init() -{ - GLint numFormats, formats[100]; - GLint p; - - if (!glutExtensionSupported("GL_ARB_texture_compression")) { - printf("Sorry, GL_ARB_texture_compression is required.\n"); - exit(1); - } - if (!glutExtensionSupported("GL_EXT_texture_compression_s3tc")) { - printf("Sorry, GL_EXT_texture_compression_s3tc is required.\n"); - exit(1); - } - - printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - - glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB, &numFormats); - glGetIntegerv(GL_COMPRESSED_TEXTURE_FORMATS_ARB, formats); - printf("%d supported compression formats: ", numFormats); - for (p = 0; p < numFormats; p++) - printf("0x%x ", formats[p]); - printf("\n"); - - glEnable(GL_TEXTURE_2D); - - LoadCompressedImage(); -} - - -static void -Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum(-1, 1, -1, 1, 4, 100); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); -} - - -static void -Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 'd': - EyeDist -= 1.0; - if (EyeDist < 4.0) - EyeDist = 4.0; - break; - case 'D': - EyeDist += 1.0; - break; - case 'z': - Rot += 5.0; - break; - case 'Z': - Rot -= 5.0; - break; - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void -Draw( void ) -{ - glClearColor(0.3, 0.3, .8, 0); - glClear(GL_COLOR_BUFFER_BIT); - - CheckError(__LINE__); - glPushMatrix(); - glTranslatef(0, 0, -(EyeDist+0.01)); - glRotatef(Rot, 0, 0, 1); - glBegin(GL_POLYGON); - glTexCoord2f(0, 0); glVertex2f(-1, -1); - glTexCoord2f(1, 0); glVertex2f( 1, -1); - glTexCoord2f(1, 1); glVertex2f( 1, 1); - glTexCoord2f(0, 1); glVertex2f(-1, 1); - glEnd(); - glPopMatrix(); - - glutSwapBuffers(); -} - - -int -main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowSize( 600, 600 ); - - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE); - - glutCreateWindow(argv[0]); - glewInit(); - - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Draw ); - - Init(); - - glutMainLoop(); - return 0; -} diff --git a/progs/tests/texdown.c b/progs/tests/texdown.c deleted file mode 100644 index 92df01b83d..0000000000 --- a/progs/tests/texdown.c +++ /dev/null @@ -1,478 +0,0 @@ - -/* - * Copyright (C) 1999 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - - -/* - * texdown - * - * Measure texture download speed. - * Use keyboard to change texture size, format, datatype, scale/bias, - * subimageload, etc. - * - * Brian Paul 28 January 2000 - */ - - -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glut.h> - - -static GLsizei MaxSize = 2048; -static GLsizei TexWidth = 1024, TexHeight = 1024, TexBorder = 0; -static GLboolean ScaleAndBias = GL_FALSE; -static GLboolean SubImage = GL_FALSE; -static GLdouble DownloadRate = 0.0; /* texels/sec */ - -static GLuint Mode = 0; - - -/* Try and avoid L2 cache effects by cycling through a small number of - * textures. - * - * At the initial size of 1024x1024x4 == 4mbyte, say 8 textures will - * keep us out of most caches at 32mb total. - * - * This turns into a fairly interesting question of what exactly you - * expect to be in cache in normal usage, and what you think should be - * outside. There's no rules for this, no reason to favour one usage - * over another except what the application you care about happens to - * resemble most closely. - * - * - Should the client texture image be in L2 cache? Has it just been - * generated or read from disk? - * - Does the application really use >1 texture, or is it constantly - * updating one image in-place? - * - * Different answers will favour different texture upload mechanisms. - * To upload an image that is purely outside of cache, a DMA-based - * upload will probably win, whereas for small, in-cache textures, - * copying looks good. - */ -#define NR_TEXOBJ 4 -static GLuint TexObj[NR_TEXOBJ]; - - -struct FormatRec { - GLenum Format; - GLenum Type; - GLenum IntFormat; - GLint TexelSize; -}; - - -static const struct FormatRec FormatTable[] = { - /* Format Type IntFormat TexelSize */ - { GL_BGRA, GL_UNSIGNED_BYTE, GL_RGBA, 4 }, - { GL_RGB, GL_UNSIGNED_BYTE, GL_RGB, 3 }, - { GL_RGBA, GL_UNSIGNED_BYTE, GL_RGBA, 4 }, - { GL_RGBA, GL_UNSIGNED_BYTE, GL_RGB, 4 }, - { GL_RGB, GL_UNSIGNED_SHORT_5_6_5, GL_RGB, 2 }, - { GL_LUMINANCE, GL_UNSIGNED_BYTE, GL_LUMINANCE, 1 }, - { GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, GL_LUMINANCE_ALPHA, 2 }, - { GL_ALPHA, GL_UNSIGNED_BYTE, GL_ALPHA, 1 }, -}; -static GLint Format; - -#define NUM_FORMATS (sizeof(FormatTable)/sizeof(FormatTable[0])) - -static int -BytesPerTexel(GLint format) -{ - return FormatTable[format].TexelSize; -} - - -static const char * -FormatStr(GLenum format) -{ - switch (format) { - case GL_RGB: - return "GL_RGB"; - case GL_RGBA: - return "GL_RGBA"; - case GL_BGRA: - return "GL_BGRA"; - case GL_LUMINANCE: - return "GL_LUMINANCE"; - case GL_LUMINANCE_ALPHA: - return "GL_LUMINANCE_ALPHA"; - case GL_ALPHA: - return "GL_ALPHA"; - default: - return ""; - } -} - - -static const char * -TypeStr(GLenum type) -{ - switch (type) { - case GL_UNSIGNED_BYTE: - return "GL_UNSIGNED_BYTE"; - case GL_UNSIGNED_SHORT: - return "GL_UNSIGNED_SHORT"; - case GL_UNSIGNED_SHORT_5_6_5: - return "GL_UNSIGNED_SHORT_5_6_5"; - case GL_UNSIGNED_SHORT_5_6_5_REV: - return "GL_UNSIGNED_SHORT_5_6_5_REV"; - default: - return ""; - } -} - -/* On x86, there is a performance cliff for memcpy to texture memory - * for sources below 64 byte alignment. We do our best with this in - * the driver, but it is better if the images are correctly aligned to - * start with: - */ -#define ALIGN (1<<12) - -static unsigned long align(unsigned long value, unsigned long a) -{ - return (value + a - 1) & ~(a-1); -} - -static void -MeasureDownloadRate(void) -{ - const int w = TexWidth + 2 * TexBorder; - const int h = TexHeight + 2 * TexBorder; - const int image_bytes = align(w * h * BytesPerTexel(Format), ALIGN); - const int bytes = image_bytes * NR_TEXOBJ; - GLubyte *orig_texImage, *orig_getImage; - GLubyte *texImage; - GLdouble t0, t1, time; - int count; - int i; - int offset = 0; - GLdouble total = 0; /* ints will tend to overflow */ - - printf("allocating %d bytes for %d %dx%d images\n", - bytes, NR_TEXOBJ, w, h); - - orig_texImage = (GLubyte *) malloc(bytes + ALIGN); - orig_getImage = (GLubyte *) malloc(image_bytes + ALIGN); - if (!orig_texImage || !orig_getImage) { - DownloadRate = 0.0; - free(orig_texImage); - free(orig_getImage); - return; - } - - printf("alloc %p %p\n", orig_texImage, orig_getImage); - - texImage = (GLubyte *)align((unsigned long)orig_texImage, ALIGN); - - for (i = 1; !(((unsigned long)texImage) & i); i<<=1) - ; - printf("texture image alignment: %d bytes (%p)\n", i, texImage); - - for (i = 0; i < bytes; i++) { - texImage[i] = i & 0xff; - } - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glPixelStorei(GL_PACK_ALIGNMENT, 1); - - if (ScaleAndBias) { - glPixelTransferf(GL_RED_SCALE, 0.5); - glPixelTransferf(GL_GREEN_SCALE, 0.5); - glPixelTransferf(GL_BLUE_SCALE, 0.5); - glPixelTransferf(GL_RED_BIAS, 0.5); - glPixelTransferf(GL_GREEN_BIAS, 0.5); - glPixelTransferf(GL_BLUE_BIAS, 0.5); - } - else { - glPixelTransferf(GL_RED_SCALE, 1.0); - glPixelTransferf(GL_GREEN_SCALE, 1.0); - glPixelTransferf(GL_BLUE_SCALE, 1.0); - glPixelTransferf(GL_RED_BIAS, 0.0); - glPixelTransferf(GL_GREEN_BIAS, 0.0); - glPixelTransferf(GL_BLUE_BIAS, 0.0); - } - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glEnable(GL_TEXTURE_2D); - - count = 0; - t0 = glutGet(GLUT_ELAPSED_TIME) * 0.001; - do { - int img = count%NR_TEXOBJ; - GLubyte *img_ptr = texImage + img * image_bytes; - - glBindTexture(GL_TEXTURE_2D, TexObj[img]); - - if (SubImage && count > 0) { - /* Only update a portion of the image each iteration. This - * is presumably why you'd want to use texsubimage, otherwise - * you may as well just call teximage again. - * - * A bigger question is whether to use a pointer that moves - * with each call, ie does the incoming data come from L2 - * cache under normal circumstances, or is it pulled from - * uncached memory? - * - * There's a good argument to say L2 cache, ie you'd expect - * the data to have been recently generated. It's possible - * that it could have come from a file read, which may or may - * not have gone through the cpu. - */ - glTexSubImage2D(GL_TEXTURE_2D, 0, - -TexBorder, - -TexBorder + offset * h/8, - w, - h/8, - FormatTable[Format].Format, - FormatTable[Format].Type, -#if 1 - texImage /* likely in L2$ */ -#else - img_ptr + offset * bytes/8 /* unlikely in L2$ */ -#endif - ); - offset += 1; - offset %= 8; - total += w * h / 8; - } - else { - glTexImage2D(GL_TEXTURE_2D, 0, - FormatTable[Format].IntFormat, w, h, TexBorder, - FormatTable[Format].Format, - FormatTable[Format].Type, - img_ptr); - total += w*h; - } - - /* draw a tiny polygon to force texture into texram */ - glBegin(GL_TRIANGLES); - glTexCoord2f(0, 0); glVertex2f(1, 1); - glTexCoord2f(1, 0); glVertex2f(3, 1); - glTexCoord2f(0.5, 1); glVertex2f(2, 3); - glEnd(); - - t1 = glutGet(GLUT_ELAPSED_TIME) * 0.001; - time = t1 - t0; - count++; - } while (time < 3.0); - - glDisable(GL_TEXTURE_2D); - - printf("total texels=%f time=%f\n", total, time); - DownloadRate = total / time; - - - free(orig_texImage); - free(orig_getImage); - - { - GLint err = glGetError(); - if (err) - printf("GL error %d\n", err); - } -} - - -static void -PrintString(const char *s) -{ - while (*s) { - glutBitmapCharacter(GLUT_BITMAP_8_BY_13, (int) *s); - s++; - } -} - - -static void -Display(void) -{ - const int w = TexWidth + 2 * TexBorder; - const int h = TexHeight + 2 * TexBorder; - char s[1000]; - - glClear(GL_COLOR_BUFFER_BIT); - - glRasterPos2i(10, 80); - sprintf(s, "Texture size[cursor]: %d x %d Border[b]: %d", w, h, TexBorder); - PrintString(s); - - glRasterPos2i(10, 65); - sprintf(s, "Format[f]: %s Type: %s IntFormat: %s", - FormatStr(FormatTable[Format].Format), - TypeStr( FormatTable[Format].Type), - FormatStr(FormatTable[Format].IntFormat)); - PrintString(s); - - glRasterPos2i(10, 50); - sprintf(s, "Pixel Scale&Bias[p]: %s TexSubImage[s]: %s", - ScaleAndBias ? "Yes" : "No", - SubImage ? "Yes" : "No"); - PrintString(s); - - if (Mode == 0) { - glRasterPos2i(200, 10); - sprintf(s, "...Measuring..."); - PrintString(s); - glutSwapBuffers(); - glutPostRedisplay(); - Mode++; - } - else if (Mode == 1) { - MeasureDownloadRate(); - glutPostRedisplay(); - Mode++; - } - else { - /* show results */ - glRasterPos2i(10, 10); - sprintf(s, "Download rate: %g Mtexels/second %g MB/second", - DownloadRate / 1000000.0, - DownloadRate * BytesPerTexel(Format) / 1000000.0); - PrintString(s); - { - GLint r, g, b, a, l, i; - glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_RED_SIZE, &r); - glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_GREEN_SIZE, &g); - glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_BLUE_SIZE, &b); - glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_ALPHA_SIZE, &a); - glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_LUMINANCE_SIZE, &l); - glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_INTENSITY_SIZE, &i); - sprintf(s, "TexelBits: R=%d G=%d B=%d A=%d L=%d I=%d", r, g, b, a, l, i); - glRasterPos2i(10, 25); - PrintString(s); - } - - glutSwapBuffers(); - } -} - - -static void -Reshape(int width, int height) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glOrtho(0, width, 0, height, -1, 1); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); -} - - - -static void -Key(unsigned char key, int x, int y) -{ - (void) x; - (void) y; - switch (key) { - case ' ': - Mode = 0; - break; - case 'b': - /* toggle border */ - TexBorder = 1 - TexBorder; - Mode = 0; - break; - case 'f': - /* change format */ - Format = (Format + 1) % NUM_FORMATS; - Mode = 0; - break; - case 'F': - /* change format */ - Format = (Format - 1) % NUM_FORMATS; - Mode = 0; - break; - case 'p': - /* toggle border */ - ScaleAndBias = !ScaleAndBias; - Mode = 0; - break; - case 's': - SubImage = !SubImage; - Mode = 0; - break; - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void -SpecialKey(int key, int x, int y) -{ - (void) x; - (void) y; - switch (key) { - case GLUT_KEY_UP: - if (TexHeight < MaxSize) - TexHeight *= 2; - break; - case GLUT_KEY_DOWN: - if (TexHeight > 1) - TexHeight /= 2; - break; - case GLUT_KEY_LEFT: - if (TexWidth > 1) - TexWidth /= 2; - break; - case GLUT_KEY_RIGHT: - if (TexWidth < MaxSize) - TexWidth *= 2; - break; - } - Mode = 0; - glutPostRedisplay(); -} - - -static void -Init(void) -{ - printf("GL_VENDOR = %s\n", (const char *) glGetString(GL_VENDOR)); - printf("GL_VERSION = %s\n", (const char *) glGetString(GL_VERSION)); - printf("GL_RENDERER = %s\n", (const char *) glGetString(GL_RENDERER)); -} - - -int -main(int argc, char *argv[]) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 600, 100 ); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH ); - glutCreateWindow(argv[0]); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutSpecialFunc( SpecialKey ); - glutDisplayFunc( Display ); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/texfilt.c b/progs/tests/texfilt.c deleted file mode 100644 index fa919dba62..0000000000 --- a/progs/tests/texfilt.c +++ /dev/null @@ -1,400 +0,0 @@ -/* - * (C) Copyright IBM Corporation 2005 - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * on the rights to use, copy, modify, merge, publish, distribute, sub - * license, and/or sell copies of the Software, and to permit persons to whom - * the Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL - * IBM AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - * USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - -const GLenum filter_modes[] = { - GL_NEAREST, - GL_LINEAR, - GL_NEAREST_MIPMAP_NEAREST, - GL_NEAREST_MIPMAP_LINEAR, - GL_LINEAR_MIPMAP_NEAREST, - GL_LINEAR_MIPMAP_LINEAR, -}; - -static GLenum min_filter = GL_LINEAR_MIPMAP_LINEAR; -static GLenum mag_filter = GL_LINEAR; - -static unsigned segments = 64; -static GLfloat * position_data = NULL; -static GLfloat * texcoord_data = NULL; -static GLfloat max_anisotropy = 0.0; -static GLfloat anisotropy = 1.0; - -static void generate_tunnel( unsigned num_segs, GLfloat ** pos_data, - GLfloat ** tex_data ); -static void generate_textures( unsigned mode ); - -#define min(a,b) ( (a) < (b) ) ? (a) : (b) -#define max(a,b) ( (a) > (b) ) ? (a) : (b) - - -static void Display( void ) -{ - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, min_filter ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, mag_filter ); - - if ( max_anisotropy > 0.0 ) { - glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, - anisotropy ); - } - - glClear( GL_COLOR_BUFFER_BIT ); - glLoadIdentity(); - glTranslatef( 0.0f, 0.0f, -19.0f ); - - glVertexPointer( 4, GL_FLOAT, 0, position_data ); - glTexCoordPointer( 2, GL_FLOAT, 0, texcoord_data ); - glEnableClientState( GL_VERTEX_ARRAY ); - glEnableClientState( GL_TEXTURE_COORD_ARRAY ); - glDrawArrays( GL_QUADS, 0, 4 * segments ); - glutSwapBuffers(); -} - - -static void Reshape( int width, int height ) -{ - glViewport(0, 0, width, height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(45.0f, (GLfloat)(width)/(GLfloat)(height), 0.1f, 100.0f); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - - -static void Key( unsigned char key, int x, int y ) -{ - GLfloat new_anisotropy = anisotropy; - - (void) x; - (void) y; - - - switch( key ) { - case 'a': { - new_anisotropy = anisotropy - 1.0; - break; - } - - case 'A': { - new_anisotropy = anisotropy + 1.0; - break; - } - - case 's': { - segments--; - if ( segments < 3 ) { - segments = 3; - } - generate_tunnel( segments, & position_data, & texcoord_data ); - break; - } - - case 'S': { - segments++; - if ( segments > 128 ) { - segments = 128; - } - generate_tunnel( segments, & position_data, & texcoord_data ); - break; - } - case 'q': - case 'Q': - case 27: - exit(0); - break; - } - - new_anisotropy = max( new_anisotropy, 1.0 ); - new_anisotropy = min( new_anisotropy, max_anisotropy ); - if ( new_anisotropy != anisotropy ) { - anisotropy = new_anisotropy; - printf( "Texture anisotropy: %f%s\n", anisotropy, - (anisotropy == 1.0) ? " (disabled)" : "" ); - } - - glutPostRedisplay(); -} - - -static void SpecialKey( int key, int x, int y ) -{ - (void) x; - (void) y; - (void) key; - glutPostRedisplay(); -} - - -static void menu_handler( int selection ) -{ - switch( selection >> 3 ) { - case 0: - glBindTexture( GL_TEXTURE_2D, selection ); - break; - - case 1: - min_filter = filter_modes[ selection & 7 ]; - break; - - case 2: - mag_filter = filter_modes[ selection & 7 ]; - break; - } - - glutPostRedisplay(); -} - - -static void Init( void ) -{ - glDisable(GL_CULL_FACE); - glEnable(GL_TEXTURE_2D); - glClearColor(0.0f, 0.0f, 0.4f, 0.0f); - glShadeModel(GL_SMOOTH); - glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); - - generate_tunnel( segments, & position_data, & texcoord_data ); - - glBindTexture( GL_TEXTURE_2D, 1 ); - generate_textures(1); - - glBindTexture( GL_TEXTURE_2D, 2 ); - generate_textures(2); - - glBindTexture( GL_TEXTURE_2D, 3 ); - generate_textures(3); - - if ( glutExtensionSupported( "GL_EXT_texture_filter_anisotropic" ) ) { - glGetFloatv( GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, & max_anisotropy ); - } - - printf("Maximum texture anisotropy: %f\n", max_anisotropy ); - - /* Create the menus. */ - - glutCreateMenu( menu_handler ); - glutAddMenuEntry( "Min filter: GL_NEAREST", 8 + 0 ); - glutAddMenuEntry( "Min filter: GL_LINEAR", 8 + 1 ); - glutAddMenuEntry( "Min filter: GL_NEAREST_MIMMAP_NEAREST", 8 + 2 ); - glutAddMenuEntry( "Min filter: GL_NEAREST_MIMMAP_LINEAR", 8 + 3 ); - glutAddMenuEntry( "Min filter: GL_LINEAR_MIMMAP_NEAREST", 8 + 4 ); - glutAddMenuEntry( "Min filter: GL_LINEAR_MIMMAP_LINEAR", 8 + 5 ); - glutAddMenuEntry( "Mag filter: GL_NEAREST", 16 + 0 ); - glutAddMenuEntry( "Mag filter: GL_LINEAR", 16 + 1 ); - glutAddMenuEntry( "Texture: regular mipmaps", 1 ); - glutAddMenuEntry( "Texture: blended mipmaps", 2 ); - glutAddMenuEntry( "Texture: color mipmaps", 3 ); - glutAttachMenu( GLUT_RIGHT_BUTTON ); -} - - -static void generate_tunnel( unsigned num_segs, GLfloat ** pos_data, - GLfloat ** tex_data ) -{ - const GLfloat far_distance = 20.0f; - const GLfloat near_distance = -90.0f; - const GLfloat far_tex = 30.0f; - const GLfloat near_tex = 0.0f; - const GLfloat angle_step = (2 * M_PI) / num_segs; - const GLfloat tex_coord_step = 2.0 / num_segs; - GLfloat angle = 0.0f; - GLfloat tex_coord = 0.0f; - unsigned i; - GLfloat * position; - GLfloat * texture; - - - position = realloc( *pos_data, sizeof( GLfloat ) * num_segs * 4 * 4 ); - texture = realloc( *tex_data, sizeof( GLfloat ) * num_segs * 4 * 2 ); - - *pos_data = position; - *tex_data = texture; - - for ( i = 0 ; i < num_segs ; i++ ) { - position[0] = 2.5 * sinf( angle ); - position[1] = 2.5 * cosf( angle ); - position[2] = (i & 1) ? far_distance : near_distance; - position[3] = 1.0f; - - position[4] = position[0]; - position[5] = position[1]; - position[6] = (i & 1) ? near_distance : far_distance; - position[7] = 1.0f; - - position += 8; - - texture[0] = tex_coord; - texture[1] = (i & 1) ? far_tex : near_tex; - texture += 2; - - texture[0] = tex_coord; - texture[1] = (i & 1) ? near_tex : far_tex; - texture += 2; - - angle += angle_step; - tex_coord += tex_coord_step; - - position[0] = 2.5 * sinf( angle ); - position[1] = 2.5 * cosf( angle ); - position[2] = (i & 1) ? near_distance : far_distance; - position[3] = 1.0f; - - position[4] = position[0]; - position[5] = position[1]; - position[6] = (i & 1) ? far_distance : near_distance; - position[7] = 1.0f; - - position += 8; - - texture[0] = tex_coord; - texture[1] = (i & 1) ? near_tex : far_tex; - texture += 2; - - texture[0] = tex_coord; - texture[1] = (i & 1) ? far_tex : near_tex; - texture += 2; - } -} - - -static void generate_textures( unsigned mode ) -{ -#define LEVEL_COLORS 6 - const GLfloat colors[LEVEL_COLORS][3] = { - { 1.0, 0.0, 0.0 }, /* 32 x 32 */ - { 0.0, 1.0, 0.0 }, /* 16 x 16 */ - { 0.0, 0.0, 1.0 }, /* 8 x 8 */ - { 1.0, 0.0, 1.0 }, /* 4 x 4 */ - { 1.0, 1.0, 1.0 }, /* 2 x 2 */ - { 1.0, 1.0, 0.0 } /* 1 x 1 */ - }; - const unsigned checkers_per_level = 2; - GLfloat * tex; - unsigned level; - unsigned size; - GLint max_size; - - - glGetIntegerv( GL_MAX_TEXTURE_SIZE, & max_size ); - if ( max_size > 512 ) { - max_size = 512; - } - - tex = malloc( sizeof( GLfloat ) * 3 * max_size * max_size ); - - level = 0; - for ( size = max_size ; size > 0 ; size >>= 1 ) { - unsigned divisor = size / checkers_per_level; - unsigned i; - unsigned j; - GLfloat checkers[2][3]; - - - if ((level == 0) || (mode == 1)) { - checkers[0][0] = 1.0; - checkers[0][1] = 1.0; - checkers[0][2] = 1.0; - checkers[1][0] = 0.0; - checkers[1][1] = 0.0; - checkers[1][2] = 0.0; - } - else if (mode == 2) { - checkers[0][0] = colors[level % LEVEL_COLORS][0]; - checkers[0][1] = colors[level % LEVEL_COLORS][1]; - checkers[0][2] = colors[level % LEVEL_COLORS][2]; - checkers[1][0] = colors[level % LEVEL_COLORS][0] * 0.5; - checkers[1][1] = colors[level % LEVEL_COLORS][1] * 0.5; - checkers[1][2] = colors[level % LEVEL_COLORS][2] * 0.5; - } - else { - checkers[0][0] = colors[level % LEVEL_COLORS][0]; - checkers[0][1] = colors[level % LEVEL_COLORS][1]; - checkers[0][2] = colors[level % LEVEL_COLORS][2]; - checkers[1][0] = colors[level % LEVEL_COLORS][0]; - checkers[1][1] = colors[level % LEVEL_COLORS][1]; - checkers[1][2] = colors[level % LEVEL_COLORS][2]; - } - - if ( divisor == 0 ) { - divisor = 1; - - checkers[0][0] = (checkers[0][0] + checkers[1][0]) / 2; - checkers[0][1] = (checkers[0][0] + checkers[1][0]) / 2; - checkers[0][2] = (checkers[0][0] + checkers[1][0]) / 2; - checkers[1][0] = checkers[0][0]; - checkers[1][1] = checkers[0][1]; - checkers[1][2] = checkers[0][2]; - } - - - for ( i = 0 ; i < size ; i++ ) { - for ( j = 0 ; j < size ; j++ ) { - const unsigned idx = ((i ^ j) / divisor) & 1; - - tex[ ((i * size) + j) * 3 + 0] = checkers[ idx ][0]; - tex[ ((i * size) + j) * 3 + 1] = checkers[ idx ][1]; - tex[ ((i * size) + j) * 3 + 2] = checkers[ idx ][2]; - } - } - - glTexImage2D( GL_TEXTURE_2D, level, GL_RGB, size, size, 0, - GL_RGB, GL_FLOAT, tex ); - level++; - } - - free( tex ); -} - - -int main( int argc, char ** argv ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 800, 600 ); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE ); - glutCreateWindow( "Texture Filter Test" ); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutSpecialFunc( SpecialKey ); - glutDisplayFunc( Display ); - - Init(); - - printf("\nUse the right-button menu to select the texture and filter mode.\n"); - printf("Use 'A' and 'a' to increase and decrease the aniotropy.\n"); - printf("Use 'S' and 's' to increase and decrease the number of cylinder segments.\n"); - printf("Use 'q' to exit.\n\n"); - - glutMainLoop(); - return 0; -} diff --git a/progs/tests/texgenmix.c b/progs/tests/texgenmix.c deleted file mode 100644 index 008da8625e..0000000000 --- a/progs/tests/texgenmix.c +++ /dev/null @@ -1,642 +0,0 @@ - -/* - * Demonstrates mixed texgen/non-texgen texture coordinates. - */ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <GL/glew.h> -#include <GL/glut.h> - -#undef max -#undef min -#define max( a, b ) ((a) >= (b) ? (a) : (b)) -#define min( a, b ) ((a) <= (b) ? (a) : (b)) - -GLfloat labelColor0[4] = { 1.0, 1.0, 1.0, 1.0 }; -GLfloat labelColor1[4] = { 1.0, 1.0, 0.4, 1.0 }; -GLfloat *labelInfoColor = labelColor0; - -GLboolean doubleBuffered = GL_TRUE; -GLboolean drawTextured = GL_TRUE; - -int textureWidth = 64; -int textureHeight = 64; - -int winWidth = 580, winHeight = 720; - -const GLfloat texmat_swap_rq[16] = { 1.0, 0.0, 0.0, 0.0, - 0.0, 1.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 1.0, - 0.0, 0.0, 1.0, 0.0}; - -const GLfloat nullPlane[4] = { 0.0, 0.0, 0.0, 0.0 }; -const GLfloat ObjPlaneS1[4] = { 1.0, 0.0, 1.0, 0.0 }; -const GLfloat ObjPlaneS2[4] = { 0.5, 0.0, 0.0, 0.0 }; -const GLfloat ObjPlaneS3[4] = { 1.0, 0.0, 0.0, 0.0 }; -const GLfloat ObjPlaneT[4] = { 0.0, 1.0, 0.0, 0.0 }; -const GLfloat ObjPlaneT2[4] = { 0.0, 0.5, 0.0, 0.0 }; -const GLfloat ObjPlaneT3[4] = { 0.0, 1.0, 0.0, 0.0 }; -const GLfloat ObjPlaneR[4] = { 0.0, 0.0, 1.0, 0.0 }; -const GLfloat ObjPlaneQ[4] = { 0.0, 0.0, 0.0, 0.5 }; - - -static void checkErrors( void ) -{ - GLenum error; - - while ( (error = glGetError()) != GL_NO_ERROR ) { - fprintf( stderr, "Error: %s\n", (char *) gluErrorString( error ) ); - } -} - -static void drawString( const char *string, GLfloat x, GLfloat y, - const GLfloat color[4] ) -{ - glColor4fv( color ); - glRasterPos2f( x, y ); - - while ( *string ) { - glutBitmapCharacter( GLUT_BITMAP_TIMES_ROMAN_10, *string ); - string++; - } -} - -static void begin2D( int width, int height ) -{ - glMatrixMode( GL_PROJECTION ); - - glPushMatrix(); - glLoadIdentity(); - - glOrtho( 0, width, 0, height, -1, 1 ); - glMatrixMode( GL_MODELVIEW ); - - glPushMatrix(); - glLoadIdentity(); -} - -static void end2D( void ) -{ - glMatrixMode( GL_PROJECTION ); - glPopMatrix(); - glMatrixMode( GL_MODELVIEW ); - glPopMatrix(); -} - -static void initialize( void ) -{ - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - - glOrtho( -1.5, 1.5, -1.5, 1.5, -1.5, 1.5 ); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - - glShadeModel( GL_FLAT ); -} - -/* ARGSUSED1 */ -static void keyboard( unsigned char c, int x, int y ) -{ - switch ( c ) { - case 't': - drawTextured = !drawTextured; - break; - case 27: /* Escape key should force exit. */ - exit(0); - break; - default: - break; - } - glutPostRedisplay(); -} - -/* ARGSUSED1 */ -static void special( int key, int x, int y ) -{ - switch ( key ) { - case GLUT_KEY_DOWN: - break; - case GLUT_KEY_UP: - break; - case GLUT_KEY_LEFT: - break; - case GLUT_KEY_RIGHT: - break; - default: - break; - } - glutPostRedisplay(); -} - -static void -reshape( int w, int h ) -{ - winWidth = w; - winHeight = h; - /* No need to call glViewPort here since "draw" calls it! */ -} - -static void loadTexture( int width, int height ) -{ - int alphaSize = 1; - int rgbSize = 3; - GLubyte *texImage, *p; - int elementsPerGroup, elementSize, groupSize, rowSize; - int i, j; - - - elementsPerGroup = alphaSize + rgbSize; - elementSize = sizeof(GLubyte); - groupSize = elementsPerGroup * elementSize; - rowSize = width * groupSize; - - if ( (texImage = (GLubyte *) malloc( height * rowSize ) ) == NULL ) { - fprintf( stderr, "texture malloc failed\n" ); - return; - } - - for ( i = 0 ; i < height ; i++ ) - { - p = texImage + i * rowSize; - - for ( j = 0 ; j < width ; j++ ) - { - if ( rgbSize > 0 ) - { - /** - ** +-----+-----+ - ** | | | - ** | R | G | - ** | | | - ** +-----+-----+ - ** | | | - ** | Y | B | - ** | | | - ** +-----+-----+ - **/ - if ( i > height / 2 ) { - if ( j < width / 2 ) { - p[0] = 0xff; - p[1] = 0x00; - p[2] = 0x00; - } else { - p[0] = 0x00; - p[1] = 0xff; - p[2] = 0x00; - } - } else { - if ( j < width / 2 ) { - p[0] = 0xff; - p[1] = 0xff; - p[2] = 0x00; - } else { - p[0] = 0x00; - p[1] = 0x00; - p[2] = 0xff; - } - } - p += 3 * elementSize; - } - - if ( alphaSize > 0 ) - { - /** - ** +-----------+ - ** | W | - ** | +-----+ | - ** | | | | - ** | | B | | - ** | | | | - ** | +-----+ | - ** | | - ** +-----------+ - **/ - int i2 = i - height / 2; - int j2 = j - width / 2; - int h8 = height / 8; - int w8 = width / 8; - if ( -h8 <= i2 && i2 <= h8 && -w8 <= j2 && j2 <= w8 ) { - p[0] = 0x00; - } else if ( -2 * h8 <= i2 && i2 <= 2 * h8 && -2 * w8 <= j2 && j2 <= 2 * w8 ) { - p[0] = 0x55; - } else if ( -3 * h8 <= i2 && i2 <= 3 * h8 && -3 * w8 <= j2 && j2 <= 3 * w8 ) { - p[0] = 0xaa; - } else { - p[0] = 0xff; - } - p += elementSize; - } - } - } - - glTexImage2D( GL_TEXTURE_2D, 0, - GL_RGBA, width, height, 0, - GL_RGBA, GL_UNSIGNED_BYTE, texImage ); - - free( texImage ); -} - - -static void drawSample( int x, int y, int w, int h, - int texgenenabled, int coordnr ) -{ - char buf[255]; - - glViewport( x, y, w, h ); - glScissor( x, y, w, h ); - - glClearColor( 0.1, 0.1, 0.1, 1.0 ); - glClear( GL_COLOR_BUFFER_BIT ); - - begin2D( w, h ); - if (texgenenabled == 2) { - sprintf( buf, "TexCoord%df", coordnr); - drawString( buf, 10, h - 15, labelInfoColor ); - sprintf( buf, "texgen enabled for %s coordinate(s)", coordnr == 2 ? "S" : "S/T"); - drawString( buf, 10, 5, labelInfoColor ); - } - else if (texgenenabled == 0) { - sprintf( buf, "TexCoord%df", coordnr); - drawString( buf, 10, h - 15, labelInfoColor ); - drawString( "no texgen", 10, 5, labelInfoColor ); - } - else if (texgenenabled == 1) { - drawString( "no TexCoord", 10, h - 15, labelInfoColor ); - sprintf( buf, "texgen enabled for %s coordinate(s)", - coordnr == 2 ? "S/T" : (coordnr == 3 ? "S/T/R" : "S/T/R/Q")); - drawString( buf, 10, 5, labelInfoColor ); - } - - end2D(); - - glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE ); - - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST ); - - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP ); - - loadTexture( textureWidth, textureHeight ); - - if ( drawTextured ) { - glEnable( GL_TEXTURE_2D ); - } - - glDisable( GL_TEXTURE_GEN_S ); - glDisable( GL_TEXTURE_GEN_T ); - glDisable( GL_TEXTURE_GEN_R ); - glDisable( GL_TEXTURE_GEN_Q ); - - glMatrixMode( GL_TEXTURE ); - glLoadIdentity(); - glMatrixMode( GL_MODELVIEW ); - glPushMatrix(); - - switch (coordnr) { - case 2: - switch (texgenenabled) { - case 0: - glBegin( GL_QUADS ); - glTexCoord2f( 0.0, 0.0 ); - glVertex2f( -0.8, -0.8 ); - - glTexCoord2f( 1.0, 0.0 ); - glVertex2f( 0.8, -0.8 ); - - glTexCoord2f( 1.0, 1.0 ); - glVertex2f( 0.8, 0.8 ); - - glTexCoord2f( 0.0, 1.0 ); - glVertex2f( -0.8, 0.8 ); - glEnd(); - break; - case 1: - glTranslatef( -0.8, -0.8, 0.0 ); - glScalef( 1.6, 1.6, 1.0 ); - glTexGeni( GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR ); - glTexGeni( GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR ); - glTexGeni( GL_R, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR ); - glTexGeni( GL_Q, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR ); - glTexGenfv(GL_S, GL_OBJECT_PLANE, ObjPlaneS3); - glTexGenfv(GL_T, GL_OBJECT_PLANE, ObjPlaneT3); - glTexGenfv(GL_R, GL_OBJECT_PLANE, nullPlane); - glTexGenfv(GL_Q, GL_OBJECT_PLANE, nullPlane); - - glEnable( GL_TEXTURE_GEN_S ); - glEnable( GL_TEXTURE_GEN_T ); - - /* Issue a texcoord here to be sure Q isn't left over from a - * previous sample. - */ - glTexCoord1f( 0.0 ); - glBegin( GL_QUADS ); - glVertex2f( 0.0, 0.0 ); - glVertex2f( 1.0, 0.0 ); - glVertex2f( 1.0, 1.0 ); - glVertex2f( 0.0, 1.0 ); - glEnd(); - break; - case 2: - /* make sure that texgen T and non-texgen S coordinate are wrong */ - glTexGeni( GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR ); - glTexGeni( GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR ); - glTexGeni( GL_R, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR ); - glTexGeni( GL_Q, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR ); - glTexGenfv(GL_S, GL_OBJECT_PLANE, ObjPlaneS1); - glTexGenfv(GL_T, GL_OBJECT_PLANE, nullPlane); - glTexGenfv(GL_R, GL_OBJECT_PLANE, nullPlane); - glTexGenfv(GL_Q, GL_OBJECT_PLANE, nullPlane); - - glEnable( GL_TEXTURE_GEN_S ); - - glBegin( GL_QUADS ); - /* use z coordinate to get correct texgen values... */ - glTexCoord2f( 0.0, 0.0 ); - glVertex3f( -0.8, -0.8, 0.8 ); - - glTexCoord2f( 0.0, 0.0 ); - glVertex3f( 0.8, -0.8, 0.2 ); - - glTexCoord2f( 0.0, 1.0 ); - glVertex3f( 0.8, 0.8, 0.2 ); - - glTexCoord2f( 0.0, 1.0 ); - glVertex3f( -0.8, 0.8, 0.8 ); - glEnd(); - break; - } - break; - case 3: - glMatrixMode( GL_TEXTURE ); - glLoadMatrixf( texmat_swap_rq ); - glMatrixMode( GL_MODELVIEW ); - glTranslatef( -0.8, -0.8, 0.0 ); - glScalef( 1.6, 1.6, 1.0 ); - switch (texgenenabled) { - case 0: - glBegin( GL_QUADS ); - glTexCoord3f( 0.0, 0.0, 0.5 ); - glVertex2f( 0.0, 0.0 ); - - glTexCoord3f( 0.5, 0.0, 0.5 ); - glVertex2f( 1.0, 0.0 ); - - glTexCoord3f( 0.5, 0.5, 0.5 ); - glVertex2f( 1.0, 1.0 ); - - glTexCoord3f( 0.0, 0.5, 0.5 ); - glVertex2f( 0.0, 1.0 ); - glEnd(); - break; - case 1: - glTexGeni( GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR ); - glTexGeni( GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR ); - glTexGeni( GL_R, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR ); - glTexGeni( GL_Q, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR ); - glTexGenfv(GL_S, GL_OBJECT_PLANE, ObjPlaneS2); - glTexGenfv(GL_T, GL_OBJECT_PLANE, ObjPlaneT2); - glTexGenfv(GL_R, GL_OBJECT_PLANE, ObjPlaneR); - glTexGenfv(GL_Q, GL_OBJECT_PLANE, nullPlane); - - glEnable( GL_TEXTURE_GEN_S ); - glEnable( GL_TEXTURE_GEN_T ); - glEnable( GL_TEXTURE_GEN_R ); - - glTexCoord1f( 0.0 ); /* to make sure Q is 1.0 */ - glBegin( GL_QUADS ); - glVertex3f( 0.0, 0.0, 0.5 ); - glVertex3f( 1.0, 0.0, 0.5 ); - glVertex3f( 1.0, 1.0, 0.5 ); - glVertex3f( 0.0, 1.0, 0.5 ); - glEnd(); - break; - case 2: - /* make sure that texgen R/Q and non-texgen S/T coordinates are wrong */ - glTexGeni( GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR ); - glTexGeni( GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR ); - glTexGeni( GL_R, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR ); - glTexGeni( GL_Q, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR ); - glTexGenfv(GL_S, GL_OBJECT_PLANE, ObjPlaneS2); - glTexGenfv(GL_T, GL_OBJECT_PLANE, ObjPlaneT2); - glTexGenfv(GL_R, GL_OBJECT_PLANE, nullPlane); - glTexGenfv(GL_Q, GL_OBJECT_PLANE, nullPlane); - - glEnable( GL_TEXTURE_GEN_S ); - glEnable( GL_TEXTURE_GEN_T ); - - glBegin( GL_QUADS ); - glTexCoord3f( 0.0, 0.0, 0.5 ); - glVertex2f( 0.0, 0.0); - - glTexCoord3f( 0.0, 0.0, 0.5 ); - glVertex2f( 1.0, 0.0); - - glTexCoord3f( 0.0, 0.0, 0.5 ); - glVertex2f( 1.0, 1.0); - - glTexCoord3f( 0.0, 0.0, 0.5 ); - glVertex2f( 0.0, 1.0); - glEnd(); - break; - } - break; - case 4: - switch (texgenenabled) { - case 0: - glBegin( GL_QUADS ); - /* don't need r coordinate but still setting it I'm mean */ - glTexCoord4f( 0.0, 0.0, 0.0, 0.5 ); - glVertex2f( -0.8, -0.8 ); - - glTexCoord4f( 0.5, 0.0, 0.2, 0.5 ); - glVertex2f( 0.8, -0.8 ); - - glTexCoord4f( 0.5, 0.5, 0.5, 0.5 ); - glVertex2f( 0.8, 0.8 ); - - glTexCoord4f( 0.0, 0.5, 0.5, 0.5 ); - glVertex2f( -0.8, 0.8 ); - glEnd(); - break; - case 1: - glTranslatef( -0.8, -0.8, 0.0 ); - glScalef( 1.6, 1.6, 1.0 ); - /* make sure that texgen R/Q and non-texgen S/T coordinates are wrong */ - glTexGeni( GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR ); - glTexGeni( GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR ); - glTexGeni( GL_R, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR ); - glTexGeni( GL_Q, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR ); - glTexGenfv(GL_S, GL_OBJECT_PLANE, ObjPlaneS2); - glTexGenfv(GL_T, GL_OBJECT_PLANE, ObjPlaneT2); - glTexGenfv(GL_R, GL_OBJECT_PLANE, ObjPlaneR); - glTexGenfv(GL_Q, GL_OBJECT_PLANE, ObjPlaneQ); - - glEnable( GL_TEXTURE_GEN_S ); - glEnable( GL_TEXTURE_GEN_T ); - glEnable( GL_TEXTURE_GEN_R ); - glEnable( GL_TEXTURE_GEN_Q ); - - glBegin( GL_QUADS ); - glVertex2f( 0.0, 0.0 ); - glVertex2f( 1.0, 0.0 ); - glVertex2f( 1.0, 1.0 ); - glVertex2f( 0.0, 1.0 ); - glEnd(); - break; - case 2: - glTranslatef( -0.8, -0.8, 0.0 ); - glScalef( 1.6, 1.6, 1.0 ); - /* make sure that texgen R/Q and non-texgen S/T coordinates are wrong */ - glTexGeni( GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR ); - glTexGeni( GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR ); - glTexGeni( GL_R, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR ); - glTexGeni( GL_Q, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR ); - glTexGenfv(GL_S, GL_OBJECT_PLANE, ObjPlaneS2); - glTexGenfv(GL_T, GL_OBJECT_PLANE, ObjPlaneT2); - glTexGenfv(GL_R, GL_OBJECT_PLANE, nullPlane); - glTexGenfv(GL_Q, GL_OBJECT_PLANE, nullPlane); - - glEnable( GL_TEXTURE_GEN_S ); - glEnable( GL_TEXTURE_GEN_T ); - - glBegin( GL_QUADS ); - glTexCoord4f( 0.0, 0.0, 0.0, 0.5 ); - glVertex2f( 0.0, 0.0 ); - - glTexCoord4f( 0.0, 0.0, 0.2, 0.5 ); - glVertex2f( 1.0, 0.0 ); - - glTexCoord4f( 0.0, 0.0, 0.5, 0.5 ); - glVertex2f( 1.0, 1.0 ); - - glTexCoord4f( 0.0, 0.0, 0.75, 0.5 ); - glVertex2f( 0.0, 1.0 ); - glEnd(); - break; - } - break; - } - - glPopMatrix(); - glDisable( GL_TEXTURE_2D ); - -} - -static void display( void ) -{ - int numX = 3, numY = 3; - float xBase = (float) winWidth * 0.01; - float xOffset = (winWidth - xBase) / numX; - float xSize = max( xOffset - xBase, 1 ); - float yBase = (float) winHeight * 0.01; - float yOffset = (winHeight - yBase) / numY; - float ySize = max( yOffset - yBase, 1 ); - float x, y; - int i, j; - - glViewport( 0, 0, winWidth, winHeight ); - glDisable( GL_SCISSOR_TEST ); - glClearColor( 0.0, 0.0, 0.0, 0.0 ); - glClear( GL_COLOR_BUFFER_BIT ); - glEnable( GL_SCISSOR_TEST ); - - x = xBase; - y = (winHeight - 1) - yOffset; - - for ( i = 0 ; i < numY ; i++ ) - { - - labelInfoColor = labelColor1; - - - for ( j = 0 ; j < numX ; j++ ) { - drawSample( x, y, xSize, ySize, i, j+2 ); - x += xOffset; - } - - x = xBase; - y -= yOffset; - } - - if ( doubleBuffered ) { - glutSwapBuffers(); - } else { - glFlush(); - } - - checkErrors(); -} - -static void usage( char *name ) -{ - fprintf( stderr, "usage: %s [ options ]\n", name ); - fprintf( stderr, "\n" ); - fprintf( stderr, "options:\n" ); - fprintf( stderr, " -sb single buffered\n" ); - fprintf( stderr, " -db double buffered\n" ); - fprintf( stderr, " -info print OpenGL driver info\n" ); -} - -static void instructions( void ) -{ - fprintf( stderr, "texgenmix - mixed texgen/non-texgen texture coordinate test\n" ); - fprintf( stderr, "all quads should look the same!\n" ); - fprintf( stderr, "\n" ); - fprintf( stderr, " [t] - toggle texturing\n" ); -} - -int main( int argc, char *argv[] ) -{ - GLboolean info = GL_FALSE; - int i; - - glutInit( &argc, argv ); - - for ( i = 1 ; i < argc ; i++ ) { - if ( !strcmp( "-sb", argv[i] ) ) { - doubleBuffered = GL_FALSE; - } else if ( !strcmp( "-db", argv[i] ) ) { - doubleBuffered = GL_TRUE; - } else if ( !strcmp( "-info", argv[i] ) ) { - info = GL_TRUE; - } else { - usage( argv[0] ); - exit( 1 ); - } - } - - if ( doubleBuffered ) { - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE ); - } else { - glutInitDisplayMode( GLUT_RGB | GLUT_SINGLE ); - } - - glutInitWindowSize( winWidth, winHeight ); - glutInitWindowPosition( 0, 0 ); - glutCreateWindow( "Mixed texgen/non-texgen texture coordinate test" ); - glewInit(); - - initialize(); - instructions(); - - if ( info ) { - printf( "\n" ); - printf( "GL_RENDERER = %s\n", (char *) glGetString( GL_RENDERER ) ); - printf( "GL_VERSION = %s\n", (char *) glGetString( GL_VERSION ) ); - printf( "GL_VENDOR = %s\n", (char *) glGetString( GL_VENDOR ) ) ; - printf( "GL_EXTENSIONS = %s\n", (char *) glGetString( GL_EXTENSIONS ) ); - } - - glutDisplayFunc( display ); - glutReshapeFunc( reshape ); - glutKeyboardFunc( keyboard ); - glutSpecialFunc( special ); - glutMainLoop(); - - return 0; -} diff --git a/progs/tests/texline.c b/progs/tests/texline.c deleted file mode 100644 index 1803832b47..0000000000 --- a/progs/tests/texline.c +++ /dev/null @@ -1,280 +0,0 @@ - -/* - * Test textured lines. - * - * Brian Paul - * September 2000 - */ - -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> -#include "../util/readtex.c" /* I know, this is a hack. */ - -#define TEXTURE_FILE "../images/girl.rgb" - -static GLboolean Antialias = GL_FALSE; -static GLboolean Animate = GL_FALSE; -static GLint Texture = 1; -static GLboolean Stipple = GL_FALSE; -static GLfloat LineWidth = 1.0; - -static GLfloat Xrot = -60.0, Yrot = 0.0, Zrot = 0.0; -static GLfloat DYrot = 1.0; -static GLboolean Points = GL_FALSE; -static GLfloat Scale = 1.0; - -static void Idle( void ) -{ - if (Animate) { - Zrot += DYrot; - glutPostRedisplay(); - } -} - - -static void Display( void ) -{ - GLfloat x, y, s, t; - - glClear( GL_COLOR_BUFFER_BIT ); - - glPushMatrix(); - glRotatef(Xrot, 1.0, 0.0, 0.0); - glRotatef(Yrot, 0.0, 1.0, 0.0); - glRotatef(Zrot, 0.0, 0.0, 1.0); - glScalef(Scale, Scale, Scale); - - if (Texture) - glColor3f(1, 1, 1); - - if (Points) { - glBegin(GL_POINTS); - for (t = 0.0; t <= 1.0; t += 0.025) { - for (s = 0.0; s <= 1.0; s += 0.025) { - x = s * 2.0 - 1.0; - y = t * 2.0 - 1.0; - if (!Texture) - glColor3f(1, 0, 1); - glMultiTexCoord2fARB(GL_TEXTURE1_ARB, t, s); - glTexCoord2f(s, t); - glVertex2f(x, y); - } - } - glEnd(); - } - else { - glBegin(GL_LINES); - for (t = 0.0; t <= 1.0; t += 0.025) { - x = t * 2.0 - 1.0; - if (!Texture) - glColor3f(1, 0, 1); - glTexCoord2f(t, 0.0); - glMultiTexCoord2fARB(GL_TEXTURE1_ARB, 0.0, t); - glVertex2f(x, -1.0); - if (!Texture) - glColor3f(0, 1, 0); - glTexCoord2f(t, 1.0); - glMultiTexCoord2fARB(GL_TEXTURE1_ARB, 1.0, t); - glVertex2f(x, 1.0); - } - glEnd(); - } - - glPopMatrix(); - - glutSwapBuffers(); -} - - -static void Reshape( int width, int height ) -{ - GLfloat ar = (float) width / height; - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -ar, ar, -1.0, 1.0, 10.0, 100.0 ); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - glTranslatef( 0.0, 0.0, -12.0 ); -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 'a': - Antialias = !Antialias; - if (Antialias) { - glEnable(GL_LINE_SMOOTH); - glEnable(GL_POINT_SMOOTH); - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - } - else { - glDisable(GL_LINE_SMOOTH); - glDisable(GL_POINT_SMOOTH); - glDisable(GL_BLEND); - } - break; - case 't': - Texture++; - if (Texture > 2) - Texture = 0; - if (Texture == 0) { - glActiveTextureARB(GL_TEXTURE0_ARB); - glDisable(GL_TEXTURE_2D); - glActiveTextureARB(GL_TEXTURE1_ARB); - glDisable(GL_TEXTURE_2D); - } - else if (Texture == 1) { - glActiveTextureARB(GL_TEXTURE0_ARB); - glEnable(GL_TEXTURE_2D); - glActiveTextureARB(GL_TEXTURE1_ARB); - glDisable(GL_TEXTURE_2D); - } - else { - glActiveTextureARB(GL_TEXTURE0_ARB); - glEnable(GL_TEXTURE_2D); - glActiveTextureARB(GL_TEXTURE1_ARB); - glEnable(GL_TEXTURE_2D); - } - break; - case 'w': - LineWidth -= 0.25; - if (LineWidth < 0.25) - LineWidth = 0.25; - glLineWidth(LineWidth); - glPointSize(LineWidth); - break; - case 'W': - LineWidth += 0.25; - if (LineWidth > 8.0) - LineWidth = 8.0; - glLineWidth(LineWidth); - glPointSize(LineWidth); - break; - case 'p': - Points = !Points; - break; - case 's': - Stipple = !Stipple; - if (Stipple) - glEnable(GL_LINE_STIPPLE); - else - glDisable(GL_LINE_STIPPLE); - break; - case ' ': - Animate = !Animate; - if (Animate) - glutIdleFunc(Idle); - else - glutIdleFunc(NULL); - break; - case 27: - exit(0); - break; - } - printf("LineWidth, PointSize = %f\n", LineWidth); - glutPostRedisplay(); -} - - -static void SpecialKey( int key, int x, int y ) -{ - float step = 3.0; - (void) x; - (void) y; - - switch (key) { - case GLUT_KEY_UP: - Xrot += step; - break; - case GLUT_KEY_DOWN: - Xrot -= step; - break; - case GLUT_KEY_LEFT: - Yrot += step; - break; - case GLUT_KEY_RIGHT: - Yrot -= step; - break; - } - glutPostRedisplay(); -} - - -static void Init( int argc, char *argv[] ) -{ - GLfloat r[2]; - GLuint u; - - for (u = 0; u < 2; u++) { - glActiveTextureARB(GL_TEXTURE0_ARB + u); - glBindTexture(GL_TEXTURE_2D, 10+u); - if (u == 0) - glEnable(GL_TEXTURE_2D); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - - if (u == 0) - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - else - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_ADD); - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - if (!LoadRGBMipmaps(TEXTURE_FILE, GL_RGB)) { - printf("Error: couldn't load texture image\n"); - exit(1); - } - } - - glLineStipple(1, 0xff); - - if (argc > 1 && strcmp(argv[1], "-info")==0) { - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - printf("GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - printf("GL_EXTENSIONS = %s\n", (char *) glGetString(GL_EXTENSIONS)); - } - - glGetFloatv(GL_ALIASED_POINT_SIZE_RANGE, r); - printf("Non-smooth point size range: %g .. %g\n", r[0], r[1]); - glGetFloatv(GL_POINT_SIZE_RANGE, r); - printf("Smoothed point size range: %g .. %g\n", r[0], r[1]); - glGetFloatv(GL_ALIASED_LINE_WIDTH_RANGE, r); - printf("Non-smooth line width range: %g .. %g\n", r[0], r[1]); - glGetFloatv(GL_LINE_WIDTH_RANGE, r); - printf("Smoothed line width range: %g .. %g\n", r[0], r[1]); -} - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition(0, 0); - glutInitWindowSize( 400, 300 ); - - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE ); - - glutCreateWindow(argv[0] ); - glewInit(); - - Init(argc, argv); - - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutSpecialFunc( SpecialKey ); - glutDisplayFunc( Display ); - if (Animate) - glutIdleFunc( Idle ); - - glutMainLoop(); - return 0; -} diff --git a/progs/tests/texobj.c b/progs/tests/texobj.c deleted file mode 100644 index 40bce6e569..0000000000 --- a/progs/tests/texobj.c +++ /dev/null @@ -1,284 +0,0 @@ - -/* - * Example of using the 1.1 texture object functions. - * Also, this demo utilizes Mesa's fast texture map path. - * - * Brian Paul June 1996 This file is in the public domain. - */ - -#include <assert.h> -#include <math.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include "GL/glut.h" - -static GLuint Window = 0; - -static GLuint TexObj[2]; -static GLfloat Angle = 0.0f; -static GLboolean UseObj = GL_FALSE; - - -#if defined(GL_VERSION_1_1) || defined(GL_VERSION_1_2) -# define TEXTURE_OBJECT 1 -#elif defined(GL_EXT_texture_object) -# define TEXTURE_OBJECT 1 -# define glBindTexture(A,B) glBindTextureEXT(A,B) -# define glGenTextures(A,B) glGenTexturesEXT(A,B) -# define glDeleteTextures(A,B) glDeleteTexturesEXT(A,B) -#endif - - - - -static void draw( void ) -{ - glClear( GL_COLOR_BUFFER_BIT ); - - glColor3f( 1.0, 1.0, 1.0 ); - - /* draw first polygon */ - glPushMatrix(); - glTranslatef( -1.0, 0.0, 0.0 ); - glRotatef( Angle, 0.0, 0.0, 1.0 ); - if (UseObj) { -#ifdef TEXTURE_OBJECT - glBindTexture( GL_TEXTURE_2D, TexObj[0] ); -#endif - } - else { - glCallList( TexObj[0] ); - } - glBegin( GL_POLYGON ); - glTexCoord2f( 0.0, 0.0 ); glVertex2f( -1.0, -1.0 ); - glTexCoord2f( 1.0, 0.0 ); glVertex2f( 1.0, -1.0 ); - glTexCoord2f( 1.0, 1.0 ); glVertex2f( 1.0, 1.0 ); - glTexCoord2f( 0.0, 1.0 ); glVertex2f( -1.0, 1.0 ); - glEnd(); - glPopMatrix(); - - /* draw second polygon */ - glPushMatrix(); - glTranslatef( 1.0, 0.0, 0.0 ); - glRotatef( Angle-90.0, 0.0, 1.0, 0.0 ); - if (UseObj) { -#ifdef TEXTURE_OBJECT - glBindTexture( GL_TEXTURE_2D, TexObj[1] ); -#endif - } - else { - glCallList( TexObj[1] ); - } - glBegin( GL_POLYGON ); - glTexCoord2f( 0.0, 0.0 ); glVertex2f( -1.0, -1.0 ); - glTexCoord2f( 1.0, 0.0 ); glVertex2f( 1.0, -1.0 ); - glTexCoord2f( 1.0, 1.0 ); glVertex2f( 1.0, 1.0 ); - glTexCoord2f( 0.0, 1.0 ); glVertex2f( -1.0, 1.0 ); - glEnd(); - glPopMatrix(); - - glutSwapBuffers(); -} - - - -static void idle( void ) -{ - static double t0 = -1.; - double dt, t = glutGet(GLUT_ELAPSED_TIME) / 1000.0; - if (t0 < 0.0) - t0 = t; - dt = t - t0; - t0 = t; - Angle += 120.0*dt; - glutPostRedisplay(); -} - - - -/* change view Angle, exit upon ESC */ -static void key(unsigned char k, int x, int y) -{ - (void) x; - (void) y; - switch (k) { - case 27: -#ifdef TEXTURE_OBJECT - glDeleteTextures( 2, TexObj ); -#endif - glutDestroyWindow(Window); - exit(0); - } -} - - - -/* new window size or exposure */ -static void reshape( int width, int height ) -{ - glViewport(0, 0, (GLint)width, (GLint)height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - /* glOrtho( -3.0, 3.0, -3.0, 3.0, -10.0, 10.0 );*/ - glFrustum( -2.0, 2.0, -2.0, 2.0, 6.0, 20.0 ); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef( 0.0, 0.0, -8.0 ); -} - - -static void init( void ) -{ - static int width=8, height=8; - static GLubyte tex1[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 1, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 1, 1, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0 }; - - static GLubyte tex2[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2, 2, 0, 0, 0, - 0, 0, 2, 0, 0, 2, 0, 0, - 0, 0, 0, 0, 0, 2, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 2, 0, 0, 0, 0, - 0, 0, 2, 2, 2, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0 }; - - GLubyte tex[64][3]; - GLint i, j; - - - glDisable( GL_DITHER ); - - /* Setup texturing */ - glEnable( GL_TEXTURE_2D ); - glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL ); - glHint( GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST ); - - - /* generate texture object IDs */ - if (UseObj) { -#ifdef TEXTURE_OBJECT - glGenTextures( 2, TexObj ); -#endif - } - else { - TexObj[0] = glGenLists(2); - TexObj[1] = TexObj[0]+1; - } - - /* setup first texture object */ - if (UseObj) { -#ifdef TEXTURE_OBJECT - glBindTexture( GL_TEXTURE_2D, TexObj[0] ); - assert(glIsTexture(TexObj[0])); -#endif - } - else { - glNewList( TexObj[0], GL_COMPILE ); - } - /* red on white */ - for (i=0;i<height;i++) { - for (j=0;j<width;j++) { - int p = i*width+j; - if (tex1[(height-i-1)*width+j]) { - tex[p][0] = 255; tex[p][1] = 0; tex[p][2] = 0; - } - else { - tex[p][0] = 255; tex[p][1] = 255; tex[p][2] = 255; - } - } - } - - glTexImage2D( GL_TEXTURE_2D, 0, 3, width, height, 0, - GL_RGB, GL_UNSIGNED_BYTE, tex ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT ); - if (!UseObj) { - glEndList(); - } - /* end of texture object */ - - /* setup second texture object */ - if (UseObj) { -#ifdef TEXTURE_OBJECT - glBindTexture( GL_TEXTURE_2D, TexObj[1] ); - assert(glIsTexture(TexObj[1])); -#endif - assert(!glIsTexture(TexObj[1] + 999)); - } - else { - glNewList( TexObj[1], GL_COMPILE ); - } - /* green on blue */ - for (i=0;i<height;i++) { - for (j=0;j<width;j++) { - int p = i*width+j; - if (tex2[(height-i-1)*width+j]) { - tex[p][0] = 0; tex[p][1] = 255; tex[p][2] = 0; - } - else { - tex[p][0] = 0; tex[p][1] = 0; tex[p][2] = 255; - } - } - } - glTexImage2D( GL_TEXTURE_2D, 0, 3, width, height, 0, - GL_RGB, GL_UNSIGNED_BYTE, tex ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT ); - if (!UseObj) { - glEndList(); - } - /* end texture object */ - -} - - - -int main( int argc, char *argv[] ) -{ - glutInit(&argc, argv); - glutInitWindowPosition(0, 0); - glutInitWindowSize(300, 300); - glutInitDisplayMode( GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE ); - - Window = glutCreateWindow("Texture Objects"); - if (!Window) { - exit(1); - } - - /* check that renderer has the GL_EXT_texture_object extension - * or supports OpenGL 1.1 - */ -#ifdef TEXTURE_OBJECT - { - char *exten = (char *) glGetString( GL_EXTENSIONS ); - char *version = (char *) glGetString( GL_VERSION ); - if ( strstr( exten, "GL_EXT_texture_object" ) - || strncmp( version, "1.1", 3 )==0 - || strncmp( version, "1.2", 3 )==0 ) { - UseObj = GL_TRUE; - } - } -#endif - - init(); - - glutReshapeFunc( reshape ); - glutKeyboardFunc( key ); - glutIdleFunc( idle ); - glutDisplayFunc( draw ); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/texobjshare.c b/progs/tests/texobjshare.c deleted file mode 100644 index 2b31cb6c4d..0000000000 --- a/progs/tests/texobjshare.c +++ /dev/null @@ -1,219 +0,0 @@ -/* - * Create several OpenGL rendering contexts, sharing textures, display - * lists, etc. Exercise binding, deleting, etc. - * - * Brian Paul - * 21 December 2004 - */ - - -#include <GL/gl.h> -#include <GL/glx.h> -#include <assert.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> -#include <X11/keysym.h> - - -/* - * Each display/window/context: - */ -struct context { - char DisplayName[1000]; - Display *Dpy; - Window Win; - GLXContext Context; -}; - - -#define MAX_CONTEXTS 200 -static struct context Contexts[MAX_CONTEXTS]; -static int NumContexts = 0; - - -static void -Error(const char *display, const char *msg) -{ - fprintf(stderr, "Error on display %s - %s\n", display, msg); - exit(1); -} - - -static struct context * -CreateContext(const char *displayName, const char *name) -{ - Display *dpy; - Window win; - GLXContext ctx; - int attrib[] = { GLX_RGBA, - GLX_RED_SIZE, 1, - GLX_GREEN_SIZE, 1, - GLX_BLUE_SIZE, 1, - GLX_DOUBLEBUFFER, - None }; - int scrnum; - XSetWindowAttributes attr; - unsigned long mask; - Window root; - XVisualInfo *visinfo; - int width = 90, height = 90; - int xpos = 0, ypos = 0; - - if (NumContexts >= MAX_CONTEXTS) - return NULL; - - dpy = XOpenDisplay(displayName); - if (!dpy) { - Error(displayName, "Unable to open display"); - return NULL; - } - - scrnum = DefaultScreen(dpy); - root = RootWindow(dpy, scrnum); - - visinfo = glXChooseVisual(dpy, scrnum, attrib); - if (!visinfo) { - Error(displayName, "Unable to find RGB, double-buffered visual"); - return NULL; - } - - /* window attributes */ - xpos = (NumContexts % 10) * 100; - ypos = (NumContexts / 10) * 100; - attr.background_pixel = 0; - attr.border_pixel = 0; - attr.colormap = XCreateColormap(dpy, root, visinfo->visual, AllocNone); - attr.event_mask = StructureNotifyMask | ExposureMask | KeyPressMask; - mask = CWBackPixel | CWBorderPixel | CWColormap | CWEventMask; - - win = XCreateWindow(dpy, root, xpos, ypos, width, height, - 0, visinfo->depth, InputOutput, - visinfo->visual, mask, &attr); - if (!win) { - Error(displayName, "Couldn't create window"); - return NULL; - } - - { - XSizeHints sizehints; - sizehints.x = xpos; - sizehints.y = ypos; - sizehints.width = width; - sizehints.height = height; - sizehints.flags = USSize | USPosition; - XSetNormalHints(dpy, win, &sizehints); - XSetStandardProperties(dpy, win, name, name, - None, (char **)NULL, 0, &sizehints); - } - - if (NumContexts == 0) { - ctx = glXCreateContext(dpy, visinfo, NULL, True); - } - else { - /* share textures & dlists with 0th context */ - ctx = glXCreateContext(dpy, visinfo, Contexts[0].Context, True); - } - if (!ctx) { - Error(displayName, "Couldn't create GLX context"); - return NULL; - } - - XMapWindow(dpy, win); - - if (!glXMakeCurrent(dpy, win, ctx)) { - Error(displayName, "glXMakeCurrent failed"); - return NULL; - } - - if (NumContexts == 0) { - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - } - - /* save the info for this context */ - { - struct context *h = &Contexts[NumContexts]; - strcpy(h->DisplayName, name); - h->Dpy = dpy; - h->Win = win; - h->Context = ctx; - NumContexts++; - return &Contexts[NumContexts-1]; - } -} - - -static void -MakeCurrent(int i) -{ - if (!glXMakeCurrent(Contexts[i].Dpy, Contexts[i].Win, Contexts[i].Context)) { - fprintf(stderr, "glXMakeCurrent failed!\n"); - } -} - - - -static void -DestroyContext(int i) -{ - XDestroyWindow(Contexts[i].Dpy, Contexts[i].Win); - glXDestroyContext(Contexts[i].Dpy, Contexts[i].Context); - XCloseDisplay(Contexts[i].Dpy); -} - - -int -main(int argc, char *argv[]) -{ - char *dpyName = NULL; - int i; - GLuint t; - GLint tb; - - for (i = 0; i < 2; i++) { - CreateContext(dpyName, "context"); - } - - /* Create texture and bind it in context 0 */ - MakeCurrent(0); - glGenTextures(1, &t); - printf("Generated texture ID %u\n", t); - assert(!glIsTexture(t)); - glBindTexture(GL_TEXTURE_2D, t); - assert(glIsTexture(t)); - glGetIntegerv(GL_TEXTURE_BINDING_2D, &tb); - assert(tb == t); - - /* Bind texture in context 1 */ - MakeCurrent(1); - assert(glIsTexture(t)); - glBindTexture(GL_TEXTURE_2D, t); - glGetIntegerv(GL_TEXTURE_BINDING_2D, &tb); - assert(tb == t); - - /* Delete texture from context 0 */ - MakeCurrent(0); - glDeleteTextures(1, &t); - assert(!glIsTexture(t)); - glGetIntegerv(GL_TEXTURE_BINDING_2D, &tb); - printf("After delete, binding = %d\n", tb); - - /* Check texture state from context 1 */ - MakeCurrent(1); - assert(!glIsTexture(t)); - glGetIntegerv(GL_TEXTURE_BINDING_2D, &tb); - printf("In second context, binding = %d\n", tb); - glBindTexture(GL_TEXTURE_2D, 0); - glGetIntegerv(GL_TEXTURE_BINDING_2D, &tb); - assert(tb == 0); - - - for (i = 0; i < NumContexts; i++) { - DestroyContext(i); - } - - printf("Success!\n"); - - return 0; -} diff --git a/progs/tests/texrect.c b/progs/tests/texrect.c deleted file mode 100644 index 10061ee586..0000000000 --- a/progs/tests/texrect.c +++ /dev/null @@ -1,360 +0,0 @@ - -/* GL_NV_texture_rectangle test - * - * Brian Paul - * 14 June 2002 - */ - - -#include <math.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <GL/glew.h> -#include <GL/glut.h> -#include "readtex.h" - -#define TEXTURE_0_FILE "../images/girl.rgb" -#define TEXTURE_1_FILE "../images/reflect.rgb" - -#define TEX0 1 -#define TEX7 8 -#define ANIMATE 10 -#define CLAMP 20 -#define CLAMP_TO_EDGE 21 -#define CLAMP_TO_BORDER 22 -#define LINEAR_FILTER 30 -#define NEAREST_FILTER 31 -#define QUIT 100 - -static GLboolean Animate = GL_FALSE; -static GLint NumUnits = 2; -static GLboolean TexEnabled[8]; -static GLint Width[8], Height[8]; /* image sizes */ -static GLenum Format[8]; - -static GLfloat Xrot = 00.0, Yrot = 00.0, Zrot = 0.0; - - -static void Idle( void ) -{ - Zrot = glutGet(GLUT_ELAPSED_TIME) * 0.01; - glutPostRedisplay(); -} - - -static void DrawObject(void) -{ - GLint i; - GLfloat d = 10; /* so we can see how borders are handled */ - - glColor3f(.1, .1, .1); /* modulate this */ - - glPushMatrix(); - - glRotatef(Zrot, 0, 0, 1); - - glBegin(GL_QUADS); - - for (i = 0; i < NumUnits; i++) - glMultiTexCoord2fARB(GL_TEXTURE0_ARB + i, -d, -d); - glVertex2f(-1.0, -1.0); - - for (i = 0; i < NumUnits; i++) - glMultiTexCoord2fARB(GL_TEXTURE0_ARB + i, Width[i]+d, -d); - glVertex2f(1.0, -1.0); - - for (i = 0; i < NumUnits; i++) - glMultiTexCoord2fARB(GL_TEXTURE0_ARB + i, Width[i]+d, Height[i]+d); - glVertex2f(1.0, 1.0); - - for (i = 0; i < NumUnits; i++) - glMultiTexCoord2fARB(GL_TEXTURE0_ARB + i, -d, Height[i]+d); - glVertex2f(-1.0, 1.0); - - glEnd(); - glPopMatrix(); -} - - -static void Display( void ) -{ - glClear( GL_COLOR_BUFFER_BIT ); - - glPushMatrix(); - glRotatef(Xrot, 1.0, 0.0, 0.0); - glRotatef(Yrot, 0.0, 1.0, 0.0); - glRotatef(Zrot, 0.0, 0.0, 1.0); - glScalef(5.0, 5.0, 5.0); - DrawObject(); - glPopMatrix(); - - glutSwapBuffers(); -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -1.0, 1.0, -1.0, 1.0, 5.0, 100.0 ); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - glTranslatef( 0.0, 0.0, -35.0 ); -} - - -static void ModeMenu(int entry) -{ - GLint i; - if (entry >= TEX0 && entry < TEX0 + NumUnits) { - /* toggle */ - i = entry - TEX0; - TexEnabled[i] = !TexEnabled[i]; - glActiveTextureARB(GL_TEXTURE0_ARB + i); - if (TexEnabled[i]) { - glEnable(GL_TEXTURE_RECTANGLE_NV); - } - else { - glDisable(GL_TEXTURE_RECTANGLE_NV); - } - printf("Enabled: "); - for (i = 0; i < NumUnits; i++) - printf("%d ", (int) TexEnabled[i]); - printf("\n"); - } - else if (entry==ANIMATE) { - Animate = !Animate; - if (Animate) - glutIdleFunc(Idle); - else - glutIdleFunc(NULL); - } - else if (entry==CLAMP) { - for (i = 0; i < NumUnits; i++) { - glActiveTextureARB(GL_TEXTURE0_ARB + i); - glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_WRAP_S, GL_CLAMP); - glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_WRAP_T, GL_CLAMP); - } - } - else if (entry==CLAMP_TO_EDGE) { - for (i = 0; i < NumUnits; i++) { - glActiveTextureARB(GL_TEXTURE0_ARB + i); - glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - } - } - else if (entry==CLAMP_TO_BORDER) { - for (i = 0; i < NumUnits; i++) { - glActiveTextureARB(GL_TEXTURE0_ARB + i); - glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER); - glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER); - } - } - else if (entry==NEAREST_FILTER) { - for (i = 0; i < NumUnits; i++) { - glActiveTextureARB(GL_TEXTURE0_ARB + i); - glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - } - } - else if (entry==LINEAR_FILTER) { - for (i = 0; i < NumUnits; i++) { - glActiveTextureARB(GL_TEXTURE0_ARB + i); - glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - } - } - - else if (entry==QUIT) { - exit(0); - } - - glutPostRedisplay(); -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 'z': - Zrot -= 1.0; - break; - case 'Z': - Zrot += 1.0; - break; - case 'a': - Animate = !Animate; - if (Animate) - glutIdleFunc(Idle); - else - glutIdleFunc(NULL); - break; - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void SpecialKey( int key, int x, int y ) -{ - float step = 3.0; - (void) x; - (void) y; - - switch (key) { - case GLUT_KEY_UP: - Xrot += step; - break; - case GLUT_KEY_DOWN: - Xrot -= step; - break; - case GLUT_KEY_LEFT: - Yrot += step; - break; - case GLUT_KEY_RIGHT: - Yrot -= step; - break; - } - glutPostRedisplay(); -} - - -static void Init( int argc, char *argv[] ) -{ - const GLenum wrap = GL_CLAMP; - GLuint texObj[8]; - GLint size, i; - - if (!glutExtensionSupported("GL_ARB_multitexture")) { - printf("Sorry, GL_ARB_multitexture needed by this program\n"); - exit(1); - } - - if (!glutExtensionSupported("GL_NV_texture_rectangle")) { - printf("Sorry, GL_NV_texture_rectangle needed by this program\n"); - exit(1); - } - - glGetIntegerv(GL_MAX_TEXTURE_UNITS_ARB, &NumUnits); - printf("%d texture units supported, using 2.\n", NumUnits); - if (NumUnits > 2) - NumUnits = 2; - - glGetIntegerv(GL_MAX_RECTANGLE_TEXTURE_SIZE_NV, &size); - printf("%d x %d max texture rectangle size\n", size, size); - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - - for (i = 0; i < NumUnits; i++) { - TexEnabled[i] = GL_TRUE; - } - - /* allocate two texture objects */ - glGenTextures(NumUnits, texObj); - - /* setup the texture objects */ - for (i = 0; i < NumUnits; i++) { - - glActiveTextureARB(GL_TEXTURE0_ARB + i); - - glBindTexture(GL_TEXTURE_RECTANGLE_NV, texObj[i]); - glTexParameteri(GL_TEXTURE_RECTANGLE_NV, - GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_RECTANGLE_NV, - GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_WRAP_S, wrap); - glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_WRAP_T, wrap); - - if (i == 0) { - GLubyte *img = LoadRGBImage(TEXTURE_0_FILE, &Width[0], &Height[0], - &Format[0]); - if (!img) { - printf("Error: couldn't load texture image\n"); - exit(1); - } - printf("Texture %d: %s (%d x %d)\n", i, - TEXTURE_0_FILE, Width[0], Height[0]); - glTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_RGB, - Width[0], Height[0], 0, - Format[0], GL_UNSIGNED_BYTE, img); - } - else { - GLubyte *img = LoadRGBImage(TEXTURE_1_FILE, &Width[1], &Height[1], - &Format[1]); - if (!img) { - printf("Error: couldn't load texture image\n"); - exit(1); - } - printf("Texture %d: %s (%d x %d)\n", i, - TEXTURE_1_FILE, Width[1], Height[1]); - glTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_RGB, - Width[1], Height[1], 0, - Format[1], GL_UNSIGNED_BYTE, img); - } - - if (i < 1) - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_ADD); - else - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_ADD); - - if (TexEnabled[i]) - glEnable(GL_TEXTURE_RECTANGLE_NV); - } - - glShadeModel(GL_FLAT); - glClearColor(0.3, 0.3, 0.4, 1.0); - - if (argc > 1 && strcmp(argv[1], "-info")==0) { - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - printf("GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - printf("GL_EXTENSIONS = %s\n", (char *) glGetString(GL_EXTENSIONS)); - } -} - - -int main( int argc, char *argv[] ) -{ - GLint i; - - glutInit( &argc, argv ); - glutInitWindowSize( 300, 300 ); - glutInitWindowPosition( 0, 0 ); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE ); - glutCreateWindow(argv[0] ); - glewInit(); - - Init( argc, argv ); - - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutSpecialFunc( SpecialKey ); - glutDisplayFunc( Display ); - if (Animate) - glutIdleFunc( Idle ); - - glutCreateMenu(ModeMenu); - - for (i = 0; i < NumUnits; i++) { - char s[100]; - sprintf(s, "Toggle Texture %d", i); - glutAddMenuEntry(s, TEX0 + i); - } - glutAddMenuEntry("Toggle Animation", ANIMATE); - glutAddMenuEntry("GL_CLAMP", CLAMP); - glutAddMenuEntry("GL_CLAMP_TO_EDGE", CLAMP_TO_EDGE); - glutAddMenuEntry("GL_CLAMP_TO_BORDER", CLAMP_TO_BORDER); - glutAddMenuEntry("GL_NEAREST", NEAREST_FILTER); - glutAddMenuEntry("GL_LINEAR", LINEAR_FILTER); - glutAddMenuEntry("Quit", QUIT); - glutAttachMenu(GLUT_RIGHT_BUTTON); - - glutMainLoop(); - return 0; -} diff --git a/progs/tests/texwrap.c b/progs/tests/texwrap.c deleted file mode 100644 index 39c55919dd..0000000000 --- a/progs/tests/texwrap.c +++ /dev/null @@ -1,322 +0,0 @@ - -/* - * Test texture wrap modes. - * Press 'b' to toggle texture image borders. You should see the same - * rendering whether or not you're using borders. - * - * Brian Paul March 2001 - */ - - -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - - -#ifndef GL_CLAMP_TO_BORDER -#define GL_CLAMP_TO_BORDER 0x812D -#endif - -#ifndef GL_MIRRORED_REPEAT -#define GL_MIRRORED_REPEAT 0x8370 -#endif - -#ifndef GL_EXT_texture_mirror_clamp -#define GL_MIRROR_CLAMP_EXT 0x8742 -#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743 -#define GL_MIRROR_CLAMP_TO_BORDER_EXT 0x8912 -#endif - -#define BORDER_TEXTURE 1 -#define NO_BORDER_TEXTURE 2 - -#define SIZE 8 -static GLubyte BorderImage[SIZE+2][SIZE+2][4]; -static GLubyte NoBorderImage[SIZE][SIZE][4]; -static GLuint Border = 0; - -#define TILE_SIZE 110 - -#define WRAP_MODE(m) { m , # m, GL_TRUE, 1.0, { NULL, NULL } } -#define WRAP_EXT(m,e1,e2,v) { m , # m, GL_FALSE, v, { e1, e2 } } - -struct wrap_mode { - GLenum mode; - const char * name; - GLboolean supported; - GLfloat version; - const char * extension_names[2]; -}; - -static struct wrap_mode modes[] = { - WRAP_MODE( GL_REPEAT ), - WRAP_MODE( GL_CLAMP ), - WRAP_EXT ( GL_CLAMP_TO_EDGE, "GL_EXT_texture_edge_clamp", - "GL_SGIS_texture_edge_clamp", - 1.2 ), - WRAP_EXT ( GL_CLAMP_TO_BORDER, "GL_ARB_texture_border_clamp", - "GL_SGIS_texture_border_clamp", - 1.3 ), - WRAP_EXT ( GL_MIRRORED_REPEAT, "GL_ARB_texture_mirrored_repeat", - "GL_IBM_texture_mirrored_repeat", - 1.4 ), - WRAP_EXT ( GL_MIRROR_CLAMP_EXT, "GL_ATI_texture_mirror_once", - "GL_EXT_texture_mirror_clamp", - 999.0 ), - WRAP_EXT ( GL_MIRROR_CLAMP_TO_BORDER_EXT, "GL_EXT_texture_mirror_clamp", - NULL, - 999.0 ), - WRAP_EXT ( GL_MIRROR_CLAMP_TO_EDGE_EXT, "GL_ATI_texture_mirror_once", - "GL_EXT_texture_mirror_clamp", - 999.0 ), - { 0, NULL, GL_FALSE, 0.0, { NULL, NULL } } -}; - -static void -PrintString(const char *s) -{ - while (*s) { - glutBitmapCharacter(GLUT_BITMAP_8_BY_13, (int) *s); - s++; - } -} - - -static void Display( void ) -{ - GLenum i, j; - GLint offset; - GLfloat version; - - /* Fill in the extensions that are supported. - */ - - version = atof( (char *) glGetString( GL_VERSION ) ); - for ( i = 0 ; modes[i].mode != 0 ; i++ ) { - if ( ((modes[i].extension_names[0] != NULL) - && glutExtensionSupported(modes[i].extension_names[0])) - || ((modes[i].extension_names[1] != NULL) - && glutExtensionSupported(modes[i].extension_names[1])) ) { - modes[i].supported = GL_TRUE; - } - else if ( !modes[i].supported && (modes[i].version <= version) ) { - fprintf( stderr, "WARNING: OpenGL library meets minimum version\n" - " requirement for %s, but the\n" - " extension string is not advertised.\n" - " (%s%s%s)\n", - modes[i].name, - modes[i].extension_names[0], - (modes[i].extension_names[1] != NULL) - ? " or " : "", - (modes[i].extension_names[1] != NULL) - ? modes[i].extension_names[1] : "" ); - modes[i].supported = GL_TRUE; - } - } - - - glClearColor(0.5, 0.5, 0.5, 1.0); - glClear( GL_COLOR_BUFFER_BIT ); - -#if 0 - /* draw texture as image */ - glDisable(GL_TEXTURE_2D); - glWindowPos2iARB(1, 1); - glDrawPixels(6, 6, GL_RGBA, GL_UNSIGNED_BYTE, (void *) TexImage); -#endif - - glBindTexture(GL_TEXTURE_2D, Border ? BORDER_TEXTURE : NO_BORDER_TEXTURE); - - - /* loop over min/mag filters */ - for (i = 0; i < 2; i++) { - offset = 0; - - if (i) { - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - } - else { - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - } - - /* loop over border modes */ - for (j = 0; modes[j].mode != 0; j++) { - const GLfloat x0 = 0, y0 = 0, x1 = (TILE_SIZE - 10), y1 = (TILE_SIZE - 10); - const GLfloat b = 1.2; - const GLfloat s0 = -b, t0 = -b, s1 = 1.0+b, t1 = 1.0+b; - - if ( modes[j].supported != GL_TRUE ) - continue; - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, modes[j].mode); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, modes[j].mode); - - glPushMatrix(); - glTranslatef(offset * TILE_SIZE + 10, i * TILE_SIZE + 40, 0); - offset++; - - glEnable(GL_TEXTURE_2D); - glColor3f(1, 1, 1); - glBegin(GL_POLYGON); - glTexCoord2f(s0, t0); glVertex2f(x0, y0); - glTexCoord2f(s1, t0); glVertex2f(x1, y0); - glTexCoord2f(s1, t1); glVertex2f(x1, y1); - glTexCoord2f(s0, t1); glVertex2f(x0, y1); - glEnd(); - - /* draw red outline showing bounds of texture at s=0,1 and t=0,1 */ - glDisable(GL_TEXTURE_2D); - glColor3f(1, 0, 0); - glBegin(GL_LINE_LOOP); - glVertex2f(x0 + b * (x1-x0) / (s1-s0), y0 + b * (y1-y0) / (t1-t0)); - glVertex2f(x1 - b * (x1-x0) / (s1-s0), y0 + b * (y1-y0) / (t1-t0)); - glVertex2f(x1 - b * (x1-x0) / (s1-s0), y1 - b * (y1-y0) / (t1-t0)); - glVertex2f(x0 + b * (x1-x0) / (s1-s0), y1 - b * (y1-y0) / (t1-t0)); - glEnd(); - - glPopMatrix(); - } - } - - glDisable(GL_TEXTURE_2D); - glColor3f(1, 1, 1); - offset = 0; - for (i = 0; modes[i].mode != 0; i++) { - if ( modes[i].supported ) { - glWindowPos2iARB( offset * TILE_SIZE + 10, 5 + ((offset & 1) * 15) ); - PrintString(modes[i].name); - offset++; - } - } - - glutSwapBuffers(); -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glOrtho(0, width, 0, height, -1, 1); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 'b': - Border = !Border; - printf("Texture Border Size = %d\n", Border); - break; - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void Init( void ) -{ - static const GLubyte border[4] = { 0, 255, 0, 255 }; - static const GLfloat borderf[4] = { 0, 1.0, 0, 1.0 }; - GLint i, j; - - for (i = 0; i < SIZE+2; i++) { - for (j = 0; j < SIZE+2; j++) { - if (i == 0 || j == 0 || i == SIZE+1 || j == SIZE+1) { - /* border color */ - BorderImage[i][j][0] = border[0]; - BorderImage[i][j][1] = border[1]; - BorderImage[i][j][2] = border[2]; - BorderImage[i][j][3] = border[3]; - } - else if ((i + j) & 1) { - /* white */ - BorderImage[i][j][0] = 255; - BorderImage[i][j][1] = 255; - BorderImage[i][j][2] = 255; - BorderImage[i][j][3] = 255; - } - else { - /* black */ - BorderImage[i][j][0] = 0; - BorderImage[i][j][1] = 0; - BorderImage[i][j][2] = 0; - BorderImage[i][j][3] = 0; - } - } - } - - glBindTexture(GL_TEXTURE_2D, BORDER_TEXTURE); -#ifdef TEST_PBO_DLIST - /* test fetching teximage from PBO in display list */ - { - GLuint b = 42, l = 10; - - glBindBufferARB(GL_PIXEL_UNPACK_BUFFER, b); - glBufferDataARB(GL_PIXEL_UNPACK_BUFFER, sizeof(BorderImage), - BorderImage, GL_STREAM_DRAW); - - glNewList(l, GL_COMPILE); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, SIZE+2, SIZE+2, 1, - GL_RGBA, GL_UNSIGNED_BYTE, (void *) 0/* BorderImage*/); - glEndList(); - glCallList(l); - glBindBufferARB(GL_PIXEL_UNPACK_BUFFER, 0); - } -#else - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, SIZE+2, SIZE+2, 1, - GL_RGBA, GL_UNSIGNED_BYTE, (void *) BorderImage); -#endif - - for (i = 0; i < SIZE; i++) { - for (j = 0; j < SIZE; j++) { - if ((i + j) & 1) { - /* white */ - NoBorderImage[i][j][0] = 255; - NoBorderImage[i][j][1] = 255; - NoBorderImage[i][j][2] = 255; - NoBorderImage[i][j][3] = 255; - } - else { - /* black */ - NoBorderImage[i][j][0] = 0; - NoBorderImage[i][j][1] = 0; - NoBorderImage[i][j][2] = 0; - NoBorderImage[i][j][3] = 0; - } - } - } - - glBindTexture(GL_TEXTURE_2D, NO_BORDER_TEXTURE); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, SIZE, SIZE, 0, - GL_RGBA, GL_UNSIGNED_BYTE, (void *) NoBorderImage); - glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_BORDER_COLOR, borderf); -} - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 1000, 270 ); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE ); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/tkmap.c b/progs/tests/tkmap.c deleted file mode 100644 index 3ded79caca..0000000000 --- a/progs/tests/tkmap.c +++ /dev/null @@ -1,71 +0,0 @@ - -enum { - COLOR_BLACK = 0, - COLOR_RED, - COLOR_GREEN, - COLOR_YELLOW, - COLOR_BLUE, - COLOR_MAGENTA, - COLOR_CYAN, - COLOR_WHITE -}; - -static float RGBMap[9][3] = { - {0, 0, 0}, - {1, 0, 0}, - {0, 1, 0}, - {1, 1, 0}, - {0, 0, 1}, - {1, 0, 1}, - {0, 1, 1}, - {1, 1, 1}, - {0.5, 0.5, 0.5} -}; - -static void SetColor(int c) -{ - if (glutGet(GLUT_WINDOW_RGBA)) - glColor3fv(RGBMap[c]); - else - glIndexf(c); -} - -static void InitMap(void) -{ - int i; - - if (rgb) - return; - - for (i = 0; i < 9; i++) - glutSetColor(i, RGBMap[i][0], RGBMap[i][1], RGBMap[i][2]); -} - -static void SetFogRamp(int density, int startIndex) -{ - int fogValues, colorValues; - int i, j, k; - float intensity; - - fogValues = 1 << density; - colorValues = 1 << startIndex; - for (i = 0; i < colorValues; i++) { - for (j = 0; j < fogValues; j++) { - k = i * fogValues + j; - intensity = (i * fogValues + j * colorValues) / 255.0; - glutSetColor(k, intensity, intensity, intensity); - } - } -} - -static void SetGreyRamp(void) -{ - int i; - float intensity; - - for (i = 0; i < 255; i++) { - intensity = i / 255.0; - glutSetColor(i, intensity, intensity, intensity); - } -} - diff --git a/progs/tests/unfilledclip.c b/progs/tests/unfilledclip.c deleted file mode 100644 index 331cbf2f6b..0000000000 --- a/progs/tests/unfilledclip.c +++ /dev/null @@ -1,209 +0,0 @@ -/* - * Copyright © 2008 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - * - * Authors: - * Eric Anholt <eric@anholt.net> - * - */ - -#include <stdlib.h> -#include <GL/glew.h> -#include <GL/glut.h> - -static int win_width, win_height; - -#if 0 -static void -line(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2) -{ - glBegin(GL_LINES); - glVertex2f(x1, y1); - glVertex2f(x2, y2); - glEnd(); -} -#endif - -static void -line3(GLfloat x1, GLfloat y1, GLfloat z1, GLfloat x2, GLfloat y2, GLfloat z2) -{ - glBegin(GL_LINES); - glVertex3f(x1, y1, z1); - glVertex3f(x2, y2, z2); - glEnd(); -} - -static void -display(void) -{ - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - - glClearColor(0.0, 0.0, 0.0, 0.0); - glClear(GL_COLOR_BUFFER_BIT); - - glColor3f(1.0, 0.0, 0.0); - /* clipped along xmin */ - glBegin(GL_TRIANGLES); - glVertex2f(-20, win_height / 2 - 20); - glVertex2f(20, win_height / 2); - glVertex2f(-20, win_height / 2 + 20); - glEnd(); - - glColor3f(0.0, 1.0, 0.0); - /* clipped along ymax */ - glBegin(GL_TRIANGLES); - glVertex2f(win_height / 2 - 20, win_height + 20); - glVertex2f(win_height / 2, win_height - 20); - glVertex2f(win_height / 2 + 20, win_height + 20); - glEnd(); - - glColor3f(0.0, 0.0, 1.0); - /* clipped along xmax */ - glBegin(GL_TRIANGLES); - glVertex2f(win_height + 20, win_height / 2 - 20); - glVertex2f(win_height - 20, win_height / 2); - glVertex2f(win_height + 20, win_height / 2 + 20); - glEnd(); - - glColor3f(1.0, 1.0, 1.0); - /* clipped along ymin */ - glBegin(GL_TRIANGLES); - glVertex2f(win_height / 2 - 20, -20); - glVertex2f(win_height / 2, 20); - glVertex2f(win_height / 2 + 20, -20); - glEnd(); - - /* clipped along near */ - glColor3f(1.0, 0.0, 1.0); - glBegin(GL_TRIANGLES); - glVertex3f(win_width / 2 - 20, win_height / 2 - 20, 0.5); - glVertex3f(win_width / 2 - 40, win_height / 2, -0.5); - glVertex3f(win_width / 2 - 20, win_height / 2 + 20, 0.5); - glEnd(); - - /* clipped along far */ - glColor3f(0.0, 1.0, 1.0); - glBegin(GL_TRIANGLES); - glVertex3f(win_width / 2 + 20, win_height / 2 - 20, 0.5); - glVertex3f(win_width / 2 + 40, win_height / 2, 1.5); - glVertex3f(win_width / 2 + 20, win_height / 2 + 20, 0.5); - glEnd(); - - /* entirely clipped along near/far */ - glColor3f(.5, .5, .5); - glBegin(GL_TRIANGLES); - glVertex3f(win_width / 2 - 20, win_height / 2 + 20, -0.5); - glVertex3f(win_width / 2, win_height / 2 + 40, -0.5); - glVertex3f(win_width / 2 + 20, win_height / 2 + 20, -0.5); - glEnd(); - - glBegin(GL_TRIANGLES); - glVertex3f(win_width / 2 - 20, win_height / 2 - 20, 1.5); - glVertex3f(win_width / 2, win_height / 2 - 40, 1.5); - glVertex3f(win_width / 2 + 20, win_height / 2 - 20, 1.5); - glEnd(); - - glColor3f(.5, .5, .5); - line3(win_width / 2, win_height / 2 - 20, 1.5, - win_width / 2, win_height / 2 + 20, 1.5); - - glColor3f(1.0, 1.0, 0.0); - /* clipped along both x and y limits */ - glBegin(GL_TRIANGLES); /* xmin, ymin */ - glVertex2f(-5, 20); - glVertex2f(20, 20); - glVertex2f(20, -5); - glEnd(); - glBegin(GL_TRIANGLES); /* xmin, ymax */ - glVertex2f(-5, win_height - 20); - glVertex2f(20, win_height - 20); - glVertex2f(20, win_height + 5); - glEnd(); - glBegin(GL_TRIANGLES); /* xmax, ymax */ - glVertex2f(win_width - 20, win_height + 5); - glVertex2f(win_width - 20, win_height - 20); - glVertex2f(win_width + 5, win_height - 20); - glEnd(); - glBegin(GL_TRIANGLES); /* xmax, ymin */ - glVertex2f(win_width + 5, 20); - glVertex2f(win_width - 20, 20); - glVertex2f(win_width - 20, -5); - glEnd(); - - glutSwapBuffers(); -} - -static void -reshape(int width, int height) -{ - win_width = width; - win_height = height; - glViewport(0, 0, width, height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(0, win_width, 0, win_height, 0.0, -1.0); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(.25, .25, 0); -} - -static void key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - - switch (key) { - case 27: /* esc */ - exit(0); - break; - } - - glutPostRedisplay(); -} - -static void -init(void) -{ -} - -int -main(int argc, char *argv[]) -{ - win_width = 200; - win_height = 200; - - glutInit(&argc, argv); - glutInitWindowPosition(0, 0); - glutInitWindowSize(win_width, win_height); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc(reshape); - glutKeyboardFunc(key); - glutDisplayFunc(display); - - init(); - - glutMainLoop(); - return 0; -} diff --git a/progs/tests/vao-01.c b/progs/tests/vao-01.c deleted file mode 100644 index e4a89cb19d..0000000000 --- a/progs/tests/vao-01.c +++ /dev/null @@ -1,179 +0,0 @@ -/* - * (C) Copyright IBM Corporation 2006 - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * on the rights to use, copy, modify, merge, publish, distribute, sub - * license, and/or sell copies of the Software, and to permit persons to whom - * the Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL - * IBM AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ - -/** - * \file vao-01.c - * - * Simple test of APPLE_vertex_array_object functionality. This test creates - * a VAO, pushed it (via \c glPushClientAttrib), modifies the VAO, then pops - * it (via \c glPopClientAttrib). After popping, the state of the VAO is - * examined. - * - * According the the APPLE_vertex_array_object spec, the contents of the VAO - * should be restored to the values that they had when pushed. - * - * \author Ian Romanick <idr@us.ibm.com> - */ - -#include <stdio.h> -#include <stdlib.h> -#include <math.h> - -#ifdef __darwin__ -#include <GLUT/glut.h> - -typedef void (* PFNGLBINDVERTEXARRAYAPPLEPROC) (GLuint array); -typedef void (* PFNGLDELETEVERTEXARRAYSAPPLEPROC) (GLsizei n, const GLuint *arrays); -typedef void (* PFNGLGENVERTEXARRAYSAPPLEPROC) (GLsizei n, GLuint *arrays); -typedef GLboolean (* PFNGLISVERTEXARRAYAPPLEPROC) (GLuint array); - -#else -#include <GL/glew.h> -#include <GL/glut.h> -#endif - -static PFNGLBINDVERTEXARRAYAPPLEPROC bind_vertex_array = NULL; -static PFNGLGENVERTEXARRAYSAPPLEPROC gen_vertex_arrays = NULL; -static PFNGLDELETEVERTEXARRAYSAPPLEPROC delete_vertex_arrays = NULL; -static PFNGLISVERTEXARRAYAPPLEPROC is_vertex_array = NULL; - -static int Width = 400; -static int Height = 200; -static const GLfloat Near = 5.0, Far = 25.0; - - -static void Display( void ) -{ -} - - -static void Idle( void ) -{ -} - - -static void Visible( int vis ) -{ - if ( vis == GLUT_VISIBLE ) { - glutIdleFunc( Idle ); - } - else { - glutIdleFunc( NULL ); - } -} -static void Reshape( int width, int height ) -{ - GLfloat ar = (float) width / (float) height; - Width = width; - Height = height; - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -ar, ar, -1.0, 1.0, Near, Far ); -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void Init( void ) -{ - const char * const ver_string = (const char * const) - glGetString( GL_VERSION ); - GLuint obj; - int pass = 1; - void * ptr; - - - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - printf("GL_VERSION = %s\n\n", ver_string); - - if ( !glutExtensionSupported("GL_APPLE_vertex_array_object") ) { - printf("Sorry, this program requires GL_APPLE_vertex_array_object\n"); - exit(2); - } - - bind_vertex_array = (PFNGLBINDVERTEXARRAYAPPLEPROC) glutGetProcAddress( "glBindVertexArrayAPPLE" ); - gen_vertex_arrays = (PFNGLGENVERTEXARRAYSAPPLEPROC) glutGetProcAddress( "glGenVertexArraysAPPLE" ); - delete_vertex_arrays = (PFNGLDELETEVERTEXARRAYSAPPLEPROC) glutGetProcAddress( "glDeleteVertexArraysAPPLE" ); - is_vertex_array = (PFNGLISVERTEXARRAYAPPLEPROC) glutGetProcAddress( "glIsVertexArrayAPPLE" ); - - - (*gen_vertex_arrays)( 1, & obj ); - (*bind_vertex_array)( obj ); - glVertexPointer( 4, GL_FLOAT, sizeof(GLfloat) * 4, (void *) 0xDEADBEEF); - glEnableClientState( GL_VERTEX_ARRAY ); - - glPushClientAttrib( GL_CLIENT_VERTEX_ARRAY_BIT ); - - glVertexPointer( 4, GL_FLOAT, sizeof(GLfloat) * 4, (void *) 0xBADDC0DE); - glDisableClientState( GL_VERTEX_ARRAY ); - - glPopClientAttrib(); - - if ( ! glIsEnabled( GL_VERTEX_ARRAY ) ) { - printf( "Array state is incorrectly disabled.\n" ); - pass = 0; - } - - glGetPointerv( GL_VERTEX_ARRAY_POINTER, & ptr ); - if ( ptr != (void *) 0xDEADBEEF ) { - printf( "Array pointer is incorrectly set to 0x%p.\n", ptr ); - pass = 0; - } - - if ( ! pass ) { - printf( "FAIL!\n" ); - exit(1); - } -} - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( Width, Height ); - glutInitDisplayMode( GLUT_RGB ); - glutCreateWindow( "GL_APPLE_vertex_array_object demo" ); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - glutVisibilityFunc( Visible ); - - Init(); - - return 0; -} diff --git a/progs/tests/vao-02.c b/progs/tests/vao-02.c deleted file mode 100644 index 9f7f5c2779..0000000000 --- a/progs/tests/vao-02.c +++ /dev/null @@ -1,207 +0,0 @@ -/* - * (C) Copyright IBM Corporation 2006 - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * on the rights to use, copy, modify, merge, publish, distribute, sub - * license, and/or sell copies of the Software, and to permit persons to whom - * the Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL - * IBM AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ - -/** - * \file vao-02.c - * - * Simple test of APPLE_vertex_array_object functionality. This test creates - * a VAO, pushed it (via \c glPushClientAttrib), deletes the VAO, then pops - * it (via \c glPopClientAttrib). After popping, the state of the VAO is - * examined. - * - * According the the APPLE_vertex_array_object spec, the contents of the VAO - * should be restored to the values that they had when pushed. - * - * \author Ian Romanick <idr@us.ibm.com> - */ - -#include <stdio.h> -#include <stdlib.h> -#include <math.h> - -#ifdef __darwin__ -#include <GLUT/glut.h> - -typedef void (* PFNGLBINDVERTEXARRAYAPPLEPROC) (GLuint array); -typedef void (* PFNGLDELETEVERTEXARRAYSAPPLEPROC) (GLsizei n, const GLuint *arrays); -typedef void (* PFNGLGENVERTEXARRAYSAPPLEPROC) (GLsizei n, GLuint *arrays); -typedef GLboolean (* PFNGLISVERTEXARRAYAPPLEPROC) (GLuint array); - -#else -#include <GL/glew.h> -#include <GL/glut.h> -#endif - -static PFNGLBINDVERTEXARRAYAPPLEPROC bind_vertex_array = NULL; -static PFNGLGENVERTEXARRAYSAPPLEPROC gen_vertex_arrays = NULL; -static PFNGLDELETEVERTEXARRAYSAPPLEPROC delete_vertex_arrays = NULL; -static PFNGLISVERTEXARRAYAPPLEPROC is_vertex_array = NULL; - -static int Width = 400; -static int Height = 200; -static const GLfloat Near = 5.0, Far = 25.0; - - -static void Display( void ) -{ -} - - -static void Idle( void ) -{ -} - - -static void Visible( int vis ) -{ - if ( vis == GLUT_VISIBLE ) { - glutIdleFunc( Idle ); - } - else { - glutIdleFunc( NULL ); - } -} -static void Reshape( int width, int height ) -{ - GLfloat ar = (float) width / (float) height; - Width = width; - Height = height; - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -ar, ar, -1.0, 1.0, Near, Far ); -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void Init( void ) -{ - const char * const ver_string = (const char * const) - glGetString( GL_VERSION ); - GLuint obj; - int pass = 1; - void * ptr; - GLenum err; - - - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - printf("GL_VERSION = %s\n\n", ver_string); - - if ( !glutExtensionSupported("GL_APPLE_vertex_array_object") ) { - printf("Sorry, this program requires GL_APPLE_vertex_array_object\n"); - exit(2); - } - - bind_vertex_array = (PFNGLBINDVERTEXARRAYAPPLEPROC) glutGetProcAddress( "glBindVertexArrayAPPLE" ); - gen_vertex_arrays = (PFNGLGENVERTEXARRAYSAPPLEPROC) glutGetProcAddress( "glGenVertexArraysAPPLE" ); - delete_vertex_arrays = (PFNGLDELETEVERTEXARRAYSAPPLEPROC) glutGetProcAddress( "glDeleteVertexArraysAPPLE" ); - is_vertex_array = (PFNGLISVERTEXARRAYAPPLEPROC) glutGetProcAddress( "glIsVertexArrayAPPLE" ); - - - (*gen_vertex_arrays)( 1, & obj ); - (*bind_vertex_array)( obj ); - glVertexPointer( 4, GL_FLOAT, sizeof(GLfloat) * 4, (void *) 0xDEADBEEF); - glEnableClientState( GL_VERTEX_ARRAY ); - - glPushClientAttrib( GL_CLIENT_VERTEX_ARRAY_BIT ); - - (*delete_vertex_arrays)( 1, & obj ); - - err = glGetError(); - if (err) { - printf( "glGetError incorrectly returned 0x%04x.\n", err ); - pass = 0; - } - - if ( (*is_vertex_array)( obj ) ) { - printf( "Array object is incorrectly still valid.\n" ); - pass = 0; - } - - err = glGetError(); - if (err) { - printf( "glGetError incorrectly returned 0x%04x.\n", err ); - pass = 0; - } - - glPopClientAttrib(); - - err = glGetError(); - if (err) { - printf( "glGetError incorrectly returned 0x%04x.\n", err ); - pass = 0; - } - - if ( ! (*is_vertex_array)( obj ) ) { - printf( "Array object is incorrectly invalid.\n" ); - pass = 0; - } - - if ( ! glIsEnabled( GL_VERTEX_ARRAY ) ) { - printf( "Array state is incorrectly disabled.\n" ); - pass = 0; - } - - glGetPointerv( GL_VERTEX_ARRAY_POINTER, & ptr ); - if ( ptr != (void *) 0xDEADBEEF ) { - printf( "Array pointer is incorrectly set to 0x%p.\n", ptr ); - pass = 0; - } - - if ( ! pass ) { - printf( "FAIL!\n" ); - exit(1); - } -} - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( Width, Height ); - glutInitDisplayMode( GLUT_RGB ); - glutCreateWindow( "GL_APPLE_vertex_array_object demo" ); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - glutVisibilityFunc( Visible ); - - Init(); - - return 0; -} diff --git a/progs/tests/vparray.c b/progs/tests/vparray.c deleted file mode 100644 index 75160afd46..0000000000 --- a/progs/tests/vparray.c +++ /dev/null @@ -1,297 +0,0 @@ -/* - * Test vertex arrays with GL_NV_vertex_program - * - * Based on a stripped-down version of the isosurf demo. - * The vertex program is trivial: compute the resulting - * RGB color as a linear function of vertex XYZ. - */ - -#include <assert.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <math.h> -#include "GL/glew.h" -#include "GL/glut.h" - -#define MAXVERTS 10000 -static float data[MAXVERTS][6]; -static GLint numverts; - -static GLfloat xrot; -static GLfloat yrot; -static GLboolean useArrays = GL_TRUE; -static GLboolean useProgram = GL_TRUE; -static GLboolean useList = GL_FALSE; - - -static void read_surface( char *filename ) -{ - FILE *f; - - f = fopen(filename,"r"); - if (!f) { - printf("couldn't read %s\n", filename); - exit(1); - } - - numverts = 0; - while (numverts < MAXVERTS) { - int result; - result = fscanf( f, "%f %f %f %f %f %f", - &data[numverts][0], &data[numverts][1], &data[numverts][2], - &data[numverts][3], &data[numverts][4], &data[numverts][5] ); - if (result == EOF) { - break; - } - numverts++; - } - - printf("%d vertices, %d triangles\n", numverts, numverts-2); - printf("data = %p\n", (void *) data); - fclose(f); -} - - - - -static void Display(void) -{ - if (useProgram) - glEnable(GL_VERTEX_PROGRAM_NV); - else - glDisable(GL_VERTEX_PROGRAM_NV); - - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - glPushMatrix(); - glRotatef(xrot, 1, 0, 0); - glRotatef(yrot, 0, 1, 0); - glScalef(2, 2, 2); - if (useArrays) { - if (useProgram) { - glVertexAttribPointerNV( 0, 3, GL_FLOAT, 6 * sizeof(GLfloat), data ); - glEnableClientState( GL_VERTEX_ATTRIB_ARRAY0_NV ); - glVertexAttribPointerNV( 2, 3, GL_FLOAT, 6 * sizeof(GLfloat), ((GLfloat *) data) + 3); - glEnableClientState( GL_VERTEX_ATTRIB_ARRAY2_NV); - } - else { - glVertexPointer( 3, GL_FLOAT, 6 * sizeof(GLfloat), data ); - glEnableClientState( GL_VERTEX_ARRAY ); - glNormalPointer( GL_FLOAT, 6 * sizeof(GLfloat), ((GLfloat *) data) + 3); - glEnableClientState( GL_NORMAL_ARRAY ); - } - - if (useList) { - /* dumb, but a good test */ - glNewList(1,GL_COMPILE); - glDrawArrays(GL_TRIANGLE_STRIP, 0, numverts); - glEndList(); - glCallList(1); - } - else { - glDrawArrays(GL_TRIANGLE_STRIP, 0, numverts); - } - - glDisableClientState( GL_VERTEX_ATTRIB_ARRAY0_NV ); - glDisableClientState( GL_VERTEX_ATTRIB_ARRAY2_NV); - glDisableClientState( GL_VERTEX_ARRAY ); - glDisableClientState( GL_NORMAL_ARRAY ); - } - else { - int i; - glBegin(GL_TRIANGLE_STRIP); - for (i = 0; i < numverts; i++) { - glNormal3fv( data[i] + 3 ); - glVertex3fv( data[i] + 0 ); - } - glEnd(); - } - glPopMatrix(); - - if (glGetError()) - printf("Error!\n"); - - glutSwapBuffers(); -} - - -static void InitMaterials(void) -{ - static float ambient[] = {0.1, 0.1, 0.1, 1.0}; - static float diffuse[] = {0.5, 1.0, 1.0, 1.0}; - static float position0[] = {0.0, 0.0, 20.0, 0.0}; - static float position1[] = {0.0, 0.0, -20.0, 0.0}; - static float front_mat_shininess[] = {60.0}; - static float front_mat_specular[] = {0.2, 0.2, 0.2, 1.0}; - static float front_mat_diffuse[] = {0.5, 0.28, 0.38, 1.0}; - /* - static float back_mat_shininess[] = {60.0}; - static float back_mat_specular[] = {0.5, 0.5, 0.2, 1.0}; - static float back_mat_diffuse[] = {1.0, 1.0, 0.2, 1.0}; - */ - static float lmodel_ambient[] = {1.0, 1.0, 1.0, 1.0}; - static float lmodel_twoside[] = {GL_FALSE}; - - glLightfv(GL_LIGHT0, GL_AMBIENT, ambient); - glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse); - glLightfv(GL_LIGHT0, GL_POSITION, position0); - glEnable(GL_LIGHT0); - - glLightfv(GL_LIGHT1, GL_AMBIENT, ambient); - glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse); - glLightfv(GL_LIGHT1, GL_POSITION, position1); - glEnable(GL_LIGHT1); - - glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient); - glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, lmodel_twoside); - - glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, front_mat_shininess); - glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, front_mat_specular); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, front_mat_diffuse); - glEnable(GL_LIGHTING); -} - - -static void init_program(void) -{ - /* - * c[0..3] = modelview matrix - * c[4..7] = inverse modelview matrix - * c[30] = color scale - * c[31] = color bias - */ - static const char prog[] = - "!!VP1.0\n" - - "# RGB is proportional to XYZ \n" - - "MUL R0, v[OPOS], c[30]; \n" - "ADD o[COL0], R0, c[31]; \n" - - "# Continue with typical modelview/projection\n" - "MOV R3, v[OPOS]; \n" - "DP4 o[HPOS].x, c[0], R3 ; # object x MVP -> clip\n" - "DP4 o[HPOS].y, c[1], R3 ;\n" - "DP4 o[HPOS].z, c[2], R3 ;\n" - "DP4 o[HPOS].w, c[3], R3 ;\n" - - "END"; - - static const GLfloat scale[4] = {2.0, 2.0, 2.0, 0.0}; - static const GLfloat bias[4] = {1.0, 1.0, 1.0, 0.0}; - - if (!glutExtensionSupported("GL_NV_vertex_program")) { - printf("Sorry, this program requires GL_NV_vertex_program\n"); - exit(1); - } - - glLoadProgramNV(GL_VERTEX_PROGRAM_NV, 1, - strlen(prog), (const GLubyte *) prog); - assert(glIsProgramNV(1)); - glBindProgramNV(GL_VERTEX_PROGRAM_NV, 1); - - /* Load the program registers */ - glTrackMatrixNV(GL_VERTEX_PROGRAM_NV, 0, GL_MODELVIEW_PROJECTION_NV, GL_IDENTITY_NV); - glTrackMatrixNV(GL_VERTEX_PROGRAM_NV, 4, GL_MODELVIEW, GL_INVERSE_TRANSPOSE_NV); - - glProgramParameter4fvNV(GL_VERTEX_PROGRAM_NV, 30, scale); - glProgramParameter4fvNV(GL_VERTEX_PROGRAM_NV, 31, bias); -} - - -static void init(void) -{ - xrot = 0; - yrot = 0; - glClearColor(0.0, 0.0, 1.0, 0.0); - glEnable( GL_DEPTH_TEST ); - glEnable(GL_NORMALIZE); - InitMaterials(); - read_surface( "../demos/isosurf.dat" ); - init_program(); -} - - -static void Reshape(int width, int height) -{ - glViewport(0, 0, (GLint)width, (GLint)height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum( -1.0, 1.0, -1.0, 1.0, 5, 25 ); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0, 0, -15); -} - - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - case 'a': - useArrays = !useArrays; - printf("use arrays: %s\n", useArrays ? "yes" : "no"); - break; - case 'l': - useList = !useList; - printf("use list: %s\n", useList ? "yes" : "no"); - break; - case 'p': - useProgram = !useProgram; - printf("use program: %s\n", useProgram ? "yes" : "no"); - break; - } - glutPostRedisplay(); -} - - -static void SpecialKey( int key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case GLUT_KEY_LEFT: - yrot -= 15.0; - break; - case GLUT_KEY_RIGHT: - yrot += 15.0; - break; - case GLUT_KEY_UP: - xrot += 15.0; - break; - case GLUT_KEY_DOWN: - xrot -= 15.0; - break; - default: - return; - } - glutPostRedisplay(); -} - - - -int main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode( GLUT_DEPTH | GLUT_RGB | GLUT_DOUBLE ); - glutInitWindowPosition(0, 0); - glutInitWindowSize(400, 400); - if (glutCreateWindow("Isosurface") <= 0) { - exit(0); - } - glewInit(); - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutSpecialFunc(SpecialKey); - glutDisplayFunc(Display); - - init(); - - glutMainLoop(); - return 0; -} diff --git a/progs/tests/vpeval.c b/progs/tests/vpeval.c deleted file mode 100644 index 3e8a732df5..0000000000 --- a/progs/tests/vpeval.c +++ /dev/null @@ -1,232 +0,0 @@ -/* - * Vertex program evaluators test. - * Based on book/bezmesh.c - * - * Brian Paul - * 22 June 2002 - */ - -#include <assert.h> -#include <stdlib.h> -#include <stdio.h> -#include <string.h> -#include <GL/glew.h> -#include <GL/glut.h> - - -/* - * Transform position by modelview/projection. - * Square incoming color. - */ -static const char prog[] = -"!!VP1.0\n" - -"# Typical modelview/projection\n" -"DP4 o[HPOS].x, c[0], v[OPOS] ; # object x MVP -> clip\n" -"DP4 o[HPOS].y, c[1], v[OPOS] ;\n" -"DP4 o[HPOS].z, c[2], v[OPOS] ;\n" -"DP4 o[HPOS].w, c[3], v[OPOS] ;\n" - -"MOV R0, v[COL0];\n # square the color\n" -"MUL R0, R0, R0;\n" -"MOV o[COL0], R0;\n # store output color\n" - -"END"; - - -static int program = 1; - - -GLfloat ctrlpoints[4][4][4] = -{ - { - {-1.5, -1.5, 4.0, 1.0}, - {-0.5, -1.5, 2.0, 1.0}, - {0.5, -1.5, -1.0, 1.0}, - {1.5, -1.5, 2.0, 1.0}}, - { - {-1.5, -0.5, 1.0, 1.0}, - {-0.5, -0.5, 3.0, 1.0}, - {0.5, -0.5, 0.0, 1.0}, - {1.5, -0.5, -1.0, 1.0}}, - { - {-1.5, 0.5, 4.0, 1.0}, - {-0.5, 0.5, 0.0, 1.0}, - {0.5, 0.5, 3.0, 1.0}, - {1.5, 0.5, 4.0, 1.0}}, - { - {-1.5, 1.5, -2.0, 1.0}, - {-0.5, 1.5, -2.0, 1.0}, - {0.5, 1.5, 0.0, 1.0}, - {1.5, 1.5, -1.0, 1.0}} -}; - -/* - * +-------------+ - * |green |yellow - * | | - * | | - * |black |red - * +-------------+ - */ -GLfloat colorPoints[4][4][4] = -{ - { - {0.0, 0.0, 0.0, 1.0}, - {0.3, 0.0, 0.0, 1.0}, - {0.6, 0.0, 0.0, 1.0}, - {1.0, 0.0, 0.0, 1.0}}, - { - {0.0, 0.3, 0.0, 1.0}, - {0.3, 0.3, 0.0, 1.0}, - {0.6, 0.3, 0.0, 1.0}, - {1.0, 0.3, 0.0, 1.0}}, - { - {0.0, 0.6, 0.0, 1.0}, - {0.3, 0.6, 0.0, 1.0}, - {0.6, 0.6, 0.0, 1.0}, - {1.0, 0.6, 0.0, 1.0}}, - { - {0.0, 1.0, 0.0, 1.0}, - {0.3, 1.0, 0.0, 1.0}, - {0.6, 1.0, 0.0, 1.0}, - {1.0, 1.0, 0.0, 1.0}} -}; - - -static void -initlights(void) -{ -#if 0 /* no lighting for now */ - GLfloat ambient[] = {0.2, 0.2, 0.2, 1.0}; - GLfloat position[] = {0.0, 0.0, 2.0, 1.0}; - GLfloat mat_diffuse[] = {0.6, 0.6, 0.6, 1.0}; - GLfloat mat_specular[] = {1.0, 1.0, 1.0, 1.0}; - GLfloat mat_shininess[] = {50.0}; - - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - - glLightfv(GL_LIGHT0, GL_AMBIENT, ambient); - glLightfv(GL_LIGHT0, GL_POSITION, position); - - glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); - glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); - glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); -#endif -} - -static void -display(void) -{ - glClearColor(.3, .3, .3, 0); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glPushMatrix(); -#if 1 - glRotatef(85.0, 1.0, 1.0, 1.0); -#endif - glEvalMesh2(GL_FILL, 0, 8, 0, 8); - glPopMatrix(); - glFlush(); -} - -static void -myinit(int argc, char *argv[]) -{ - glClearColor(0.0, 0.0, 0.0, 1.0); - glEnable(GL_DEPTH_TEST); - - initlights(); /* for lighted version only */ - - glMapGrid2f(8, 0.0, 1.0, 8, 0.0, 1.0); - - if (argc > 1) - program = 0; - - printf("Using vertex program attribs? %s\n", program ? "yes" : "no"); - - if (!program) { - glMap2f(GL_MAP2_VERTEX_4, - 0.0, 1.0, 4, 4, - 0.0, 1.0, 16, 4, &ctrlpoints[0][0][0]); - glMap2f(GL_MAP2_COLOR_4, - 0.0, 1.0, 4, 4, - 0.0, 1.0, 16, 4, &colorPoints[0][0][0]); - glEnable(GL_MAP2_VERTEX_4); - glEnable(GL_MAP2_COLOR_4); - /* - glEnable(GL_AUTO_NORMAL); - glEnable(GL_NORMALIZE); - */ - } - else { - glMap2f(GL_MAP2_VERTEX_ATTRIB0_4_NV, - 0.0, 1.0, 4, 4, - 0.0, 1.0, 16, 4, &ctrlpoints[0][0][0]); - glMap2f(GL_MAP2_VERTEX_ATTRIB3_4_NV, - 0.0, 1.0, 4, 4, - 0.0, 1.0, 16, 4, &colorPoints[0][0][0]); - glEnable(GL_MAP2_VERTEX_ATTRIB0_4_NV); - glEnable(GL_MAP2_VERTEX_ATTRIB3_4_NV); - - /* - glEnable(GL_AUTO_NORMAL); - glEnable(GL_NORMALIZE); - */ - - /* vertex program init */ - glLoadProgramNV(GL_VERTEX_PROGRAM_NV, 1, - strlen(prog), (const GLubyte *) prog); - assert(glIsProgramNV(1)); - glBindProgramNV(GL_VERTEX_PROGRAM_NV, 1); - - /* track matrices */ - glTrackMatrixNV(GL_VERTEX_PROGRAM_NV, 0, GL_MODELVIEW_PROJECTION_NV, GL_IDENTITY_NV); - glEnable(GL_VERTEX_PROGRAM_NV); - } -} - -static void -myReshape(int w, int h) -{ - glViewport(0, 0, w, h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - if (w <= h) - glOrtho(-4.0, 4.0, -4.0 * (GLfloat) h / (GLfloat) w, - 4.0 * (GLfloat) h / (GLfloat) w, -4.0, 4.0); - else - glOrtho(-4.0 * (GLfloat) w / (GLfloat) h, - 4.0 * (GLfloat) w / (GLfloat) h, -4.0, 4.0, -4.0, 4.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -static void -key(unsigned char k, int x, int y) -{ - switch (k) { - case 27: /* Escape */ - exit(0); - break; - default: - return; - } - glutPostRedisplay(); -} - -int -main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); - glutInitWindowPosition(0, 0); - glutCreateWindow(argv[0]); - glewInit(); - myinit(argc, argv); - glutReshapeFunc(myReshape); - glutDisplayFunc(display); - glutKeyboardFunc(key); - glutMainLoop(); - return 0; /* ANSI C requires main to return int. */ -} diff --git a/progs/tests/vptest1.c b/progs/tests/vptest1.c deleted file mode 100644 index 6e32b03346..0000000000 --- a/progs/tests/vptest1.c +++ /dev/null @@ -1,171 +0,0 @@ -/* Test glGenProgramsNV(), glIsProgramNV(), glLoadProgramNV() */ - -#include <assert.h> -#include <string.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - - - -static void Display( void ) -{ - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - glPushMatrix(); - - glBegin(GL_POLYGON); - glVertexAttrib2fNV(0, -1, -1); - glVertexAttrib2fNV(0, 1, -1); - glVertexAttrib2fNV(0, 0, 1); - glEnd(); - - glPopMatrix(); - - glutSwapBuffers(); -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -1.0, 1.0, -1.0, 1.0, 5.0, 25.0 ); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - glTranslatef( 0.0, 0.0, -15.0 ); -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void Init( void ) -{ - static const char *prog1 = - "!!VP1.0\n" - "MUL o[COL0].xyz, R0, c[35]; \n" - "END\n"; - static const char *prog2 = - "!!VP1.0\n" - "#\n" - "# c[0-3] = modelview projection (composite) matrix\n" - "# c[32] = normalized light direction in object-space\n" - "# c[35] = yellow diffuse material, (1.0, 1.0, 0.0, 1.0)\n" - "# c[64].x = 0.0\n" - "# c[64].z = 0.125, a scaling factor\n" - "#\n" - "# outputs diffuse illumination for color and perturbed position\n" - "#\n" - "DP3 R0, c[32], v[NRML]; # light direction DOT normal\n" - "MUL o[COL0].xyz, R0, c[35]; \n" - "MAX R0, c[64].x, R0; \n" - "MUL R0, R0, v[NRML]; \n" - "MUL R0, R0, c[64].z; \n" - "ADD R1, v[OPOS], -R0; # perturb object space position\n" - "DP4 o[HPOS].x, c[0], R1; \n" - "DP4 o[HPOS].y, c[1], R1; \n" - "DP4 o[HPOS].z, c[2], R1; \n" - "DP4 o[HPOS].w, c[3], R1; \n" - "END\n"; - static const char *prog3 = - "!!VP1.0\n" - "DP4 o[HPOS].x, c[0], v[OPOS];\n" - "DP4 o[HPOS].y, c[1], v[OPOS];\n" - "DP4 o[HPOS].z, c[2], v[OPOS];\n" - "DP4 o[HPOS].w, c[3], v[OPOS];\n" - "DP3 R0.x, c[4], v[NRML];\n" - "DP3 R0.y, c[5], v[NRML]; \n" - "DP3 R0.z, c[6], v[NRML]; # R0 = n' = transformed normal\n" - "DP3 R1.x, c[32], R0; # R1.x = Lpos DOT n'\n" - "DP3 R1.y, c[33], R0; # R1.y = hHat DOT n'\n" - "MOV R1.w, c[38].x; # R1.w = specular power\n" - "LIT R2, R1; # Compute lighting values\n" - "MAD R3, c[35].x, R2.y, c[35].y; # diffuse + emissive\n" - "MAD o[COL0].xyz, c[36], R2.z, R3; # + specular\n" - "END\n"; - static const char *prog4 = - "!!VP1.0\n" - "DP4 R2, R3, c[A0.x];\n" - "DP4 R2, R3, c[A0.x + 5];\n" - "DP4 o[HPOS], R3, c[A0.x - 4];\n" - "END\n"; - static const char *prog5 = - "!!VSP1.0\n" - "DP4 R2, R3, c[A0.x];\n" - "DP4 R2, R3, v[0];\n" - "DP4 c[3], R3, R2;\n" - "END\n"; - - - GLuint progs[5]; - - glGenProgramsNV(2, progs); - assert(progs[0]); - assert(progs[1]); - assert(progs[0] != progs[1]); - - glGenProgramsNV(3, progs + 2); - assert(progs[2]); - assert(progs[3]); - assert(progs[2] != progs[3]); - assert(progs[0] != progs[2]); - - - glLoadProgramNV(GL_VERTEX_PROGRAM_NV, 1, - strlen(prog1), - (const GLubyte *) prog1); - assert(glIsProgramNV(1)); - - glLoadProgramNV(GL_VERTEX_PROGRAM_NV, 2, - strlen(prog2), - (const GLubyte *) prog2); - assert(glIsProgramNV(2)); - - glLoadProgramNV(GL_VERTEX_PROGRAM_NV, 3, - strlen(prog3), - (const GLubyte *) prog3); - assert(glIsProgramNV(3)); - - glLoadProgramNV(GL_VERTEX_PROGRAM_NV, 4, - strlen(prog4), - (const GLubyte *) prog4); - assert(glIsProgramNV(4)); - - glLoadProgramNV(GL_VERTEX_STATE_PROGRAM_NV, 5, - strlen(prog5), - (const GLubyte *) prog5); - assert(glIsProgramNV(5)); - - printf("glGetError = %d\n", (int) glGetError()); -} - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 250, 250 ); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH ); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/vptest2.c b/progs/tests/vptest2.c deleted file mode 100644 index 4161b03a67..0000000000 --- a/progs/tests/vptest2.c +++ /dev/null @@ -1,152 +0,0 @@ -/* Test vertex state program execution */ - -#include <assert.h> -#include <string.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - - - -static void Display( void ) -{ - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - glPushMatrix(); - glutSolidCube(2.0); - glPopMatrix(); - glutSwapBuffers(); -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -1.0, 1.0, -1.0, 1.0, 5.0, 25.0 ); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - glTranslatef( 0.0, 0.0, -15.0 ); -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void Test1( void ) -{ - static const GLfloat p[4] = {9, 8, 7, 6}; - GLfloat q[4]; - /* test addition */ - static const char *prog = - "!!VSP1.0\n" - "MOV R0, c[0];\n" - "MOV R1, c[1];\n" - "ADD c[2], R0, R1;\n" - "END\n"; - - glLoadProgramNV(GL_VERTEX_STATE_PROGRAM_NV, 1, - strlen(prog), - (const GLubyte *) prog); - assert(glIsProgramNV(1)); - - glProgramParameter4fNV(GL_VERTEX_PROGRAM_NV, 0, 1, 2, 3, 4); - glProgramParameter4fNV(GL_VERTEX_PROGRAM_NV, 1, 10, 20, 30, 40); - - glExecuteProgramNV(GL_VERTEX_STATE_PROGRAM_NV, 1, p); - - glGetProgramParameterfvNV(GL_VERTEX_PROGRAM_NV, 2, GL_PROGRAM_PARAMETER_NV, q); - printf("Result c[2] = %g %g %g %g (should be 11 22 33 44)\n", - q[0], q[1], q[2], q[3]); -} - - -static void Test2( void ) -{ - static const GLfloat p[4] = {9, 8, 7, 6}; - GLfloat q[4]; - /* test swizzling */ - static const char *prog = - "!!VSP1.0\n" - "MOV R0, c[0].wzyx;\n" - "MOV R1, c[1].wzyx;\n" - "ADD c[2], R0, R1;\n" - "END\n"; - - glLoadProgramNV(GL_VERTEX_STATE_PROGRAM_NV, 1, - strlen(prog), - (const GLubyte *) prog); - assert(glIsProgramNV(1)); - - glProgramParameter4fNV(GL_VERTEX_PROGRAM_NV, 0, 1, 2, 3, 4); - glProgramParameter4fNV(GL_VERTEX_PROGRAM_NV, 1, 10, 20, 30, 40); - - glExecuteProgramNV(GL_VERTEX_STATE_PROGRAM_NV, 1, p); - - glGetProgramParameterfvNV(GL_VERTEX_PROGRAM_NV, 2, GL_PROGRAM_PARAMETER_NV, q); - printf("Result c[2] = %g %g %g %g (should be 44 33 22 11)\n", - q[0], q[1], q[2], q[3]); -} - - -static void Test3( void ) -{ - static const GLfloat p[4] = {0, 0, 0, 0}; - GLfloat q[4]; - /* normalize vector */ - static const char *prog = - "!!VSP1.0\n" - "# c[0] = (nx,ny,nz)\n" - "# R0.xyz = normalize(R1)\n" - "# R0.w = 1/sqrt(nx*nx + ny*ny + nz*nz)\n" - "# c[2] = R0\n" - "DP3 R0.w, c[0], c[0];\n" - "RSQ R0.w, R0.w;\n" - "MUL R0.xyz, c[0], R0.w;\n" - "MOV c[2], R0;\n" - "END\n"; - - glLoadProgramNV(GL_VERTEX_STATE_PROGRAM_NV, 1, - strlen(prog), - (const GLubyte *) prog); - assert(glIsProgramNV(1)); - - glProgramParameter4fNV(GL_VERTEX_PROGRAM_NV, 0, 0, 10, 0, 0); - - glExecuteProgramNV(GL_VERTEX_STATE_PROGRAM_NV, 1, p); - - glGetProgramParameterfvNV(GL_VERTEX_PROGRAM_NV, 2, GL_PROGRAM_PARAMETER_NV, q); - printf("Result c[2] = %g %g %g %g (should be 0, 1, 0, 0.1)\n", - q[0], q[1], q[2], q[3]); -} - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 50, 50 ); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH ); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - Test1(); - Test2(); - Test3(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/vptest3.c b/progs/tests/vptest3.c deleted file mode 100644 index 4e4bfee31d..0000000000 --- a/progs/tests/vptest3.c +++ /dev/null @@ -1,121 +0,0 @@ -/* Test glGenProgramsNV(), glIsProgramNV(), glLoadProgramNV() */ - -#include <assert.h> -#include <string.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - -static float Zrot = 0.0; - - -static void Display( void ) -{ - glClearColor(0.3, 0.3, 0.3, 1); - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - glEnable(GL_VERTEX_PROGRAM_NV); - - glLoadIdentity(); - glRotatef(Zrot, 0, 0, 1); - - glTrackMatrixNV(GL_VERTEX_PROGRAM_NV, 0, GL_MODELVIEW, GL_IDENTITY_NV); - glPushMatrix(); - - glVertexAttrib3fNV(3, 1, 0.5, 0.25); - glBegin(GL_TRIANGLES); -#if 1 - glVertexAttrib3fNV(3, 1.0, 0.0, 0.0); - glVertexAttrib2fNV(0, -0.5, -0.5); - glVertexAttrib3fNV(3, 0.0, 1.0, 0.0); - glVertexAttrib2fNV(0, 0.5, -0.5); - glVertexAttrib3fNV(3, 0.0, 0.0, 1.0); - glVertexAttrib2fNV(0, 0, 0.5); -#else - glVertex2f( -1, -1); - glVertex2f( 1, -1); - glVertex2f( 0, 1); -#endif - glEnd(); - - glPopMatrix(); - - glutSwapBuffers(); -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - /* glFrustum( -2.0, 2.0, -2.0, 2.0, 5.0, 25.0 );*/ - glOrtho(-2.0, 2.0, -2.0, 2.0, -2.0, 2.0 ); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - /*glTranslatef( 0.0, 0.0, -15.0 );*/ -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 'z': - Zrot -= 5.0; - break; - case 'Z': - Zrot += 5.0; - break; - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void Init( void ) -{ - static const char *prog1 = - "!!VP1.0\n" - "MOV o[COL0], v[COL0];\n" -#if 0 - "MOV o[HPOS], v[OPOS];\n" -#else - "DP4 o[HPOS].x, v[OPOS], c[0];\n" - "DP4 o[HPOS].y, v[OPOS], c[1];\n" - "DP4 o[HPOS].z, v[OPOS], c[2];\n" - "DP4 o[HPOS].w, v[OPOS], c[3];\n" -#endif - "END\n"; - - glLoadProgramNV(GL_VERTEX_PROGRAM_NV, 1, - strlen(prog1), - (const GLubyte *) prog1); - assert(glIsProgramNV(1)); - - glBindProgramNV(GL_VERTEX_PROGRAM_NV, 1); - - printf("glGetError = %d\n", (int) glGetError()); -} - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 250, 250 ); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH ); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/vptorus.c b/progs/tests/vptorus.c deleted file mode 100644 index e61ffdac21..0000000000 --- a/progs/tests/vptorus.c +++ /dev/null @@ -1,175 +0,0 @@ -/* - * A lit, rotating torus via vertex program - */ - -#include <assert.h> -#include <string.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - -static float Xrot = 0.0, Yrot = 0.0, Zrot = 0.0; -static GLboolean Anim = GL_TRUE; - - -static void Idle( void ) -{ - Xrot += .3; - Yrot += .4; - Zrot += .2; - glutPostRedisplay(); -} - - -static void Display( void ) -{ - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - glPushMatrix(); - glRotatef(Xrot, 1, 0, 0); - glRotatef(Yrot, 0, 1, 0); - glRotatef(Zrot, 0, 0, 1); - glutSolidTorus(0.75, 2.0, 10, 20); - glPopMatrix(); - - glutSwapBuffers(); -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -2.0, 2.0, -2.0, 2.0, 5.0, 25.0 ); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - glTranslatef( 0.0, 0.0, -12.0 ); -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case ' ': - Xrot = Yrot = Zrot = 0; - break; - case 'a': - Anim = !Anim; - if (Anim) - glutIdleFunc(Idle); - else - glutIdleFunc(NULL); - break; - case 'z': - Zrot -= 5.0; - break; - case 'Z': - Zrot += 5.0; - break; - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void SpecialKey( int key, int x, int y ) -{ - const GLfloat step = 3.0; - (void) x; - (void) y; - switch (key) { - case GLUT_KEY_UP: - Xrot -= step; - break; - case GLUT_KEY_DOWN: - Xrot += step; - break; - case GLUT_KEY_LEFT: - Yrot -= step; - break; - case GLUT_KEY_RIGHT: - Yrot += step; - break; - } - glutPostRedisplay(); -} - - -static void Init( void ) -{ - /* borrowed from an nvidia demo: - * c[0..3] = modelview matrix - * c[4..7] = inverse modelview matrix - * c[32] = light pos - * c[35] = diffuse color - */ - static const char prog[] = - "!!VP1.0\n" - "#Simple transform and diffuse lighting\n" - "\n" - "DP4 o[HPOS].x, c[0], v[OPOS] ; # object x MVP -> clip\n" - "DP4 o[HPOS].y, c[1], v[OPOS] ;\n" - "DP4 o[HPOS].z, c[2], v[OPOS] ;\n" - "DP4 o[HPOS].w, c[3], v[OPOS] ;\n" - - "DP3 R1.x, c[4], v[NRML] ; # normal x MV-1T -> lighting normal\n" - "DP3 R1.y, c[5], v[NRML] ;\n" - "DP3 R1.z, c[6], v[NRML] ;\n" - - "DP3 R0, c[32], R1 ; # L.N\n" - "MUL o[COL0].xyz, R0, c[35] ; # col = L.N * diffuse\n" - "MOV o[TEX0], v[TEX0];\n" - "END"; - - if (!glutExtensionSupported("GL_NV_vertex_program")) { - printf("Sorry, this program requires GL_NV_vertex_program"); - exit(1); - } - - glLoadProgramNV(GL_VERTEX_PROGRAM_NV, 1, - strlen(prog), (const GLubyte *) prog); - assert(glIsProgramNV(1)); - glBindProgramNV(GL_VERTEX_PROGRAM_NV, 1); - - /* Load the program registers */ - glTrackMatrixNV(GL_VERTEX_PROGRAM_NV, 0, GL_MODELVIEW_PROJECTION_NV, GL_IDENTITY_NV); - glTrackMatrixNV(GL_VERTEX_PROGRAM_NV, 4, GL_MODELVIEW, GL_INVERSE_TRANSPOSE_NV); - - /* Light position */ - glProgramParameter4fNV(GL_VERTEX_PROGRAM_NV, 32, 2, 2, 4, 1); - /* Diffuse material color */ - glProgramParameter4fNV(GL_VERTEX_PROGRAM_NV, 35, 0.25, 0, 0.25, 1); - - glEnable(GL_VERTEX_PROGRAM_NV); - glEnable(GL_DEPTH_TEST); - glClearColor(0.3, 0.3, 0.3, 1); - - printf("glGetError = %d\n", (int) glGetError()); -} - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 250, 250 ); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH ); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutSpecialFunc( SpecialKey ); - glutDisplayFunc( Display ); - if (Anim) - glutIdleFunc(Idle); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/vpwarpmesh.c b/progs/tests/vpwarpmesh.c deleted file mode 100644 index 80204ea136..0000000000 --- a/progs/tests/vpwarpmesh.c +++ /dev/null @@ -1,237 +0,0 @@ -/* - * Warp a triangle mesh with a vertex program. - */ - -#include <assert.h> -#include <string.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - -static float Xrot = -60.0, Yrot = 0.0, Zrot = 0.0; -static GLboolean Anim = GL_TRUE; -static GLfloat Phi = 0.0; - - -static void Idle( void ) -{ - Phi += 0.01; - glutPostRedisplay(); -} - - -static void DrawMesh( int rows, int cols ) -{ - static const GLfloat colorA[3] = { 0, 1, 0 }; - static const GLfloat colorB[3] = { 0, 0, 1 }; - const float dx = 2.0 / (cols - 1); - const float dy = 2.0 / (rows - 1); - float x, y; - int i, j; - -#if 1 -#define COLOR3FV(c) glVertexAttrib3fvNV(3, c) -#define VERTEX2F(x, y) glVertexAttrib2fNV(0, x, y) -#else -#define COLOR3FV(c) glColor3fv(c) -#define VERTEX2F(x, y) glVertex2f(x, y) -#endif - - y = -1.0; - for (i = 0; i < rows - 1; i++) { - glBegin(GL_QUAD_STRIP); - x = -1.0; - for (j = 0; j < cols; j++) { - if ((i + j) & 1) - COLOR3FV(colorA); - else - COLOR3FV(colorB); - VERTEX2F(x, y); - VERTEX2F(x, y + dy); - x += dx; - } - glEnd(); - y += dy; - } -} - - -static void Display( void ) -{ - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - glPushMatrix(); - glRotatef(Xrot, 1, 0, 0); - glRotatef(Yrot, 0, 1, 0); - glRotatef(Zrot, 0, 0, 1); - - /* Position the gravity source */ - { - GLfloat x, y, z, r = 0.5; - x = r * cos(Phi); - y = r * sin(Phi); - z = 1.0; - glProgramParameter4fNV(GL_VERTEX_PROGRAM_NV, 30, x, y, z, 1); - glDisable(GL_VERTEX_PROGRAM_NV); - glBegin(GL_POINTS); - glColor3f(1,1,1); - glVertex3f(x, y, z); - glEnd(); - } - - glEnable(GL_VERTEX_PROGRAM_NV); - DrawMesh(8, 8); - glPopMatrix(); - - glutSwapBuffers(); -} - - -static void Reshape( int width, int height ) -{ - float ar = (float) width / (float) height; - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -1.0 * ar, 1.0 * ar, -1.0, 1.0, 5.0, 25.0 ); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - glTranslatef( 0.0, 0.0, -12.0 ); - glScalef(2, 2, 2); -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 'a': - Anim = !Anim; - if (Anim) - glutIdleFunc(Idle); - else - glutIdleFunc(NULL); - break; - case 'p': - Phi += 0.2; - break; - case 'z': - Zrot -= 5.0; - break; - case 'Z': - Zrot += 5.0; - break; - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void SpecialKey( int key, int x, int y ) -{ - const GLfloat step = 3.0; - (void) x; - (void) y; - switch (key) { - case GLUT_KEY_UP: - Xrot -= step; - break; - case GLUT_KEY_DOWN: - Xrot += step; - break; - case GLUT_KEY_LEFT: - Yrot -= step; - break; - case GLUT_KEY_RIGHT: - Yrot += step; - break; - } - glutPostRedisplay(); -} - - -static void Init( void ) -{ - /* - * c[0..3] = modelview matrix - * c[4..7] = inverse modelview matrix - * c[30] = gravity source location - * c[31] = gravity source strength - * c[32] = light pos - * c[35] = diffuse color - */ - static const char prog[] = - "!!VP1.0\n" - - "# Compute distance from vertex to gravity source\n" - "ADD R1, c[30], -v[OPOS]; # vector from vertex to gravity\n" - "DP3 R2, R1, R1; # dot product\n" - "RSQ R2, R2.x; # square root = distance\n" - "MUL R2, R2, c[31].xxxx; # scale by the gravity factor\n" - - "# Displace vertex by gravity factor along R1 vector\n" - "MAD R3, R1, R2, v[OPOS];\n" - - "# Continue with typical modelview/projection\n" - "DP4 o[HPOS].x, c[0], R3 ; # object x MVP -> clip\n" - "DP4 o[HPOS].y, c[1], R3 ;\n" - "DP4 o[HPOS].z, c[2], R3 ;\n" - "DP4 o[HPOS].w, c[3], R3 ;\n" - - "MOV o[COL0], v[COL0];\n # copy input color to output color\n" - - "END"; - - if (!glutExtensionSupported("GL_NV_vertex_program")) { - printf("Sorry, this program requires GL_NV_vertex_program\n"); - exit(1); - } - - glLoadProgramNV(GL_VERTEX_PROGRAM_NV, 1, - strlen(prog), (const GLubyte *) prog); - assert(glIsProgramNV(1)); - glBindProgramNV(GL_VERTEX_PROGRAM_NV, 1); - - /* Load the program registers */ - glTrackMatrixNV(GL_VERTEX_PROGRAM_NV, 0, GL_MODELVIEW_PROJECTION_NV, GL_IDENTITY_NV); - glTrackMatrixNV(GL_VERTEX_PROGRAM_NV, 4, GL_MODELVIEW, GL_INVERSE_TRANSPOSE_NV); - - /* Light position */ - glProgramParameter4fNV(GL_VERTEX_PROGRAM_NV, 32, 2, 2, 4, 1); - /* Diffuse material color */ - glProgramParameter4fNV(GL_VERTEX_PROGRAM_NV, 35, 0.25, 0, 0.25, 1); - - /* Gravity strength */ - glProgramParameter4fNV(GL_VERTEX_PROGRAM_NV, 31, .5, 0, 0, 0); - - glEnable(GL_DEPTH_TEST); - glClearColor(0.3, 0.3, 0.3, 1); - glShadeModel(GL_FLAT); - glPointSize(3); - printf("glGetError = %d\n", (int) glGetError()); -} - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 250, 250 ); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH ); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutSpecialFunc( SpecialKey ); - glutDisplayFunc( Display ); - if (Anim) - glutIdleFunc(Idle); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/yuvrect.c b/progs/tests/yuvrect.c deleted file mode 100644 index aab2f80ed9..0000000000 --- a/progs/tests/yuvrect.c +++ /dev/null @@ -1,194 +0,0 @@ -/* - * Test the GL_NV_texture_rectangle and GL_MESA_ycrcb_texture extensions. - * - * Brian Paul 13 September 2002 - */ - -#include <assert.h> -#include <math.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <GL/glew.h> -#include <GL/glut.h> - -#include "../util/readtex.c" /* I know, this is a hack. */ - -#define TEXTURE_FILE "../images/girl.rgb" - -static GLfloat Xrot = 0, Yrot = 0, Zrot = 0; -static GLint ImgWidth, ImgHeight; -static GLushort *ImageYUV = NULL; - - -static void DrawObject(void) -{ - glBegin(GL_QUADS); - - glTexCoord2f(0, 0); - glVertex2f(-1.0, -1.0); - - glTexCoord2f(ImgWidth, 0); - glVertex2f(1.0, -1.0); - - glTexCoord2f(ImgWidth, ImgHeight); - glVertex2f(1.0, 1.0); - - glTexCoord2f(0, ImgHeight); - glVertex2f(-1.0, 1.0); - - glEnd(); -} - - -static void Display( void ) -{ - glClear( GL_COLOR_BUFFER_BIT ); - - glPushMatrix(); - glRotatef(Xrot, 1.0, 0.0, 0.0); - glRotatef(Yrot, 0.0, 1.0, 0.0); - glRotatef(Zrot, 0.0, 0.0, 1.0); - DrawObject(); - glPopMatrix(); - - glutSwapBuffers(); -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -1.0, 1.0, -1.0, 1.0, 10.0, 100.0 ); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - glTranslatef( 0.0, 0.0, -15.0 ); -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void SpecialKey( int key, int x, int y ) -{ - float step = 3.0; - (void) x; - (void) y; - - switch (key) { - case GLUT_KEY_UP: - Xrot += step; - break; - case GLUT_KEY_DOWN: - Xrot -= step; - break; - case GLUT_KEY_LEFT: - Yrot += step; - break; - case GLUT_KEY_RIGHT: - Yrot -= step; - break; - } - glutPostRedisplay(); -} - - - -static void Init( int argc, char *argv[] ) -{ - GLuint texObj = 100; - const char *file; - - if (!glutExtensionSupported("GL_NV_texture_rectangle")) { - printf("Sorry, GL_NV_texture_rectangle is required\n"); - exit(0); - } - - if (!glutExtensionSupported("GL_MESA_ycbcr_texture")) { - printf("Sorry, GL_MESA_ycbcr_texture is required\n"); - exit(0); - } - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - - glBindTexture(GL_TEXTURE_RECTANGLE_NV, texObj); -#ifdef LINEAR_FILTER - /* linear filtering looks much nicer but is much slower for Mesa */ - glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_MAG_FILTER, GL_LINEAR); -#else - glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_MAG_FILTER, GL_NEAREST); -#endif - - if (argc > 1) - file = argv[1]; - else - file = TEXTURE_FILE; - - ImageYUV = LoadYUVImage(file, &ImgWidth, &ImgHeight); - if (!ImageYUV) { - printf("Couldn't read %s\n", TEXTURE_FILE); - exit(0); - } - - printf("Image: %dx%d\n", ImgWidth, ImgHeight); - - glTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, - GL_YCBCR_MESA, ImgWidth, ImgHeight, 0, - GL_YCBCR_MESA, GL_UNSIGNED_SHORT_8_8_MESA, ImageYUV); - - assert(glGetError() == GL_NO_ERROR); - glTexSubImage2D(GL_TEXTURE_RECTANGLE_NV, 0, - 0, 0, ImgWidth, ImgHeight, - GL_YCBCR_MESA, GL_UNSIGNED_SHORT_8_8_MESA, ImageYUV); - - assert(glGetError() == GL_NO_ERROR); - - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - - glEnable(GL_TEXTURE_RECTANGLE_NV); - - glShadeModel(GL_FLAT); - glClearColor(0.3, 0.3, 0.4, 1.0); - - if (argc > 1 && strcmp(argv[1], "-info")==0) { - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - printf("GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - printf("GL_EXTENSIONS = %s\n", (char *) glGetString(GL_EXTENSIONS)); - } -} - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowSize( 300, 300 ); - glutInitWindowPosition( 0, 0 ); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE ); - glutCreateWindow(argv[0] ); - glewInit(); - - Init( argc, argv ); - - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutSpecialFunc( SpecialKey ); - glutDisplayFunc( Display ); - - glutMainLoop(); - return 0; -} diff --git a/progs/tests/yuvsquare.c b/progs/tests/yuvsquare.c deleted file mode 100644 index 658528b799..0000000000 --- a/progs/tests/yuvsquare.c +++ /dev/null @@ -1,233 +0,0 @@ -/* - * Test the GL_NV_texture_rectangle and GL_MESA_ycrcb_texture extensions. - * - * Brian Paul 13 September 2002 - */ - - -#include <math.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <GL/glew.h> -#include <GL/glut.h> - -#include "../util/readtex.c" /* I know, this is a hack. */ - -#define TEXTURE_FILE "../images/tile.rgb" - -static GLfloat Xrot = 0, Yrot = 0, Zrot = 0; -static GLint ImgWidth, ImgHeight; -static GLushort *ImageYUV = NULL; -static GLubyte *ImageRGB = NULL; -static const GLuint yuvObj = 100; -static const GLuint rgbObj = 101; - - -static void DrawObject(void) -{ - glBegin(GL_QUADS); - - glTexCoord2f(0, 0); - glVertex2f(-1.0, -1.0); - - glTexCoord2f(1, 0); - glVertex2f(1.0, -1.0); - - glTexCoord2f(1, 1); - glVertex2f(1.0, 1.0); - - glTexCoord2f(0, 1); - glVertex2f(-1.0, 1.0); - - glEnd(); -} - - -static void Display( void ) -{ - glClear( GL_COLOR_BUFFER_BIT ); - - glPushMatrix(); - glTranslatef( -1.1, 0.0, -15.0 ); - glRotatef(Xrot, 1.0, 0.0, 0.0); - glRotatef(Yrot, 0.0, 1.0, 0.0); - glRotatef(Zrot, 0.0, 0.0, 1.0); - glBindTexture(GL_TEXTURE_2D, yuvObj); - DrawObject(); - glPopMatrix(); - - glPushMatrix(); - glTranslatef( 1.1, 0.0, -15.0 ); - glRotatef(Xrot, 1.0, 0.0, 0.0); - glRotatef(Yrot, 0.0, 1.0, 0.0); - glRotatef(Zrot, 0.0, 0.0, 1.0); - glBindTexture(GL_TEXTURE_2D, rgbObj); - DrawObject(); - glPopMatrix(); - - glutSwapBuffers(); -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -1.1, 1.1, -1.1, 1.1, 10.0, 100.0 ); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - glTranslatef( 0.0, 0.0, -15.0 ); -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void SpecialKey( int key, int x, int y ) -{ - float step = 3.0; - (void) x; - (void) y; - - switch (key) { - case GLUT_KEY_UP: - Xrot += step; - break; - case GLUT_KEY_DOWN: - Xrot -= step; - break; - case GLUT_KEY_LEFT: - Yrot += step; - break; - case GLUT_KEY_RIGHT: - Yrot -= step; - break; - } - glutPostRedisplay(); -} - - -#define CLAMP( X, MIN, MAX ) ( (X)<(MIN) ? (MIN) : ((X)>(MAX) ? (MAX) : (X)) ) - - - -/* #define LINEAR_FILTER */ - -static void Init( int argc, char *argv[] ) -{ - const char *file; - GLenum format; - - if (!glutExtensionSupported("GL_MESA_ycbcr_texture")) { - printf("Sorry, GL_MESA_ycbcr_texture is required\n"); - exit(0); - } - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - - if (argc > 1) - file = argv[1]; - else - file = TEXTURE_FILE; - - /* First load the texture as YCbCr. - */ - - glBindTexture(GL_TEXTURE_2D, yuvObj); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - - ImageYUV = LoadYUVImage(file, &ImgWidth, &ImgHeight ); - if (!ImageYUV) { - printf("Couldn't read %s\n", TEXTURE_FILE); - exit(0); - } - - printf("Image: %dx%d\n", ImgWidth, ImgHeight); - - - glTexImage2D(GL_TEXTURE_2D, 0, - GL_YCBCR_MESA, - ImgWidth, ImgHeight, 0, - GL_YCBCR_MESA, - GL_UNSIGNED_SHORT_8_8_MESA, ImageYUV); - - glEnable(GL_TEXTURE_2D); - - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - - - - /* Now load the texture as RGB. - */ - - glBindTexture(GL_TEXTURE_2D, rgbObj); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - - ImageRGB = LoadRGBImage(file, &ImgWidth, &ImgHeight, &format ); - if (!ImageRGB) { - printf("Couldn't read %s\n", TEXTURE_FILE); - exit(0); - } - - printf("Image: %dx%d\n", ImgWidth, ImgHeight); - - - glTexImage2D(GL_TEXTURE_2D, 0, - format, - ImgWidth, ImgHeight, 0, - format, - GL_UNSIGNED_BYTE, ImageRGB); - - glEnable(GL_TEXTURE_2D); - - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - - - - glShadeModel(GL_FLAT); - glClearColor(0.3, 0.3, 0.4, 1.0); - - if (argc > 1 && strcmp(argv[1], "-info")==0) { - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - printf("GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - printf("GL_EXTENSIONS = %s\n", (char *) glGetString(GL_EXTENSIONS)); - } - - printf( "Both images should appear the same.\n" ); -} - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowSize( 300, 300 ); - glutInitWindowPosition( 0, 0 ); - glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE ); - glutCreateWindow(argv[0] ); - glewInit(); - - Init( argc, argv ); - - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutSpecialFunc( SpecialKey ); - glutDisplayFunc( Display ); - - glutMainLoop(); - return 0; -} diff --git a/progs/tests/zcomp.c b/progs/tests/zcomp.c deleted file mode 100644 index 15e35f17b0..0000000000 --- a/progs/tests/zcomp.c +++ /dev/null @@ -1,224 +0,0 @@ -/** - * Test Z compositing with glDrawPixels(GL_DEPTH_COMPONENT) and stencil test. - */ - -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> -#include "../util/showbuffer.c" - - -static int Win; -static GLfloat Xrot = 0, Yrot = 0, Zpos = 6; -static GLboolean Anim = GL_FALSE; - -static int Width = 400, Height = 200; -static GLfloat *Zimg; -static GLubyte *Cimg; -static GLboolean showZ = 0; - - -static void -Idle(void) -{ - Xrot += 3.0; - Yrot += 4.0; - glutPostRedisplay(); -} - - -/** - * Draw first object, save color+Z images - */ -static void -DrawFirst(void) -{ - static const GLfloat red[4] = { 1.0, 0.0, 0.0, 0.0 }; - - glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, red); - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glPushMatrix(); - glTranslatef(-1, 0, 0); - glRotatef(45 + Xrot, 1, 0, 0); - - glutSolidTorus(0.75, 2.0, 10, 20); - - glPopMatrix(); - - glReadPixels(0, 0, Width, Height, GL_DEPTH_COMPONENT, GL_FLOAT, Zimg); - glReadPixels(0, 0, Width, Height, GL_RGBA, GL_UNSIGNED_BYTE, Cimg); -} - - -/** - * Draw second object. - */ -static void -DrawSecond(void) -{ - static const GLfloat blue[4] = { 0.0, 0.0, 1.0, 0.0 }; - - glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, blue); - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); - - glPushMatrix(); - glTranslatef(+1, 0, 0); - glRotatef(-45 + Xrot, 1, 0, 0); - - glutSolidTorus(0.75, 2.0, 10, 20); - - glPopMatrix(); -} - - -/** - * Composite first/saved image over second rendering. - */ -static void -Composite(void) -{ - glWindowPos2i(0, 0); - - /* Draw Z values, set stencil where Z test passes */ - glEnable(GL_STENCIL_TEST); - glStencilFunc(GL_ALWAYS, 1, ~0); - glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE); - glColorMask(0,0,0,0); - glDrawPixels(Width, Height, GL_DEPTH_COMPONENT, GL_FLOAT, Zimg); - glColorMask(1,1,1,1); - - /* Draw color where stencil==1 */ - glStencilFunc(GL_EQUAL, 1, ~0); - glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); - glDisable(GL_DEPTH_TEST); - glDrawPixels(Width, Height, GL_RGBA, GL_UNSIGNED_BYTE, Cimg); - glEnable(GL_DEPTH_TEST); - - glDisable(GL_STENCIL_TEST); -} - - -static void -Draw(void) -{ - DrawFirst(); - DrawSecond(); - Composite(); - glutSwapBuffers(); -} - - -static void -Reshape(int width, int height) -{ - GLfloat ar = (float) width / height; - glViewport(0, 0, width, height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-ar, ar, -1.0, 1.0, 5.0, 30.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0, 0.0, -15.0); - - Width = width; - Height = height; - - if (Zimg) - free(Zimg); - if (Cimg) - free(Cimg); - Zimg = (float *) malloc(width * height * 4); - Cimg = (GLubyte *) malloc(width * height * 4); -} - - -static void -Key(unsigned char key, int x, int y) -{ - const GLfloat step = 1.0; - (void) x; - (void) y; - switch (key) { - case 'a': - Anim = !Anim; - if (Anim) - glutIdleFunc(Idle); - else - glutIdleFunc(NULL); - break; - case 'd': - showZ = !showZ; - break; - case 'z': - Zpos -= step; - break; - case 'Z': - Zpos += step; - break; - case 27: - glutDestroyWindow(Win); - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void -SpecialKey(int key, int x, int y) -{ - const GLfloat step = 3.0; - (void) x; - (void) y; - switch (key) { - case GLUT_KEY_UP: - Xrot -= step; - break; - case GLUT_KEY_DOWN: - Xrot += step; - break; - case GLUT_KEY_LEFT: - Yrot -= step; - break; - case GLUT_KEY_RIGHT: - Yrot += step; - break; - } - glutPostRedisplay(); -} - - -static void -Init(void) -{ - /* setup lighting, etc */ - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); -} - - -int -main(int argc, char *argv[]) -{ - glutInit(&argc, argv); - glutInitWindowPosition(0, 0); - glutInitWindowSize(Width, Height); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH | GLUT_STENCIL); - Win = glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutSpecialFunc(SpecialKey); - glutDisplayFunc(Draw); - if (Anim) - glutIdleFunc(Idle); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/zdrawpix.c b/progs/tests/zdrawpix.c deleted file mode 100644 index ba7da571eb..0000000000 --- a/progs/tests/zdrawpix.c +++ /dev/null @@ -1,193 +0,0 @@ -/** - * Test glDrawPixels(GL_DEPTH_COMPONENT) - * - * We load a window-sized buffer of Z values so that Z=1 at the top and - * Z=0 at the bottom (and interpolate between). - * We draw that image into the Z buffer, then draw an ordinary cube. - * The bottom part of the cube should be "clipped" where the cube fails - * the Z test. - * - * Press 'd' to view the Z buffer as a grayscale image. - */ - -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> -#include "../util/showbuffer.c" - - -static int Win; -static GLfloat Xrot = 50, Yrot = 40, Zpos = 6; -static GLboolean Anim = GL_FALSE; - -static int Width = 200, Height = 200; -static GLfloat *z; -static GLboolean showZ = 0; - - -static void -Idle(void) -{ - Xrot += 3.0; - Yrot += 4.0; - glutPostRedisplay(); -} - - -static void -Draw(void) -{ - glClearColor(0, 0, 0.5, 0); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - -#if 1 - glColor3f(1, 0, 0); - glWindowPos2i(0,0); - glColorMask(0,0,0,0); - glDrawPixels(Width, Height, GL_DEPTH_COMPONENT, GL_FLOAT, z); -#elif 0 - glPushMatrix(); - glTranslatef(-0.75, 0, Zpos); - glutSolidSphere(1.0, 20, 10); - glPopMatrix(); -#endif - glColorMask(1,1,1,1); - - /* draw cube */ - glPushMatrix(); - glTranslatef(0, 0, Zpos); - glRotatef(Xrot, 1, 0, 0); - glRotatef(Yrot, 0, 1, 0); - glutSolidCube(2.0); - glPopMatrix(); - -#if 0 - /* drawpixels after cube */ - glColor3f(1, 0, 0); - glWindowPos2i(0,0); - //glColorMask(0,0,0,0); - glDrawPixels(Width, Height, GL_DEPTH_COMPONENT, GL_FLOAT, z); -#endif - - if (showZ) { - ShowDepthBuffer(Width, Height, 0.0, 1.0); - } - - glutSwapBuffers(); -} - - -static void -Reshape(int width, int height) -{ - glViewport(0, 0, width, height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-1.0, 1.0, -1.0, 1.0, 5.0, 30.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0, 0.0, -15.0); - - Width = width; - Height = height; - - z = (float *) malloc(width * height * 4); - { - int i, j, k = 0; - for (i = 0; i < height; i++) { - float zval = (float) i / (height - 1); - for (j = 0; j < width; j++) { - z[k++] = zval; - } - } - } -} - - -static void -Key(unsigned char key, int x, int y) -{ - const GLfloat step = 1.0; - (void) x; - (void) y; - switch (key) { - case 'a': - Anim = !Anim; - if (Anim) - glutIdleFunc(Idle); - else - glutIdleFunc(NULL); - break; - case 'd': - showZ = !showZ; - break; - case 'z': - Zpos -= step; - break; - case 'Z': - Zpos += step; - break; - case 27: - glutDestroyWindow(Win); - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void -SpecialKey(int key, int x, int y) -{ - const GLfloat step = 3.0; - (void) x; - (void) y; - switch (key) { - case GLUT_KEY_UP: - Xrot -= step; - break; - case GLUT_KEY_DOWN: - Xrot += step; - break; - case GLUT_KEY_LEFT: - Yrot -= step; - break; - case GLUT_KEY_RIGHT: - Yrot += step; - break; - } - glutPostRedisplay(); -} - - -static void -Init(void) -{ - /* setup lighting, etc */ - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); -} - - -int -main(int argc, char *argv[]) -{ - glutInit(&argc, argv); - glutInitWindowPosition(0, 0); - glutInitWindowSize(400, 400); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); - Win = glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutSpecialFunc(SpecialKey); - glutDisplayFunc(Draw); - if (Anim) - glutIdleFunc(Idle); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tests/zreaddraw.c b/progs/tests/zreaddraw.c deleted file mode 100644 index 7740695bb6..0000000000 --- a/progs/tests/zreaddraw.c +++ /dev/null @@ -1,179 +0,0 @@ -/* - * Test glRead/DrawPixels for GL_DEPTH_COMPONENT, with pixelzoom. - * - * Brian Paul - * 23 August 2003 - */ - -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - -static GLint WinWidth = 500, WinHeight = 500; -static GLboolean Invert = GL_FALSE; -static GLboolean TestPacking = GL_FALSE; -static GLboolean TestList = GL_FALSE; - - -static void Display(void) -{ - GLfloat depth[100 * 100 * 2]; - GLfloat depth2[400 * 400]; /* *2 to test pixelstore stuff */ - GLuint list; - GLenum depthType = GL_FLOAT; - - glClearColor(0.5, 0.5, 0.5, 1.0); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glEnable(GL_DEPTH_TEST); - - /* draw a sphere */ - glViewport(0, 0, 100, 100); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1, 1, -1, 1, -1, 0); /* clip away back half of sphere */ - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glutSolidSphere(1.0, 20, 10); - - if (TestPacking) { - glPixelStorei(GL_PACK_ROW_LENGTH, 120); - glPixelStorei(GL_PACK_SKIP_PIXELS, 5); - } - - /* read the depth image */ - glReadPixels(0, 0, 100, 100, GL_DEPTH_COMPONENT, depthType, depth); - if (depthType == GL_FLOAT) { - GLfloat min, max; - int i; - min = max = depth[0]; - for (i = 1; i < 100 * 100; i++) { - if (depth[i] < min) - min = depth[i]; - if (depth[i] > max) - max = depth[i]; - } - printf("Depth value range: [%f, %f]\n", min, max); - } - - /* Draw the Z image as luminance above original rendering */ - glWindowPos2i(0, 100); - glDrawPixels(100, 100, GL_LUMINANCE, depthType, depth); - - if (TestPacking) { - glPixelStorei(GL_PACK_ROW_LENGTH, 0); - glPixelStorei(GL_PACK_SKIP_PIXELS, 0); - glPixelStorei(GL_UNPACK_ROW_LENGTH, 120); - glPixelStorei(GL_UNPACK_SKIP_PIXELS, 5); - } - - /* draw depth image with scaling (into z buffer) */ - glPixelZoom(4.0, 4.0); - glColor4f(1, 0, 0, 0); - glWindowPos2i(100, 0); - if (Invert) { - glPixelTransferf(GL_DEPTH_SCALE, -1.0); - glPixelTransferf(GL_DEPTH_BIAS, 1.0); - } - if (TestList) { - list = glGenLists(1); - glNewList(list, GL_COMPILE); - glDrawPixels(100, 100, GL_DEPTH_COMPONENT, depthType, depth); - glEndList(); - glCallList(list); - glDeleteLists(list, 1); - } - else { - glDrawPixels(100, 100, GL_DEPTH_COMPONENT, depthType, depth); - } - if (Invert) { - glPixelTransferf(GL_DEPTH_SCALE, 1.0); - glPixelTransferf(GL_DEPTH_BIAS, 0.0); - } - - if (TestPacking) { - glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); - glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0); - } - - glDisable(GL_DEPTH_TEST); - - /* read back scaled depth image */ - glReadPixels(100, 0, 400, 400, GL_DEPTH_COMPONENT, GL_FLOAT, depth2); - /* draw as luminance */ - glPixelZoom(1.0, 1.0); - glWindowPos2i(100, 0); - glDrawPixels(400, 400, GL_LUMINANCE, GL_FLOAT, depth2); - - glutSwapBuffers(); -} - - -static void Reshape(int width, int height) -{ - WinWidth = width; - WinHeight = height; - glViewport(0, 0, width, height); -} - - -static void Key(unsigned char key, int x, int y) -{ - (void) x; - (void) y; - switch (key) { - case 'i': - Invert = !Invert; - break; - case 'p': - TestPacking = !TestPacking; - printf("Test pixel pack/unpack: %d\n", TestPacking); - break; - case 'l': - TestList = !TestList; - printf("Test dlist: %d\n", TestList); - break; - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void Init(void) -{ - const GLfloat blue[4] = {.1, .1, 1.0, 1.0}; - const GLfloat gray[4] = {0.2, 0.2, 0.2, 1.0}; - const GLfloat white[4] = {1.0, 1.0, 1.0, 1.0}; - const GLfloat pos[4] = {0, 0, 10, 0}; - - printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, blue); - glLightfv(GL_LIGHT0, GL_AMBIENT, gray); - glLightfv(GL_LIGHT0, GL_DIFFUSE, white); - glLightfv(GL_LIGHT0, GL_POSITION, pos); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); -} - - -int main(int argc, char *argv[]) -{ - glutInit(&argc, argv); - glutInitWindowPosition(0, 0); - glutInitWindowSize(WinWidth, WinHeight); - glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Display); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/tools/trace/.gitignore b/progs/tools/trace/.gitignore deleted file mode 100644 index afe0c5829e..0000000000 --- a/progs/tools/trace/.gitignore +++ /dev/null @@ -1 +0,0 @@ -gltrace.cc diff --git a/progs/tools/trace/Makefile b/progs/tools/trace/Makefile deleted file mode 100644 index 822e466ad1..0000000000 --- a/progs/tools/trace/Makefile +++ /dev/null @@ -1,30 +0,0 @@ -# Makefile for Thomas Sondergaard's API tracer - -TOP = ../../.. - -include $(TOP)/configs/current - - -OBJECTS = gltrace.o gltrace_support.o - -TRACER = gltrace.so - -.cc.o: - $(CXX) -c $(INCDIRS) $(CXXFLAGS) $< -o $@ - - -default: $(TRACER) - -$(TRACER): $(OBJECTS) - $(MKLIB) -o $(TRACER) -noprefix -cplusplus -linker '$(CXX)' \ - -ldflags '$(LDFLAGS)' $(MKLIB_OPTIONS) $(OBJECTS) - -gltrace.cc: gltrace.py - PYTHONPATH=$(TOP)/src/mesa/glapi python gltrace.py -f $(TOP)/src/mesa/glapi/gl_API.xml > gltrace.cc - - -clean: - rm -f $(OBJECTS) - rm -f $(TRACER) - rm -f *~ - rm -f gltrace.cc diff --git a/progs/tools/trace/README b/progs/tools/trace/README deleted file mode 100644 index 7b3141dba7..0000000000 --- a/progs/tools/trace/README +++ /dev/null @@ -1,23 +0,0 @@ -NAME - gltrace - trace opengl calls - -SYNOPSIS - gltrace [OPTION] command [arg ...] - -DESCRIPTION - -h help (this text) - -c log gl calls - -t time stamp log entries - -e check for and log errors. errors occurring between - glBegin() and glEnd() are checked at glEnd() - -v verbose. Shows configuration settings passed to - gltrace.so - -l LOGFILE logfile. Default is stderr - -PROBLEMS - Not all OpenGL extensions are known and traced by gltrace. Extension - functions not initialized using glXGetProcAddress(ARB) will not be - traced. - -AUTHOR - Thomas Sondergaard (ts_news1 'at' sondergaard.cc) diff --git a/progs/tools/trace/gltrace b/progs/tools/trace/gltrace deleted file mode 100755 index d386912cf2..0000000000 --- a/progs/tools/trace/gltrace +++ /dev/null @@ -1,82 +0,0 @@ -#!/bin/bash - -# Copyright (C) 2006 Thomas Sondergaard -# All Rights Reserved. -# -# Permission is hereby granted, free of charge, to any person obtaining a -# copy of this software and associated documentation files (the "Software"), -# to deal in the Software without restriction, including without limitation -# on the rights to use, copy, modify, merge, publish, distribute, sub -# license, and/or sell copies of the Software, and to permit persons to whom -# the Software is furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice (including the next -# paragraph) shall be included in all copies or substantial portions of the -# Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL -# IBM AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -# IN THE SOFTWARE. -# -# Authors: -# Thomas Sondergaard <ts@medical-insight.com> - -usage="usage: $0 [ -hctev ] [-l LOGFILE] program [args...]\n\t-h\t\thelp (this text)\n\t-c\t\tlog gl calls\n\t-t\t\ttime stamp log entries\n\t-e\t\tcheck for and log errors. errors occurring between\n\t\t\tglBegin() and glEnd() are checked at glEnd()\n\t-v\t\tverbose. Shows configuration settings passed to\n\t\t\tgltrace.so\n\t-l LOGFILE\tlogfile. Default is stderr" - -# Path to gltrace.so - must not be relative -#GLTRACE_SO=/home/ts/Mesa_gltrace/src/mesa/glapi/gltrace.so -# This seems to work: -GLTRACE_SO=./gltrace.so - -# Set options from command line - -VERBOSE=0 -GLTRACE_LOG_CALLS=0 -GLTRACE_LOG_TIME=0 -GLTRACE_CHECK_ERRORS=0 -export GLTRACE_LOG_CALLS GLTRACE_LOG_TIME GLTRACE_CHECK_ERRORS - -if [ $# -eq 0 ]; then - echo -e $usage - exit -fi - -while getopts "hctevl:" options; do - case $options in - h) echo -e $usage - exit 1;; - c) GLTRACE_LOG_CALLS=1;; - t) GLTRACE_LOG_TIME=1;; - e) GLTRACE_CHECK_ERRORS=1;; - l) GLTRACE_LOGFILE=$OPTARG - export GLTRACE_LOGFILE;; - v) VERBOSE=1;; - *) echo -e $usage - exit 1;; - esac -done - -# Remove the parsed args -shift $(($OPTIND-1)) - -if [ ! -r $GLTRACE_SO ]; then - echo "Error: The gltrace.so file '$GLTRACE_SO' is missing!" - exit 1 -fi - -export LD_PRELOAD=$GLTRACE_SO - -if [ $VERBOSE -eq 1 ]; then - echo GLTRACE_LOG_CALLS=$GLTRACE_LOG_CALLS - echo GLTRACE_LOG_TIME=$GLTRACE_LOG_TIME - echo GLTRACE_CHECK_ERRORS=$GLTRACE_CHECK_ERRORS - echo GLTRACE_LOGFILE=$GLTRACE_LOGFILE - echo LD_PRELOAD=$LD_PRELOAD - echo command=$* -fi - -exec $* diff --git a/progs/tools/trace/gltrace.py b/progs/tools/trace/gltrace.py deleted file mode 100644 index 973881ac94..0000000000 --- a/progs/tools/trace/gltrace.py +++ /dev/null @@ -1,189 +0,0 @@ -#!/usr/bin/env python - -# Copyright (C) 2006 Thomas Sondergaard -# All Rights Reserved. -# -# Permission is hereby granted, free of charge, to any person obtaining a -# copy of this software and associated documentation files (the "Software"), -# to deal in the Software without restriction, including without limitation -# on the rights to use, copy, modify, merge, publish, distribute, sub -# license, and/or sell copies of the Software, and to permit persons to whom -# the Software is furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice (including the next -# paragraph) shall be included in all copies or substantial portions of the -# Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL -# IBM AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -# IN THE SOFTWARE. -# -# Authors: -# Thomas Sondergaard <ts@medical-insight.com> - -import gl_XML, glX_XML, glX_proto_common, license -import sys, getopt, copy, string - -def create_argument_string(parameters): - """Create a parameter string from a list of gl_parameters.""" - - list = [] - for p in parameters: - list.append( p.name ) - #if len(list) == 0: list = ["void"] - - return string.join(list, ", ") - -def create_logfunc_string(func, name): - """Create a parameter string from a list of gl_parameters.""" - - list = [] - list.append('"gl' + name + '("') - sep = None - for p in func.parameters: - if (sep): - list.append(sep) - list.append( p.name ) - sep = '", "' - list.append('");"') - #if len(list) == 0: list = ["void"] - - return "if (config.logCalls) GLTRACE_LOG(" + string.join(list, " << ")+");"; - -class PrintGltrace(glX_proto_common.glx_print_proto): #(gl_XML.gl_print_base): - def __init__(self): - gl_XML.gl_print_base.__init__(self) - - self.name = "gltrace.py" - self.license = license.bsd_license_template % ( \ -"""Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. -(C) Copyright IBM Corporation 2004""", "PRECISION INSIGHT, IBM") - #self.header_tag = "_INDIRECT_H_" - - self.last_category = "" - return - - - def printRealHeader(self): - print """/** - * \\file - * gl and glX wrappers for tracing - * - * \\author Thomas Sondergaard <ts@medical-insight.com> - */ -""" - #self.printVisibility( "HIDDEN", "hidden" ) - #self.printFastcall() - #self.printNoinline() - - print """ -#include <GL/gl.h> -#include <GL/glx.h> -#include <GL/glu.h> -#include <dlfcn.h> -#include "gltrace_support.h" - -using namespace gltrace; - -static GLenum real_glGetError() { - static GLenum (*real_func)(void) = 0; - if (!real_func) real_func = (GLenum (*)(void)) dlsym(RTLD_NEXT, "glGetError"); - return real_func(); -} - -bool betweenGLBeginEnd = false; - -extern "C" { - - -__GLXextFuncPtr real_glXGetProcAddressARB(const GLubyte *func_name) { - static __GLXextFuncPtr (*real_func)(const GLubyte *func_name) = 0; - if (!real_func) real_func = (__GLXextFuncPtr (*)(const GLubyte *func_name)) dlsym(RTLD_NEXT, "glXGetProcAddressARB"); - - return real_func(func_name); -} - -__GLXextFuncPtr glXGetProcAddressARB(const GLubyte *func_name_ubyte) { - std::string func_name = - std::string("gltrace_")+reinterpret_cast<const char*>(func_name_ubyte); - - __GLXextFuncPtr f = (__GLXextFuncPtr) dlsym(RTLD_DEFAULT, func_name.c_str()); - if (!f) { - GLTRACE_LOG("warning: Could not resolve '" << func_name << "' - function will not be intercepted"); - return real_glXGetProcAddressARB(func_name_ubyte); - } - return f; -} - -""" - - def printRealFooter(self): - print "} // Extern \"C\"" - - def printBody(self, api): - for func in api.functionIterateGlx(): - for func_name in func.entry_points: - functionPrefix = "" - use_dlsym = True - if (api.get_category_for_name(func.name)[1] != None): - functionPrefix = "gltrace_" - use_dlsym = False - - print '%s %sgl%s(%s) {' % (func.return_type, functionPrefix, func_name, func.get_parameter_string()) - if (use_dlsym): - print ' static %s (*real_func)(%s) = 0;' % (func.return_type, func.get_parameter_string()) - print ' if (!real_func) real_func = (%s (*)(%s)) dlsym(RTLD_NEXT, "gl%s");' % (func.return_type, func.get_parameter_string(), func_name) - else: # use glXGetProcAddressArb - print ' static %s (*real_func)(%s) = 0;' % (func.return_type, func.get_parameter_string()) - print ' if (!real_func) real_func = (%s (*)(%s)) real_glXGetProcAddressARB((GLubyte *)"gl%s");' % (func.return_type, func.get_parameter_string(), func_name) - print ' ' + create_logfunc_string(func, func_name) - if (func.return_type == "void"): - print ' real_func(%s);' % (create_argument_string(func.parameters)) - else: - print ' %s retval = real_func(%s);' % (func.return_type, create_argument_string(func.parameters)) - if (func.name == "Begin"): - print ' betweenGLBeginEnd = true;' - elif (func.name == "End"): - print ' betweenGLBeginEnd = false;' - print ' if (!betweenGLBeginEnd && config.checkErrors) {' - print ' GLenum res;' - print ' while ((res = real_glGetError ()) != GL_NO_ERROR) ' - print ' GLTRACE_LOG("OpenGL Error (" << res << "): <" << gluErrorString(res) << "> at " << gltrace::getStackTrace());' - print ' }' - if (func.return_type != "void"): - print " return retval;" - print '}' - - -def show_usage(): - print "Usage: %s [-f input_file_name] [-m output_mode] [-d]" % sys.argv[0] - print " -m output_mode Output mode can be one of 'proto', 'init_c' or 'init_h'." - print " -d Enable extra debug information in the generated code." - sys.exit(1) - - -if __name__ == '__main__': - file_name = "gl_API.xml" - - try: - (args, trail) = getopt.getopt(sys.argv[1:], "f:d") - except Exception,e: - show_usage() - - debug = 0 - for (arg,val) in args: - if arg == "-f": - file_name = val - elif arg == "-d": - debug = 1 - - printer = PrintGltrace() - - printer.debug = debug - api = gl_XML.parse_GL_API( file_name, glX_XML.glx_item_factory() ) - - printer.Print( api ) diff --git a/progs/tools/trace/gltrace_support.cc b/progs/tools/trace/gltrace_support.cc deleted file mode 100644 index 0b76d3247d..0000000000 --- a/progs/tools/trace/gltrace_support.cc +++ /dev/null @@ -1,193 +0,0 @@ -/* - * Copyright (C) 2006 Thomas Sondergaard All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#include "gltrace_support.h" -#include <cstdlib> -#include <cstring> -#include <assert.h> -#include <sstream> -#include <fstream> -#include <iomanip> -#include <execinfo.h> -#include <cxxabi.h> -#include <sys/time.h> - -namespace { - - const char * - demangle (const char * mangled) throw() - { - static char buf[4096]; - int status; - size_t length = sizeof(buf)-1; - - memset (buf, 0, sizeof(buf)); - - if (!mangled) - return 0; - - char * demangled = __cxxabiv1::__cxa_demangle(mangled, - buf, - &length, - &status); - if (demangled && !status) - return demangled; - else - return mangled; - } - - void - printStackTrace (void **stackframes, - int stackframe_size, - std::ostream & out ) - { - char **strings = 0; - std::stringstream ss; - - // this might actually fail if memory is tight or we are in a - // signal handler - strings = backtrace_symbols (stackframes, stackframe_size); - - ss << "Backtrace :"; - - if (stackframe_size == gltrace::MAX_STACKFRAMES) - ss << "(possibly incomplete maximal number of frames exceeded):" << std::endl; - else - ss << std::endl; - - out << ss.str(); - - // the first frame is the constructor of the exception - // the last frame always seem to be bogus? - for (int i = 0; strings && i < stackframe_size-1; ++i) { - char libname[257], funcname[2049]; - unsigned int address=0, funcoffset = 0x0; - - memset (libname,0,sizeof(libname)); - memset (funcname,0,sizeof(funcname)); - - strcpy (funcname,"??"); - strcpy (libname, "??"); - - int scanned = sscanf (strings[i], "%256[^(] ( %2048[^+] + %x ) [ %x ]", - libname, - funcname, - &funcoffset, - &address); - - /* ok, so no function was mentioned in the backtrace */ - if (scanned < 4) { - scanned = sscanf (strings[i], "%256[^([] [ %x ]", - libname, - &address); - } - - if (funcname[0] == '_') { - const char * demangled; - if ((demangled = demangle(funcname) ) != funcname) { - strncpy (funcname, demangled, sizeof(funcname)-1); - } - } - else - strcat (funcname," ()"); - - out << "\t#" << i << std::hex << " 0x" << address << " in " << funcname - << " at 0x" << funcoffset << " (from " << libname << ")" << std::endl; - } - - free (strings); - } - - -} // anon namespace - -namespace gltrace { - - std::string getStackTrace(int count, int first) { - ++first; - std::stringstream ss; - const int BA_MAX = 1000; - assert(count + first <= BA_MAX); - void *ba[BA_MAX]; - int n = backtrace(ba, count+first); - - printStackTrace( &ba[first], n-first, ss); - - return ss.str(); - } - - std::ostream &timeNow(std::ostream &os) { - - struct timeval now; - struct tm t; - static char const *months[12] = - { - "Jan", "Feb", "Mar", "Apr", "May", "Jun", - "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" - }; - - gettimeofday (&now, 0); - localtime_r ((time_t*) &now.tv_sec, &t); - - os - << months[t.tm_mon] << " " - << std::setw(2) << t.tm_mday << " " - << std::setw(2) << t.tm_hour << ":" - << std::setw(2) << t.tm_min << ":" - << std::setw(2) << t.tm_sec << "." - << std::setw(3) << now.tv_usec/1000; - return os; - } - - logstream::logstream(const char *filename) { - if (!filename) - init(std::cerr.rdbuf()); - else { - file_os.reset(new std::ofstream(filename)); - if (file_os->good()) - init(file_os->rdbuf()); - else { - std::cerr << "ERROR: gltrace: Failed to open '" << filename - << "' for writing. Falling back to stderr." << std::endl; - init(std::cerr.rdbuf()); - } - } - *this << std::setfill('0'); // setw used in timeNow - } - - - Config::Config() : - logCalls(true), - checkErrors(true), - logTime(true), - log(getenv("GLTRACE_LOGFILE")) { - if (const char *v = getenv("GLTRACE_LOG_CALLS")) - logCalls = strncmp("1", v, 1) == 0; - if (const char *v = getenv("GLTRACE_CHECK_ERRORS")) - checkErrors = strncmp("1", v, 1) == 0; - if (const char *v = getenv("GLTRACE_LOG_TIME")) - logTime = strncmp("1", v, 1) == 0; - } - - // *The* config - Config config; - -} // namespace gltrace diff --git a/progs/tools/trace/gltrace_support.h b/progs/tools/trace/gltrace_support.h deleted file mode 100644 index de28669a98..0000000000 --- a/progs/tools/trace/gltrace_support.h +++ /dev/null @@ -1,65 +0,0 @@ -// -*- c++ -*- (emacs c++ mode) -/* - * Copyright (C) 2006 Thomas Sondergaard All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ -#ifndef GLTRACE_SUPPORT_H -#define GLTRACE_SUPPORT_H - -#include <string> -#include <iostream> -#include <memory> - -namespace gltrace { - - const int MAX_STACKFRAMES = 100; - - /// Returns the stack trace of the current thread - std::string getStackTrace(int count = MAX_STACKFRAMES, int first = 0); - - std::ostream &timeNow(std::ostream &os); - - struct logstream : public std::ostream { - - /// Opens a logstream - if filename is null, stderr will be used - logstream(const char *filename = 0); - - private: - std::auto_ptr<std::ofstream> file_os; - }; - - struct Config { - bool logCalls; - bool checkErrors; - bool logTime; - logstream log; - - Config(); - }; - - extern Config config; - -} // namespace gltrace - -#define GLTRACE_LOG(x) \ - { if (config.logTime) config.log << timeNow << ": "; config.log << x << "\n"; } - -#endif // GLTRACE_SUPPORT_H - - diff --git a/progs/trivial/.gitignore b/progs/trivial/.gitignore deleted file mode 100644 index 4d6e405c50..0000000000 --- a/progs/trivial/.gitignore +++ /dev/null @@ -1,162 +0,0 @@ -clear -clear-fbo -clear-fbo-tex -clear-random -clear-repeat -clear-scissor -clear-undefined -createwin -dlist-begin-call-end -dlist-dangling -dlist-degenerate -dlist-edgeflag -dlist-edgeflag-dangling -dlist-flat-tri -dlist-mat-tri -dlist-recursive-call -dlist-tri-flat-tri -dlist-tri-mat-tri -draw2arrays -drawarrays -drawelements -drawrange -extfuncs.h -flat-clip -fs-tri -line -line-clip -line-cull -line-flat -line-smooth -line-stipple-wide -line-userclip -line-userclip-clip -line-userclip-nop -line-userclip-nop-clip -line-wide -lineloop -lineloop-clip -lineloop-elts -linestrip -linestrip-clip -linestrip-flat-stipple -linestrip-stipple -linestrip-stipple-wide -long-fixed-func -pgon-mode -point -point-clip -point-param -point-sprite -point-wide -point-wide-smooth -poly -poly-flat -poly-flat-clip -poly-flat-unfilled-clip -poly-unfilled -quad -quad-clip -quad-clip-all-vertices -quad-clip-nearplane -quad-degenerate -quad-flat -quad-offset-factor -quad-offset-unfilled -quad-offset-units -quad-tex-2d -quad-tex-3d -quad-tex-alpha -quad-tex-pbo -quad-tex-sub -quad-unfilled -quad-unfilled-clip -quad-unfilled-stipple -quads -quadstrip -quadstrip-clip -quadstrip-cont -quadstrip-flat -readtex.c -readtex.h -readpixels -tri -tri-alpha -tri-alpha-tex -tri-array-interleaved -tri-blend -tri-blend-color -tri-blend-max -tri-blend-min -tri-blend-revsub -tri-blend-sub -tri-clear -tri-clip -tri-cull -tri-cull-both -tri-dlist -tri-edgeflag -tri-fbo -tri-fbo-tex -tri-fbo-tex-mip -tri-flat -tri-flat-clip -tri-fog -tri-fp -tri-fp-const-imm -tri-lit -tri-lit-material -tri-logicop-none -tri-logicop-xor -tri-mask-tri -tri-multitex-vbo -tri-orig -tri-query -tri-repeat -tri-scissor-tri -tri-square -tri-stencil -tri-stipple -tri-tex -tri-tex-3d -tri-tri -tri-unfilled -tri-unfilled-clip -tri-unfilled-edgeflag -tri-unfilled-fog -tri-unfilled-point -tri-unfilled-smooth -tri-unfilled-tri -tri-unfilled-tri-lit -tri-unfilled-userclip -tri-unfilled-userclip-stip -tri-userclip -tri-viewport -tri-z -tri-z-9 -tri-z-eq -trifan -trifan-flat -trifan-flat-clip -trifan-flat-unfilled-clip -trifan-unfilled -tristrip -tristrip-clip -tristrip-flat -vbo-drawarrays -vbo-drawelements -vbo-drawrange -vbo-noninterleaved -vp-array -vp-array-int -vp-clip -vp-line-clip -vp-tri -vp-tri-cb -vp-tri-cb-pos -vp-tri-cb-tex -vp-tri-imm -vp-tri-invariant -vp-tri-swap -vp-tri-tex -vp-unfilled diff --git a/progs/trivial/Makefile b/progs/trivial/Makefile deleted file mode 100644 index 70728616d2..0000000000 --- a/progs/trivial/Makefile +++ /dev/null @@ -1,245 +0,0 @@ -# progs/tests/Makefile - - -# These programs aren't intended to be included with the normal distro. -# They're not too interesting but they're good for testing. - -TOP = ../.. -include $(TOP)/configs/current - - -LIBS = -L$(TOP)/$(LIB_DIR) -l $(GLEW_LIB) -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) $(APP_LIB_DEPS) - -SOURCES = \ - clear-fbo-tex.c \ - clear-fbo.c \ - clear-scissor.c \ - clear-undefined.c \ - clear-repeat.c \ - clear-random.c \ - clear.c \ - createwin.c \ - dlist-dangling.c \ - dlist-flat-tri.c \ - dlist-mat-tri.c \ - dlist-tri-flat-tri.c \ - dlist-tri-mat-tri.c \ - dlist-recursive-call.c \ - dlist-begin-call-end.c \ - dlist-edgeflag-dangling.c \ - dlist-edgeflag.c \ - dlist-degenerate.c \ - drawarrays.c \ - draw2arrays.c \ - drawelements.c \ - drawrange.c \ - flat-clip.c \ - fs-tri.c \ - line-clip.c \ - line-cull.c \ - line-flat.c \ - line-smooth.c \ - line-stipple-wide.c \ - line-userclip-clip.c \ - line-userclip-nop-clip.c \ - line-userclip-nop.c \ - line-userclip.c \ - line-wide.c \ - line.c \ - lineloop-clip.c \ - lineloop-elts.c \ - lineloop.c \ - linestrip-clip.c \ - linestrip-flat-stipple.c \ - linestrip-stipple-wide.c \ - linestrip-stipple.c \ - linestrip.c \ - long-fixed-func.c \ - pgon-mode.c \ - point-clip.c \ - point-param.c \ - point-sprite.c \ - point-wide.c \ - point-wide-smooth.c \ - point.c \ - poly-flat.c \ - poly-flat-clip.c \ - poly-flat-unfilled-clip.c \ - poly-unfilled.c \ - poly.c \ - quad-clip-all-vertices.c \ - quad-clip-nearplane.c \ - quad-clip.c \ - quad-degenerate.c \ - quad-flat.c \ - quad-offset-factor.c \ - quad-offset-unfilled.c \ - quad-offset-units.c \ - quad-tex-2d.c \ - quad-tex-3d.c \ - quad-tex-alpha.c \ - quad-tex-pbo.c \ - quad-tex-sub.c \ - quad-unfilled-clip.c \ - quad-unfilled-stipple.c \ - quad-unfilled.c \ - quad.c \ - quads.c \ - quadstrip-clip.c \ - quadstrip-cont.c \ - quadstrip-flat.c \ - quadstrip.c \ - readpixels.c \ - tri-alpha.c \ - tri-alpha-tex.c \ - tri-array-interleaved.c \ - tri-blend-color.c \ - tri-blend-max.c \ - tri-blend-min.c \ - tri-blend-revsub.c \ - tri-blend-sub.c \ - tri-blend.c \ - tri-clear.c \ - tri-clip.c \ - tri-cull-both.c \ - tri-cull.c \ - tri-logicop-none.c \ - tri-logicop-xor.c \ - tri-dlist.c \ - tri-edgeflag.c \ - tri-fbo-tex-mip.c \ - tri-fbo-tex.c \ - tri-fbo.c \ - tri-flat-clip.c \ - tri-flat.c \ - tri-fog.c \ - tri-fp.c \ - tri-fp-const-imm.c \ - tri-lit.c \ - tri-lit-material.c \ - tri-mask-tri.c \ - tri-orig.c \ - tri-query.c \ - tri-repeat.c \ - tri-scissor-tri.c \ - tri-square.c \ - tri-stencil.c \ - tri-stipple.c \ - tri-multitex-vbo.c \ - tri-tex.c \ - tri-tex-3d.c \ - tri-tri.c \ - tri-unfilled-fog.c \ - tri-unfilled-edgeflag.c \ - tri-unfilled-clip.c \ - tri-unfilled-point.c \ - tri-unfilled-smooth.c \ - tri-unfilled-tri.c \ - tri-unfilled-tri-lit.c \ - tri-unfilled-userclip-stip.c \ - tri-unfilled-userclip.c \ - tri-unfilled.c \ - tri-userclip.c \ - tri-viewport.c \ - tri-z-9.c \ - tri-z-eq.c \ - tri-z.c \ - tri.c \ - trifan-flat.c \ - trifan-flat-clip.c \ - trifan-flat-unfilled-clip.c \ - trifan-unfilled.c \ - trifan.c \ - tristrip-clip.c \ - tristrip-flat.c \ - tristrip.c \ - vbo-drawarrays.c \ - vbo-noninterleaved.c \ - vbo-drawelements.c \ - vbo-drawrange.c \ - vp-array.c \ - vp-array-int.c \ - vp-clip.c \ - vp-line-clip.c \ - vp-tri.c \ - vp-tri-invariant.c \ - vp-tri-swap.c \ - vp-tri-tex.c \ - vp-tri-imm.c \ - vp-tri-cb.c \ - vp-tri-cb-pos.c \ - vp-tri-cb-tex.c \ - vp-unfilled.c - -PROGS = $(SOURCES:%.c=%) - -INCLUDES = -I. -I$(TOP)/include -I../samples - -UTIL_FILES = readtex.h readtex.c - - -##### RULES ##### - -.SUFFIXES: -.SUFFIXES: .c - -.c: - $(APP_CC) $(INCLUDES) $(CFLAGS) $(LDFLAGS) $< $(LIBS) -o $@ - -.c.o: - $(APP_CC) -c $(INCLUDES) $(CFLAGS) $(DEFINES) $< -o $@ - -.S.o: - $(APP_CC) -c $(INCLUDES) $(CFLAGS) $(DEFINES) $< -o $@ - - -##### TARGETS ##### - -default: $(UTIL_FILES) $(PROGS) - -clean: - -rm -f $(PROGS) - -rm -f *.o - -rm -f getproclist.h - - -# auto code generation -getprocaddress: getprocaddress.c getproclist.h - -getproclist.h: $(TOP)/src/mesa/glapi/gl_API.xml getprocaddress.c getprocaddress.py - python getprocaddress.py > getproclist.h - - -texrect: texrect.o readtex.o - $(APP_CC) $(CFLAGS) $(LDFLAGS) texrect.o readtex.o $(LIBS) -o $@ - -texrect.o: texrect.c readtex.h - $(APP_CC) -c $(INCLUDES) $(CFLAGS) $(DEFINES) $< -o $@ - -invert: invert.o readtex.o - $(APP_CC) $(CFLAGS) $(LDFLAGS) invert.o readtex.o $(LIBS) -o $@ - -invert.o: invert.c readtex.h - $(APP_CC) -c $(INCLUDES) $(CFLAGS) $(DEFINES) $< -o $@ - -readtex.o: readtex.c - $(APP_CC) -c $(INCLUDES) $(CFLAGS) $(DEFINES) $< -o $@ - - -readtex.h: $(TOP)/progs/util/readtex.h - ln -s $(TOP)/progs/util/readtex.h . - -readtex.c: $(TOP)/progs/util/readtex.c - ln -s $(TOP)/progs/util/readtex.c . - - -fs-tri: fs-tri.c extfuncs.h - - -extfuncs.h: $(TOP)/progs/util/extfuncs.h - cp $< . - - -# Emacs tags -tags: - etags `find . -name \*.[ch]` `find ../include` diff --git a/progs/trivial/SConscript b/progs/trivial/SConscript deleted file mode 100644 index 9a1f3575bd..0000000000 --- a/progs/trivial/SConscript +++ /dev/null @@ -1,177 +0,0 @@ -Import('env') - -if not env['GLUT']: - Return() - -env = env.Clone() - -env.Prepend(LIBS = ['$GLUT_LIB']) - -progs = [ - 'clear-fbo-tex', - 'clear-fbo', - 'clear-scissor', - 'clear-undefined', - 'clear-repeat', - 'clear', - 'dlist-dangling', - 'dlist-edgeflag-dangling', - 'dlist-edgeflag', - 'dlist-degenerate', - 'drawarrays', - 'draw2arrays', - 'drawelements', - 'drawrange', - 'flat-clip', - 'fs-tri', - 'line-clip', - 'line-cull', - 'line-flat', - 'line-smooth', - 'line-stipple-wide', - 'line-userclip-clip', - 'line-userclip-nop-clip', - 'line-userclip-nop', - 'line-userclip', - 'line-wide', - 'line', - 'lineloop-clip', - 'lineloop-elts', - 'lineloop', - 'linestrip-flat-stipple', - 'linestrip-stipple-wide', - 'linestrip-stipple', - 'linestrip', - 'long-fixed-func', - 'pgon-mode', - 'point-clip', - 'point-param', - 'point-sprite', - 'point-wide', - 'point-wide-smooth', - 'point', - 'poly-flat', - 'poly-flat-clip', - 'poly-flat-unfilled-clip', - 'poly-unfilled', - 'poly', - 'quad-clip-all-vertices', - 'quad-clip-nearplane', - 'quad-clip', - 'quad-degenerate', - 'quad-flat', - 'quad-offset-factor', - 'quad-offset-unfilled', - 'quad-offset-units', - 'quad-tex-2d', - 'quad-tex-3d', - 'quad-tex-alpha', - 'quad-tex-pbo', - 'quad-tex-sub', - 'quad-unfilled-clip', - 'quad-unfilled-stipple', - 'quad-unfilled', - 'quad', - 'quads', - 'quadstrip-clip', - 'quadstrip-cont', - 'quadstrip-flat', - 'quadstrip', - 'tri-alpha', - 'tri-blend-color', - 'tri-blend-max', - 'tri-blend-min', - 'tri-blend-revsub', - 'tri-blend-sub', - 'tri-blend', - 'tri-clip', - 'tri-clear', - 'tri-cull-both', - 'tri-cull', - 'tri-dlist', - 'tri-edgeflag', - 'tri-fbo-tex-mip', - 'tri-fbo-tex', - 'tri-fbo', - 'tri-flat-clip', - 'tri-flat', - 'tri-fog', - 'tri-fp', - 'tri-fp-const-imm', - 'tri-lit', - 'tri-logicop-none', - 'tri-logicop-xor', - 'tri-mask-tri', - 'tri-orig', - 'tri-query', - 'tri-repeat', - 'tri-scissor-tri', - 'tri-stencil', - 'tri-stipple', - 'tri-multitex-vbo', - 'tri-tex', - 'tri-tex-3d', - 'tri-tri', - 'tri-unfilled-fog', - 'tri-unfilled-edgeflag', - 'tri-unfilled-clip', - 'tri-unfilled-smooth', - 'tri-unfilled-tri', - 'tri-unfilled-tri-lit', - 'tri-unfilled-userclip-stip', - 'tri-unfilled-userclip', - 'tri-unfilled', - 'tri-userclip', - 'tri-viewport', - 'tri-z-eq', - 'tri-z', - 'tri', - 'trifan-flat', - 'trifan-flat-clip', - 'trifan-flat-unfilled-clip', - 'trifan-unfilled', - 'trifan', - 'tristrip-clip', - 'tristrip-flat', - 'tristrip', - 'vbo-drawarrays', - 'vbo-noninterleaved', - 'vbo-drawelements', - 'vbo-drawrange', - 'vp-array', - 'vp-array-int', - 'vp-clip', - 'vp-line-clip', - 'vp-tri', - 'vp-tri-invariant', - 'vp-tri-swap', - 'vp-tri-tex', - 'vp-tri-imm', - 'vp-tri-cb', - 'vp-tri-cb-pos', - 'vp-tri-cb-tex', - 'vp-unfilled', -] - -for prog in progs: - prog = env.Program( - target = prog, - source = prog + '.c', - ) - -# auto code generation -#getprocaddress: getprocaddress.c getproclist.h - -#getproclist.h: $(TOP)/src/mesa/glapi/gl_API.xml getprocaddress.c getprocaddress.py -# python getprocaddress.py > getproclist.h - - -#readtex.h: $(TOP)/progs/util/readtex.h -# ln -s $(TOP)/progs/util/readtex.h . - -#readtex.c: $(TOP)/progs/util/readtex.c -# ln -s $(TOP)/progs/util/readtex.c . - - -#extfuncs.h: $(TOP)/progs/util/extfuncs.h -# cp $< . diff --git a/progs/trivial/clear-fbo-tex.c b/progs/trivial/clear-fbo-tex.c deleted file mode 100644 index ff31706fd1..0000000000 --- a/progs/trivial/clear-fbo-tex.c +++ /dev/null @@ -1,223 +0,0 @@ - -#include <assert.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <string.h> - -#include <GL/glew.h> -#include <GL/glut.h> - - - -static GLenum TexTarget = GL_TEXTURE_2D; -static int TexWidth = 512, TexHeight = 512; -static GLenum TexIntFormat = GL_RGBA; /* either GL_RGB or GL_RGBA */ - -static int Width = 512, Height = 512; -static GLuint MyFB, TexObj; - - -#define CheckError() assert(glGetError() == 0) - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - - if (!glutExtensionSupported("GL_EXT_framebuffer_object")) { - printf("GL_EXT_framebuffer_object not found!\n"); - exit(0); - } - - - glGenFramebuffersEXT(1, &MyFB); - glGenTextures(1, &TexObj); - - /* Make texture object/image */ - glBindTexture(TexTarget, TexObj); - glTexParameteri(TexTarget, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(TexTarget, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexParameteri(TexTarget, GL_TEXTURE_BASE_LEVEL, 0); - glTexParameteri(TexTarget, GL_TEXTURE_MAX_LEVEL, 0); - - glTexImage2D(TexTarget, 0, TexIntFormat, TexWidth, TexHeight, 0, - GL_RGBA, GL_UNSIGNED_BYTE, NULL); - - - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - - - - { - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, MyFB); - - glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, - TexTarget, TexObj, 0); - - - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); - } - -} - - - -static void -Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode( GL_MODELVIEW ); - - Width = width; - Height = height; -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - - - -static void Draw( void ) -{ - - - /* draw to texture image */ - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, MyFB); - /* glDrawBuffer(GL_COLOR_ATTACHMENT1_EXT); */ - /* glReadBuffer(GL_COLOR_ATTACHMENT1_EXT); */ - - - glViewport(0, 0, TexWidth, TexHeight); - CheckError(); - - glClearColor(0.5, 0.5, 1.0, 0.0); - glClear(GL_COLOR_BUFFER_BIT); - CheckError(); - - if (0) { - glBegin(GL_TRIANGLES); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(0,.9,0); - glVertex3f(-0.9, 0.0, -30.0); - glEnd(); - } - - { - GLubyte *buffer = malloc(Width * Height * 4); - - /* read from user framebuffer */ - glReadPixels(0, 0, Width-60, Height-60, GL_RGBA, GL_UNSIGNED_BYTE, buffer); - CheckError(); - - /* draw to window */ - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); - glViewport(0, 0, Width, Height); - - /* Try to clear the window, but will overwrite: - */ - glClearColor(0.8, 0.8, 0, 0.0); - glClear(GL_COLOR_BUFFER_BIT); - - glWindowPos2iARB(30, 30); - glDrawPixels(Width-60, Height-60, GL_RGBA, GL_UNSIGNED_BYTE, buffer); - - free(buffer); - } - - /* Bind normal framebuffer */ - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); - glViewport(0, 0, Width, Height); - - if (0) { - glBegin(GL_TRIANGLES); - glColor3f(0,.7,0); - glVertex3f( 0.5, -0.5, -30.0); - glColor3f(0,0,.8); - glVertex3f( 0.5, 0.5, -30.0); - glColor3f(.9,0,0); - glVertex3f(-0.5, 0.0, -30.0); - glEnd(); - } - - if (doubleBuffer) { - glutSwapBuffers(); - } - - CheckError(); -} - - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - - - -int -main( int argc, char *argv[] ) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(100, 0); glutInitWindowSize( Width, Height ); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(argv[0]) == GL_FALSE) { - exit(1); - } - - glewInit(); - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/clear-fbo.c b/progs/trivial/clear-fbo.c deleted file mode 100644 index 6435c901ad..0000000000 --- a/progs/trivial/clear-fbo.c +++ /dev/null @@ -1,208 +0,0 @@ - -#include <assert.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <string.h> - -#include <GL/glew.h> -#include <GL/glut.h> - - - -static int Width = 512, Height = 512; -static GLuint MyFB, MyRB; - - -#define CheckError() assert(glGetError() == 0) - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - - if (!glutExtensionSupported("GL_EXT_framebuffer_object")) { - printf("GL_EXT_framebuffer_object not found!\n"); - exit(0); - } - - - glGenFramebuffersEXT(1, &MyFB); - glGenRenderbuffersEXT(1, &MyRB); - - { - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, MyFB); - - glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, MyRB); - - glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT1_EXT, - GL_RENDERBUFFER_EXT, MyRB); - - glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_RGB, Width, Height); - - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); - } - -} - - - -static void -Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode( GL_MODELVIEW ); - - Width = width; - Height = height; - glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_RGB, Width, Height); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - - - -static void Draw( void ) -{ - - /* draw to user framebuffer */ - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, MyFB); - glDrawBuffer(GL_COLOR_ATTACHMENT1_EXT); - glReadBuffer(GL_COLOR_ATTACHMENT1_EXT); - - - glViewport(0, 0, Width, Height); - CheckError(); - - glClearColor(0.5, 0.5, 1.0, 0.0); - glClear(GL_COLOR_BUFFER_BIT); - CheckError(); - - if (0) { - glBegin(GL_TRIANGLES); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(0,.9,0); - glVertex3f(-0.9, 0.0, -30.0); - glEnd(); - } - - { - GLubyte *buffer = malloc(Width * Height * 4); - - /* read from user framebuffer */ - glReadPixels(0, 0, Width-60, Height-60, GL_RGBA, GL_UNSIGNED_BYTE, buffer); - CheckError(); - - /* draw to window */ - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); - glViewport(0, 0, Width, Height); - - /* Try to clear the window, but will overwrite: - */ - glClearColor(0.8, 0.8, 0, 0.0); - glClear(GL_COLOR_BUFFER_BIT); - - glWindowPos2iARB(30, 30); - glDrawPixels(Width-60, Height-60, GL_RGBA, GL_UNSIGNED_BYTE, buffer); - - free(buffer); - } - - /* Bind normal framebuffer */ - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); - glViewport(0, 0, Width, Height); - - if (0) { - glBegin(GL_TRIANGLES); - glColor3f(0,.7,0); - glVertex3f( 0.5, -0.5, -30.0); - glColor3f(0,0,.8); - glVertex3f( 0.5, 0.5, -30.0); - glColor3f(.9,0,0); - glVertex3f(-0.5, 0.0, -30.0); - glEnd(); - } - - if (doubleBuffer) - glutSwapBuffers(); - else - glFinish(); - - CheckError(); -} - - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - - - -int -main( int argc, char *argv[] ) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(100, 0); glutInitWindowSize( Width, Height ); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(argv[0]) == GL_FALSE) { - exit(1); - } - - glewInit(); - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/clear-random.c b/progs/trivial/clear-random.c deleted file mode 100644 index ab67f84518..0000000000 --- a/progs/trivial/clear-random.c +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(0); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClearColor( - rand() / (float)RAND_MAX, - rand() / (float)RAND_MAX, - rand() / (float)RAND_MAX, - 0.0); - - glClear(GL_COLOR_BUFFER_BIT); - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); - glutInitWindowSize( 256, 256); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/clear-repeat.c b/progs/trivial/clear-repeat.c deleted file mode 100644 index f966adb080..0000000000 --- a/progs/trivial/clear-repeat.c +++ /dev/null @@ -1,130 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.3, 0.1, 0.3, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - switch (key) { - case 27: - exit(0); - default: - glutPostRedisplay(); - return; - } -} - -static void Draw(void) -{ - static float f = 0; - while (1) { - f += .1; - glClearColor((sin(f)+1)/2.0,(cos(f)+1)/2.0,0.5,1); - glClear(GL_COLOR_BUFFER_BIT); - glutSwapBuffers(); - - { - static GLint T0 = 0; - static GLint Frames = 0; - GLint t = glutGet(GLUT_ELAPSED_TIME); - - Frames++; - - if (t - T0 >= 5000) { - GLfloat seconds = (t - T0) / 1000.0; - GLfloat fps = Frames / seconds; - printf("%d frames in %6.3f seconds = %6.3f FPS\n", Frames, seconds, fps); - fflush(stdout); - T0 = t; - Frames = 0; - } - } - - } - glutPostRedisplay(); -} - -static GLenum Args(int argc, char **argv) -{ - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 300, 300); - - type = GLUT_RGB | GLUT_ALPHA; - type |= GLUT_DOUBLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/clear-scissor.c b/progs/trivial/clear-scissor.c deleted file mode 100644 index 2b6dee77a9..0000000000 --- a/progs/trivial/clear-scissor.c +++ /dev/null @@ -1,119 +0,0 @@ -/* - * glClear + glScissor - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -GLenum doubleBuffer; -GLint Width = 200, Height = 150; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); -} - -static void Reshape(int width, int height) -{ - Width = width; - Height = height; - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - switch (key) { - case 27: - exit(1); - default: - break; - } - glutPostRedisplay(); -} - -static void Draw(void) -{ - glEnable(GL_SCISSOR_TEST); - - glClearColor(1, 0, 0, 0); - glScissor(0, 0, Width / 2, Height / 2); - glClear(GL_COLOR_BUFFER_BIT); - - glClearColor(0, 1, 0, 0); - glScissor(Width / 2, 0, Width - Width / 2, Height / 2); - glClear(GL_COLOR_BUFFER_BIT); - - glClearColor(0, 0, 1, 0); - glScissor(0, Height / 2, Width / 2, Height - Height / 2); - glClear(GL_COLOR_BUFFER_BIT); - - glClearColor(1, 1, 1, 0); - glScissor(Width / 2, Height / 2, Width - Width / 2, Height - Height / 2); - glClear(GL_COLOR_BUFFER_BIT); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( Width, Height ); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(argv[0]) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/clear-undefined.c b/progs/trivial/clear-undefined.c deleted file mode 100644 index 5ec33bf3d7..0000000000 --- a/progs/trivial/clear-undefined.c +++ /dev/null @@ -1,138 +0,0 @@ -/* - * glClear + glScissor + Undefined content of framebuffer - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -GLenum doubleBuffer; -GLint Width = 200, Height = 150; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fprintf(stderr, "Top right corner should be red\n"); - fflush(stderr); -} - -static void Reshape(int width, int height) -{ - Width = width; - Height = height; - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - switch (key) { - case 27: - exit(1); - default: - glutPostRedisplay(); - return; - } - -} - -static void Draw(void) -{ - glColor4f(1.0, 0.0, 0.0, 1.0); - glBegin(GL_QUADS); - glVertex2d(0.0, 0.0); - glVertex2d(0.0, 1.0); - glVertex2d(1.0, 1.0); - glVertex2d(1.0, 0.0); - glEnd(); - - glBegin(GL_QUADS); - glVertex2d(0.0, 0.0); - glVertex2d(0.0, -1.0); - glVertex2d(1.0, -1.0); - glVertex2d(1.0, 0.0); - glEnd(); - - glEnable(GL_SCISSOR_TEST); - glClearColor(1, 1, 0, 0); - glScissor(Width / 2, 0, Width - Width / 2, Height / 2); - glClear(GL_COLOR_BUFFER_BIT); - - glClearColor(0, 0, 1, 0); - glScissor(0, Height / 2, Width / 2, Height - Height / 2); - glClear(GL_COLOR_BUFFER_BIT); - glDisable(GL_SCISSOR_TEST); - - glColor4f(0.0, 1.0, 0.0, 1.0); - glBegin(GL_QUADS); - glVertex2d( 0.0, 0.0); - glVertex2d( 0.0, -1.0); - glVertex2d(-1.0, -1.0); - glVertex2d(-1.0, 0.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_TRUE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( Width, Height ); - - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(argv[0]) == GL_FALSE) { - exit(1); - } - - Init(); - Reshape(Width, Height); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/clear.c b/progs/trivial/clear.c deleted file mode 100644 index 56c3ea52e6..0000000000 --- a/progs/trivial/clear.c +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(0); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); - glutInitWindowSize( 256, 256); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/createwin.c b/progs/trivial/createwin.c deleted file mode 100644 index 93da30ee29..0000000000 --- a/progs/trivial/createwin.c +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - /* glutMainLoop(); */ - return 0; -} diff --git a/progs/trivial/dlist-begin-call-end.c b/progs/trivial/dlist-begin-call-end.c deleted file mode 100644 index dbfaef3978..0000000000 --- a/progs/trivial/dlist-begin-call-end.c +++ /dev/null @@ -1,159 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; -GLint first_list, list; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); - - /* First list will disrupt state which might potentially be - * short-circuited in calling list: - */ - first_list = glGenLists(1); - glNewList(first_list, GL_COMPILE); - /* glColor3f(0,1,0); */ - glEndList(); - - - /* List that looks like it might have redundant state: - */ - list = glGenLists(1); - glNewList(list, GL_COMPILE); - - glShadeModel(GL_FLAT); - glBegin(GL_TRIANGLES); - glColor3f(1,0,0); - glVertex3f( -0.9, 0.9, -30.0); - glVertex3f( -0.9, -0.9, -30.0); - glCallList( first_list ); - glVertex3f( 0.9, 0.0, -30.0); - glEnd(); - glEndList(); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - - - - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glShadeModel( GL_SMOOTH ); - glCallList(list); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/dlist-dangling.c b/progs/trivial/dlist-dangling.c deleted file mode 100644 index 756ab93f87..0000000000 --- a/progs/trivial/dlist-dangling.c +++ /dev/null @@ -1,150 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; -GLint list; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); - - - list = glGenLists(1); - glNewList(list, GL_COMPILE); - glBegin(GL_TRIANGLES); - glVertex3f( 0.9, -0.9, -30.0); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(.8,0,0); - glVertex3f(-0.9, 0.0, -30.0); - glEnd(); - glEndList(); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - - - - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glColor3f(0,.9,0); - glCallList(list); - - glRotatef(45,0,0,1); - glColor3f(1,0,1); - glCallList(list); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/dlist-degenerate.c b/progs/trivial/dlist-degenerate.c deleted file mode 100644 index c7f2d2a6e9..0000000000 --- a/progs/trivial/dlist-degenerate.c +++ /dev/null @@ -1,153 +0,0 @@ -/** - * Test display list corner cases. - */ - - -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glut.h> - - -static int Win; -static GLfloat Xrot = 0, Yrot = 0, Zrot = 0; -static GLboolean Anim = GL_FALSE; -static GLuint List1 = 0, List2 = 0; - - -static void -Idle(void) -{ - Xrot += 3.0; - Yrot += 4.0; - Zrot += 2.0; - glutPostRedisplay(); -} - - -static void -Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glPushMatrix(); - glRotatef(Xrot, 1, 0, 0); - glRotatef(Yrot, 0, 1, 0); - glRotatef(Zrot, 0, 0, 1); - - glCallList(List1); - glCallList(List2); - - glPopMatrix(); - - glutSwapBuffers(); -} - - -static void -Reshape(int width, int height) -{ - glViewport(0, 0, width, height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-1.0, 1.0, -1.0, 1.0, 5.0, 25.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0, 0.0, -15.0); -} - - -static void -Key(unsigned char key, int x, int y) -{ - const GLfloat step = 3.0; - (void) x; - (void) y; - switch (key) { - case 'a': - Anim = !Anim; - if (Anim) - glutIdleFunc(Idle); - else - glutIdleFunc(NULL); - break; - case 'z': - Zrot -= step; - break; - case 'Z': - Zrot += step; - break; - case 27: - glutDestroyWindow(Win); - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void -SpecialKey(int key, int x, int y) -{ - const GLfloat step = 3.0; - (void) x; - (void) y; - switch (key) { - case GLUT_KEY_UP: - Xrot -= step; - break; - case GLUT_KEY_DOWN: - Xrot += step; - break; - case GLUT_KEY_LEFT: - Yrot -= step; - break; - case GLUT_KEY_RIGHT: - Yrot += step; - break; - } - glutPostRedisplay(); -} - - -static void -Init(void) -{ - /* List1: start of primitive */ - List1 = glGenLists(1); - glNewList(List1, GL_COMPILE); - glBegin(GL_POLYGON); - glVertex2f(-1, -1); - glVertex2f( 1, -1); - glEndList(); - - /* List2: end of primitive */ - List2 = glGenLists(1); - glNewList(List2, GL_COMPILE); - glVertex2f( 1, 1); - glVertex2f(-1, 1); - glEnd(); - glEndList(); - - glEnable(GL_DEPTH_TEST); -} - - -int -main(int argc, char *argv[]) -{ - glutInit(&argc, argv); - glutInitWindowPosition(0, 0); - glutInitWindowSize(400, 400); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); - Win = glutCreateWindow(argv[0]); - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutSpecialFunc(SpecialKey); - glutDisplayFunc(Draw); - if (Anim) - glutIdleFunc(Idle); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/dlist-edgeflag-dangling.c b/progs/trivial/dlist-edgeflag-dangling.c deleted file mode 100644 index 51504471e2..0000000000 --- a/progs/trivial/dlist-edgeflag-dangling.c +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; -GLint list; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); - - glPolygonMode(GL_FRONT, GL_LINE); - glPolygonMode(GL_BACK, GL_POINT); - - list = glGenLists(1); - glNewList(list, GL_COMPILE); - glBegin(GL_TRIANGLES); - glVertex3f( 0.9, -0.9, -30.0); - glEdgeFlag(1); - glVertex3f( 0.9, 0.9, -30.0); - glVertex3f(-0.9, 0.0, -30.0); - glEnd(); - glEndList(); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - - - - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glPushMatrix(); - glColor3f(0,.9,0); - glEdgeFlag(0); - glCallList(list); - - glRotatef(45,0,0,1); - glColor3f(1,0,1); - glCallList(list); - glPopMatrix(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/dlist-edgeflag.c b/progs/trivial/dlist-edgeflag.c deleted file mode 100644 index 9456b96473..0000000000 --- a/progs/trivial/dlist-edgeflag.c +++ /dev/null @@ -1,159 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; -GLint list; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); - - glPolygonMode(GL_FRONT, GL_LINE); - glPolygonMode(GL_BACK, GL_POINT); - - list = glGenLists(1); - glNewList(list, GL_COMPILE); - glBegin(GL_TRIANGLES); - glEdgeFlag(1); -/* glColor3f(0,0,.7); */ - glVertex3f( 0.9, -0.9, -30.0); - glEdgeFlag(0); -/* glColor3f(.8,0,0); */ - glVertex3f( 0.9, 0.9, -30.0); - glEdgeFlag(1); -/* glColor3f(0,.9,0); */ - glVertex3f(-0.9, 0.0, -30.0); - glEnd(); - glEndList(); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - - - - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glPushMatrix(); - glColor3f(0,.9,0); - glCallList(list); - - glRotatef(45,0,0,1); - glColor3f(1,0,1); - glCallList(list); - glPopMatrix(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/dlist-flat-tri.c b/progs/trivial/dlist-flat-tri.c deleted file mode 100644 index 3ee9b283a4..0000000000 --- a/progs/trivial/dlist-flat-tri.c +++ /dev/null @@ -1,171 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; -GLint list; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); - - list = glGenLists(1); - glNewList(list, GL_COMPILE); - - /* XXX: this state-change will only be executed if list is called - * from outside a begin/end pair: - */ - glShadeModel( GL_FLAT ); - glBegin(GL_TRIANGLES); - glColor3f(0,0,.7); - glVertex3f( -0.9, 0.9, -30.0); - glColor3f(0,.9,0); - glVertex3f( -0.9, -0.9, -30.0); - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.0, -30.0); - glEnd(); - - /* This statechange is potentially NOT redundant: - */ - glShadeModel( GL_FLAT ); - glBegin(GL_TRIANGLES); - glColor3f(0,1,0); - glVertex3f( -0.5, 0.5, -30.0); - glColor3f(0,0,1); - glVertex3f( -0.5, -0.5, -30.0); - glColor3f(1,0,0); - glVertex3f( 0.5, 0.0, -30.0); - glEnd(); - - glEndList(); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - - - - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glShadeModel( GL_SMOOTH ); - - glBegin(GL_TRIANGLES); - - /* Note: call the list from inside a begin/end pair. The end is - * provided by the display list... - */ - glCallList(list); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/dlist-mat-tri.c b/progs/trivial/dlist-mat-tri.c deleted file mode 100644 index d17c4b913b..0000000000 --- a/progs/trivial/dlist-mat-tri.c +++ /dev/null @@ -1,182 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; -GLint list; - -static GLfloat red[4] = {0.8, 0.1, 0.0, 1.0}; -static GLfloat green[4] = {0.0, 0.8, 0.2, 1.0}; -/*static GLfloat blue[4] = {0.2, 0.2, .7, 1.0};*/ - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClear(GL_COLOR_BUFFER_BIT); - - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - - glClearColor(0.0, 0.0, 1.0, 0.0); - - list = glGenLists(1); - glNewList(list, GL_COMPILE); - - /* XXX: this state-change will be executed regardless of whether - * the list is called from outside a begin/end pair: - */ - glMaterialfv(GL_FRONT, GL_AMBIENT, red); - glBegin(GL_TRIANGLES); - glVertex3f( -0.9, 0.9, -30.0); - glVertex3f( -0.9, -0.9, -30.0); - glVertex3f( 0.9, 0.0, -30.0); - glEnd(); - - glMaterialfv(GL_FRONT, GL_DIFFUSE, red); - glBegin(GL_TRIANGLES); - glVertex3f( -0.7, 0.7, -30.0); - glVertex3f( -0.7, -0.7, -30.0); - glVertex3f( 0.7, 0.0, -30.0); - glEnd(); - - /* This statechange is redundant: - */ - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, red); - glBegin(GL_TRIANGLES); - glVertex3f( -0.5, 0.5, -30.0); - glVertex3f( -0.5, -0.5, -30.0); - glVertex3f( 0.5, 0.0, -30.0); - glEnd(); - - glEndList(); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - - - - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glShadeModel( GL_SMOOTH ); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, green); - - glBegin(GL_TRIANGLES); - - /* Note: call the list from inside a begin/end pair. The end is - * provided by the display list... - */ - glCallList(list); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/dlist-recursive-call.c b/progs/trivial/dlist-recursive-call.c deleted file mode 100644 index 90224f63cb..0000000000 --- a/progs/trivial/dlist-recursive-call.c +++ /dev/null @@ -1,190 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; -GLint first_list, list; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); - - /* First list will disrupt state which might potentially be - * short-circuited in calling list: - */ - first_list = glGenLists(1); - glNewList(first_list, GL_COMPILE); - glShadeModel( GL_SMOOTH ); - glEndList(); - - - /* List that looks like it might have redundant state: - */ - list = glGenLists(1); - glNewList(list, GL_COMPILE); - - glBegin(GL_TRIANGLES); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(0,.9,0); - glVertex3f(-0.9, 0.0, -30.0); - glEnd(); - - glShadeModel( GL_FLAT ); - glBegin(GL_TRIANGLES); - glColor3f(0,0,.7); - glVertex3f( -0.9, 0.9, -30.0); - glColor3f(0,.9,0); - glVertex3f( -0.9, -0.9, -30.0); - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.0, -30.0); - glEnd(); - - glCallList( first_list ); - - /* Do a quick begin/end to ensure we are not inside a dangling - * primitive from the called list: - */ - glBegin( GL_POINTS ); - glEnd(); - - /* This statechange is NOT redundant: - */ - glShadeModel( GL_FLAT ); - glBegin(GL_TRIANGLES); - glColor3f(1,0,0); - glVertex3f( -0.5, 0.5, -30.0); - glColor3f(0,1,0); - glVertex3f( -0.5, -0.5, -30.0); - glColor3f(0,0,1); - glVertex3f( 0.5, 0.0, -30.0); - glEnd(); - - glEndList(); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - - - - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glShadeModel( GL_SMOOTH ); - glCallList(list); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/dlist-tri-flat-tri.c b/progs/trivial/dlist-tri-flat-tri.c deleted file mode 100644 index 3265a4d6dc..0000000000 --- a/progs/trivial/dlist-tri-flat-tri.c +++ /dev/null @@ -1,171 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; -GLint list; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); - - list = glGenLists(1); - glNewList(list, GL_COMPILE); - - glBegin(GL_TRIANGLES); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(0,.9,0); - glVertex3f(-0.9, 0.0, -30.0); - glEnd(); - - glShadeModel( GL_FLAT ); - glBegin(GL_TRIANGLES); - glColor3f(0,0,.7); - glVertex3f( -0.9, 0.9, -30.0); - glColor3f(0,.9,0); - glVertex3f( -0.9, -0.9, -30.0); - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.0, -30.0); - glEnd(); - - /* This statechange is redundant: - */ - glShadeModel( GL_FLAT ); - glBegin(GL_TRIANGLES); - glColor3f(1,0,0); - glVertex3f( -0.5, 0.5, -30.0); - glColor3f(0,1,0); - glVertex3f( -0.5, -0.5, -30.0); - glColor3f(0,0,1); - glVertex3f( 0.5, 0.0, -30.0); - glEnd(); - - glEndList(); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - - - - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glShadeModel( GL_SMOOTH ); - glCallList(list); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/dlist-tri-mat-tri.c b/progs/trivial/dlist-tri-mat-tri.c deleted file mode 100644 index 053bb124a2..0000000000 --- a/progs/trivial/dlist-tri-mat-tri.c +++ /dev/null @@ -1,174 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; -GLint list; - -static GLfloat red[4] = {0.8, 0.1, 0.0, 1.0}; -static GLfloat green[4] = {0.0, 0.8, 0.2, 1.0}; -static GLfloat blue[4] = {0.2, 0.2, .9, 1.0}; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClear(GL_COLOR_BUFFER_BIT); - - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - - glClearColor(0.0, 0.0, 1.0, 0.0); - - list = glGenLists(1); - glNewList(list, GL_COMPILE); - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, green); - - glBegin(GL_TRIANGLES); - glNormal3f(0,0,.7); - glVertex3f( 0.9, -0.9, -30.0); - glVertex3f( 0.9, 0.9, -30.0); - glVertex3f(-0.9, 0.0, -30.0); - glEnd(); - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, blue); - - glBegin(GL_TRIANGLES); - glVertex3f( -0.9, 0.9, -30.0); - glVertex3f( -0.9, -0.9, -30.0); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, red); - glVertex3f( 0.9, 0.0, -30.0); - glEnd(); - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, blue); - glBegin(GL_TRIANGLES); - glVertex3f( -0.5, 0.5, -30.0); - glVertex3f( -0.5, -0.5, -30.0); - glVertex3f( 0.5, 0.0, -30.0); - glEnd(); - - glEndList(); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - - - - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glShadeModel( GL_SMOOTH ); - glCallList(list); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/draw2arrays.c b/progs/trivial/draw2arrays.c deleted file mode 100644 index 2345ae9e9e..0000000000 --- a/progs/trivial/draw2arrays.c +++ /dev/null @@ -1,117 +0,0 @@ -/* Basic VBO */ - -#include <assert.h> -#include <string.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - -GLfloat pos[][3] = - { { 0.9, -0.9, 0.0 }, - { 0.9, 0.9, 0.0 }, - { -0.9, 0.9, 0.0 }, - { -0.9, -0.9, 0.0 } }; - -GLubyte color[][4] = -{ { 0x00, 0x00, 0xff, 0x00 }, - { 0x00, 0xff, 0x00, 0x00 }, - { 0xff, 0x00, 0x00, 0x00 }, - { 0xff, 0xff, 0xff, 0x00 } }; - -static void Init( void ) -{ - GLint errno; - GLuint prognum; - - static const char *prog1 = - "!!ARBvp1.0\n" - "MOV result.color, vertex.color;\n" - "MOV result.position, vertex.position;\n" - "END\n"; - - glGenProgramsARB(1, &prognum); - glBindProgramARB(GL_VERTEX_PROGRAM_ARB, prognum); - glProgramStringARB(GL_VERTEX_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, - strlen(prog1), (const GLubyte *) prog1); - - assert(glIsProgramARB(prognum)); - errno = glGetError(); - printf("glGetError = %d\n", errno); - if (errno != GL_NO_ERROR) - { - GLint errorpos; - - glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &errorpos); - printf("errorpos: %d\n", errorpos); - printf("%s\n", (char *)glGetString(GL_PROGRAM_ERROR_STRING_ARB)); - } - - - glEnableClientState( GL_VERTEX_ARRAY ); - glEnableClientState( GL_COLOR_ARRAY ); - - glVertexPointer( 3, GL_FLOAT, sizeof(pos[0]), pos ); - glColorPointer( 4, GL_UNSIGNED_BYTE, sizeof(color[0]), color ); - -} - - - -static void Display( void ) -{ - glClearColor(0.3, 0.3, 0.3, 1); - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - glEnable(GL_VERTEX_PROGRAM_ARB); - - /* glDrawArrays( GL_TRIANGLES, 0, 3 ); */ - glDrawArrays( GL_TRIANGLES, 1, 3 ); - - glFlush(); -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - /*glTranslatef( 0.0, 0.0, -15.0 );*/ -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 250, 250 ); - glutInitDisplayMode( GLUT_RGB | GLUT_SINGLE | GLUT_DEPTH ); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/drawarrays.c b/progs/trivial/drawarrays.c deleted file mode 100644 index f5c0a50f9a..0000000000 --- a/progs/trivial/drawarrays.c +++ /dev/null @@ -1,128 +0,0 @@ -/* Basic VBO */ - -#include <assert.h> -#include <string.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - - -struct { - GLfloat pos[3]; - GLubyte color[4]; -} verts[] = -{ - { { 0.9, -0.9, 0.0 }, - { 0x00, 0x00, 0xff, 0x00 } - }, - - { { 0.9, 0.9, 0.0 }, - { 0x00, 0xff, 0x00, 0x00 } - }, - - { { -0.9, 0.9, 0.0 }, - { 0xff, 0x00, 0x00, 0x00 } - }, - - { { -0.9, -0.9, 0.0 }, - { 0xff, 0xff, 0xff, 0x00 } - }, -}; - -static void Init( void ) -{ - GLint errno; - GLuint prognum; - - static const char *prog1 = - "!!ARBvp1.0\n" - "MOV result.color, vertex.color;\n" - "MOV result.position, vertex.position;\n" - "END\n"; - - glGenProgramsARB(1, &prognum); - glBindProgramARB(GL_VERTEX_PROGRAM_ARB, prognum); - glProgramStringARB(GL_VERTEX_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, - strlen(prog1), (const GLubyte *) prog1); - - assert(glIsProgramARB(prognum)); - errno = glGetError(); - printf("glGetError = %d\n", errno); - if (errno != GL_NO_ERROR) - { - GLint errorpos; - - glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &errorpos); - printf("errorpos: %d\n", errorpos); - printf("%s\n", (char *)glGetString(GL_PROGRAM_ERROR_STRING_ARB)); - } - - - glEnableClientState( GL_VERTEX_ARRAY ); - glEnableClientState( GL_COLOR_ARRAY ); - - glVertexPointer( 3, GL_FLOAT, sizeof(verts[0]), verts[0].pos ); - glColorPointer( 4, GL_UNSIGNED_BYTE, sizeof(verts[0]), verts[0].color ); - -} - - - -static void Display( void ) -{ - glClearColor(0.3, 0.3, 0.3, 1); - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - glEnable(GL_VERTEX_PROGRAM_ARB); - - /* glDrawArrays( GL_TRIANGLES, 0, 3 ); */ - glDrawArrays( GL_TRIANGLES, 1, 3 ); - - glFlush(); -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - /*glTranslatef( 0.0, 0.0, -15.0 );*/ -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 250, 250 ); - glutInitDisplayMode( GLUT_RGB | GLUT_SINGLE | GLUT_DEPTH ); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/drawelements.c b/progs/trivial/drawelements.c deleted file mode 100644 index 4c115030af..0000000000 --- a/progs/trivial/drawelements.c +++ /dev/null @@ -1,121 +0,0 @@ -/* Test rebasing */ - -#include <assert.h> -#include <string.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - -GLfloat verts[][4] = { - { 0.9, -0.9, 0.0, 1.0 }, - { 0.9, 0.9, 0.0, 1.0 }, - { -0.9, 0.9, 0.0, 1.0 }, - { -0.9, -0.9, 0.0, 1.0 }, -}; - -GLubyte color[][4] = { - { 0x00, 0x00, 0xff, 0x00 }, - { 0x00, 0xff, 0x00, 0x00 }, - { 0xff, 0x00, 0x00, 0x00 }, - { 0xff, 0xff, 0xff, 0x00 }, -}; - -GLuint indices[] = { 1, 2, 3 }; - -static void Init( void ) -{ - GLint errno; - GLuint prognum; - - static const char *prog1 = - "!!ARBvp1.0\n" - "MOV result.color, vertex.color;\n" - "MOV result.position, vertex.position;\n" - "END\n"; - - glGenProgramsARB(1, &prognum); - glBindProgramARB(GL_VERTEX_PROGRAM_ARB, prognum); - glProgramStringARB(GL_VERTEX_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, - strlen(prog1), (const GLubyte *) prog1); - - assert(glIsProgramARB(prognum)); - errno = glGetError(); - printf("glGetError = %d\n", errno); - if (errno != GL_NO_ERROR) - { - GLint errorpos; - - glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &errorpos); - printf("errorpos: %d\n", errorpos); - printf("%s\n", (char *)glGetString(GL_PROGRAM_ERROR_STRING_ARB)); - } - - - glEnableClientState( GL_VERTEX_ARRAY ); - glEnableClientState( GL_COLOR_ARRAY ); - glVertexPointer( 3, GL_FLOAT, sizeof(verts[0]), verts ); - glColorPointer( 4, GL_UNSIGNED_BYTE, 0, color ); - -} - - - -static void Display( void ) -{ - glClearColor(0.3, 0.3, 0.3, 1); - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - glEnable(GL_VERTEX_PROGRAM_NV); - - /* Should have min_index == 1, maybe force a rebase: - */ - glDrawElements( GL_TRIANGLES, 3, GL_UNSIGNED_INT, indices ); - - glFlush(); -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - /*glTranslatef( 0.0, 0.0, -15.0 );*/ -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 250, 250 ); - glutInitDisplayMode( GLUT_RGB | GLUT_SINGLE | GLUT_DEPTH ); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/drawrange.c b/progs/trivial/drawrange.c deleted file mode 100644 index e9ea99b537..0000000000 --- a/progs/trivial/drawrange.c +++ /dev/null @@ -1,119 +0,0 @@ -/* Test rebasing */ - -#include <assert.h> -#include <string.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - -GLfloat verts[][4] = { - { 0.9, -0.9, 0.0, 1.0 }, - { 0.9, 0.9, 0.0, 1.0 }, - { -0.9, 0.9, 0.0, 1.0 }, - { -0.9, -0.9, 0.0, 1.0 }, -}; - -GLubyte color[][4] = { - { 0x00, 0x00, 0xff, 0x00 }, - { 0x00, 0xff, 0x00, 0x00 }, - { 0xff, 0x00, 0x00, 0x00 }, - { 0xff, 0xff, 0xff, 0x00 }, -}; - -GLuint indices[] = { 1, 2, 3 }; - -static void Init( void ) -{ - GLint errno; - GLuint prognum; - - static const char *prog1 = - "!!ARBvp1.0\n" - "MOV result.color, vertex.color;\n" - "MOV result.position, vertex.position;\n" - "END\n"; - - glGenProgramsARB(1, &prognum); - glBindProgramARB(GL_VERTEX_PROGRAM_ARB, prognum); - glProgramStringARB(GL_VERTEX_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, - strlen(prog1), (const GLubyte *) prog1); - - assert(glIsProgramARB(prognum)); - errno = glGetError(); - printf("glGetError = %d\n", errno); - if (errno != GL_NO_ERROR) - { - GLint errorpos; - - glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &errorpos); - printf("errorpos: %d\n", errorpos); - printf("%s\n", (char *)glGetString(GL_PROGRAM_ERROR_STRING_ARB)); - } - - - glEnableClientState( GL_VERTEX_ARRAY ); - glEnableClientState( GL_COLOR_ARRAY ); - glVertexPointer( 3, GL_FLOAT, sizeof(verts[0]), verts ); - glColorPointer( 4, GL_UNSIGNED_BYTE, 0, color ); - -} - - - -static void Display( void ) -{ - glClearColor(0.3, 0.3, 0.3, 1); - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - glEnable(GL_VERTEX_PROGRAM_NV); - - glDrawRangeElements( GL_TRIANGLES, 1, 3, 3, GL_UNSIGNED_INT, indices ); - - glFlush(); -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - /*glTranslatef( 0.0, 0.0, -15.0 );*/ -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 250, 250 ); - glutInitDisplayMode( GLUT_RGB | GLUT_SINGLE | GLUT_DEPTH ); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/flat-clip.c b/progs/trivial/flat-clip.c deleted file mode 100644 index dbe17a342e..0000000000 --- a/progs/trivial/flat-clip.c +++ /dev/null @@ -1,151 +0,0 @@ -/** - * Test flat shading and clipping. - * - * Brian Paul - * 30 August 2007 - */ - - -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glut.h> - -static int Win; -static GLfloat Scale = 2.0, Zrot = 50; -static GLenum Mode = GL_LINE_LOOP; -static GLboolean Smooth = 0; -static GLenum PolygonMode = GL_FILL; - - -static void -Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - if (Smooth) - glShadeModel(GL_SMOOTH); - else - glShadeModel(GL_FLAT); - - glPushMatrix(); - glScalef(Scale, Scale, 1); - glRotatef(Zrot, 0, 0, 1); - - glPolygonMode(GL_FRONT_AND_BACK, PolygonMode); - - glBegin(Mode); - glColor3f(1, 0, 0); - glVertex2f(-1, -1); - glColor3f(0, 1, 0); - glVertex2f( 2, -1); - glColor3f(0, 0, 1); - glVertex2f( 0, 1); - glEnd(); - - glPushMatrix(); - glScalef(0.9, 0.9, 1); - glBegin(Mode); - glColor3f(1, 0, 0); - glVertex2f( 0, 1); - - glColor3f(0, 0, 1); - glVertex2f( 2, -1); - - glColor3f(0, 1, 0); - glVertex2f(-1, -1); - - glEnd(); - glPopMatrix(); - - glPopMatrix(); - - glutSwapBuffers(); -} - - -static void -Reshape(int width, int height) -{ - glViewport(0, 0, width, height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-1.0, 1.0, -1.0, 1.0, 5.0, 25.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0, 0.0, -15.0); -} - - -static void -Key(unsigned char key, int x, int y) -{ - (void) x; - (void) y; - switch (key) { - case 'p': - if (Mode == GL_TRIANGLES) - Mode = GL_LINE_LOOP; - else - Mode = GL_TRIANGLES; - break; - case 'f': - if (PolygonMode == GL_POINT) - PolygonMode = GL_LINE; - else if (PolygonMode == GL_LINE) - PolygonMode = GL_FILL; - else - PolygonMode = GL_POINT; - printf("PolygonMode = 0x%x\n", PolygonMode); - break; - case 'r': - Zrot -= 5.0; - break; - case 'R': - Zrot += 5.0; - break; - case 'z': - Scale *= 1.1; - break; - case 'Z': - Scale /= 1.1; - break; - case 's': - Smooth = !Smooth; - break; - case 27: - glutDestroyWindow(Win); - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void -Init(void) -{ - printf("Usage:\n"); - printf(" z/Z: change triangle size\n"); - printf(" r/R: rotate\n"); - printf(" p: toggle line/fill mode\n"); - printf(" s: toggle smooth/flat shading\n"); - printf(" f: switch polygon fill mode\n"); -} - - -int -main(int argc, char *argv[]) -{ - glutInit(&argc, argv); - glutInitWindowPosition(0, 0); - glutInitWindowSize(400, 400); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); - Win = glutCreateWindow(argv[0]); - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/fs-tri.c b/progs/trivial/fs-tri.c deleted file mode 100644 index 6e86df1dcf..0000000000 --- a/progs/trivial/fs-tri.c +++ /dev/null @@ -1,209 +0,0 @@ -/* Test fragment shader */ - -#include <assert.h> -#include <string.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - - -static GLuint fragShader; -static GLuint vertShader; -static GLuint program; -static GLint win = 0; -static GLfloat xpos = 0, ypos = 0; - - -static void -Redisplay(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glPushMatrix(); - glTranslatef(xpos, ypos, 0); - - glBegin(GL_TRIANGLES); - glColor3f(1, 0, 0); - glVertex2f(-0.9, -0.9); - glColor3f(0, 1, 0); - glVertex2f( 0.9, -0.9); - glColor3f(0, 0, 1); - glVertex2f( 0, 0.9); - glEnd(); - - glPopMatrix(); - - glutSwapBuffers(); -} - - -static void -Reshape(int width, int height) -{ - glViewport(0, 0, width, height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1, 1, -1, 1, -1, 1); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - - -static void -CleanUp(void) -{ - glDeleteShader(fragShader); - glDeleteShader(vertShader); - glDeleteProgram(program); - glutDestroyWindow(win); -} - - -static void -Key(unsigned char key, int x, int y) -{ - (void) x; - (void) y; - - switch(key) { - case 27: - CleanUp(); - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void -SpecialKey(int key, int x, int y) -{ - const GLfloat step = 0.1; - - (void) x; - (void) y; - - switch(key) { - case GLUT_KEY_UP: - ypos += step; - break; - case GLUT_KEY_DOWN: - ypos -= step; - break; - case GLUT_KEY_LEFT: - xpos -= step; - break; - case GLUT_KEY_RIGHT: - xpos += step; - break; - } - glutPostRedisplay(); -} - - -static void -LoadAndCompileShader(GLuint shader, const char *text) -{ - GLint stat; - - glShaderSource(shader, 1, (const GLchar **) &text, NULL); - - glCompileShader(shader); - - glGetShaderiv(shader, GL_COMPILE_STATUS, &stat); - if (!stat) { - GLchar log[1000]; - GLsizei len; - glGetShaderInfoLog(shader, 1000, &len, log); - fprintf(stderr, "fslight: problem compiling shader:\n%s\n", log); - exit(1); - } -} - - -static void -CheckLink(GLuint prog) -{ - GLint stat; - glGetProgramiv(prog, GL_LINK_STATUS, &stat); - if (!stat) { - GLchar log[1000]; - GLsizei len; - glGetProgramInfoLog(prog, 1000, &len, log); - fprintf(stderr, "Linker error:\n%s\n", log); - } -} - - -static void -Init(void) -{ - /* fragment color is a function of fragment position: */ - static const char *fragShaderText = - "void main() {\n" - " gl_FragColor = gl_FragCoord * vec4(0.005); \n" - " //gl_FragColor = gl_Color; \n" - " //gl_FragColor = vec4(1, 0, 0.5, 0); \n" - "}\n"; -#if 0 - static const char *vertShaderText = - "varying vec3 normal;\n" - "void main() {\n" - " gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;\n" - " normal = gl_NormalMatrix * gl_Normal;\n" - "}\n"; -#endif - const char *version; - - version = (const char *) glGetString(GL_VERSION); - if (version[0] != '2' || version[1] != '.') { - printf("This program requires OpenGL 2.x, found %s\n", version); - exit(1); - } - - fragShader = glCreateShader(GL_FRAGMENT_SHADER); - LoadAndCompileShader(fragShader, fragShaderText); - -#if 0 - vertShader = glCreateShader(GL_VERTEX_SHADER); - LoadAndCompileShader(vertShader, vertShaderText); -#endif - - program = glCreateProgram(); - glAttachShader(program, fragShader); -#if 0 - glAttachShader(program, vertShader); -#endif - glLinkProgram(program); - CheckLink(program); - glUseProgram(program); - - assert(glGetError() == 0); - - glClearColor(0.3f, 0.3f, 0.3f, 0.0f); - - printf("GL_RENDERER = %s\n",(const char *) glGetString(GL_RENDERER)); -} - - -int -main(int argc, char *argv[]) -{ - glutInit(&argc, argv); - glutInitWindowPosition( 0, 0); - glutInitWindowSize(200, 200); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); - win = glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutSpecialFunc(SpecialKey); - glutDisplayFunc(Redisplay); - Init(); - glutMainLoop(); - return 0; -} - - diff --git a/progs/trivial/line-clip.c b/progs/trivial/line-clip.c deleted file mode 100644 index e4e388ed5c..0000000000 --- a/progs/trivial/line-clip.c +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_LINE_STRIP); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(0,.9,0); - glVertex3f(-1.9, 0.0, -30.0); - /* Repeat - no loop support yet: - */ - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/line-cull.c b/progs/trivial/line-cull.c deleted file mode 100644 index c531ff132f..0000000000 --- a/progs/trivial/line-cull.c +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_LINE_STRIP); - glColor3f(0,0,1); - glVertex3f( -1.5, 0.5, -30.0); - glColor3f(1,0,0); - glVertex3f( 0, 2.0, -30.0); - glColor3f(0,1,0); - glVertex3f(-1.5, 2.0, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/line-flat.c b/progs/trivial/line-flat.c deleted file mode 100644 index e2ddb87b9e..0000000000 --- a/progs/trivial/line-flat.c +++ /dev/null @@ -1,147 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glShadeModel(GL_FLAT); - - glBegin(GL_LINES); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, -30.0); - - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(0,.9,0); - glVertex3f(-0.9, 0.0, -30.0); - - - glColor3f(0,.9,0); - glVertex3f(-0.9, 0.0, -30.0); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/line-smooth.c b/progs/trivial/line-smooth.c deleted file mode 100644 index 9c4b9a0115..0000000000 --- a/progs/trivial/line-smooth.c +++ /dev/null @@ -1,174 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <math.h> -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; -GLboolean smooth = GL_TRUE; -GLfloat width = 1.0; - - -static void Init(void) -{ - float range[2], aarange[2]; - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - glGetFloatv(GL_LINE_WIDTH_RANGE, aarange); - glGetFloatv(GL_ALIASED_LINE_WIDTH_RANGE, range); - printf("Non-AA line width range: %f .. %f\n", range[0], range[1]); - printf("AA line width range: %f .. %f\n", aarange[0], aarange[1]); - fflush(stdout); -} - - -static void Reshape(int width, int height) -{ - glViewport(0, 0, (GLint)width, (GLint)height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0, 0, -30); -} - -static void Key(unsigned char key, int x, int y) -{ - switch (key) { - case 'w': - width -= 0.5; - if (width < 0.5) - width = 0.5; - break; - case 'W': - width += 0.5; - break; - case 's': - smooth = !smooth; - break; - case 27: - exit(1); - default: - return; - } - printf("LineWidth: %g\n", width); - glutPostRedisplay(); -} - - -static void Draw(void) -{ - float a; - - glClear(GL_COLOR_BUFFER_BIT); - - glLineWidth(width); - - if (smooth) { - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glEnable(GL_BLEND); - glEnable(GL_LINE_SMOOTH); - } - - glColor3f(1, 1, 1); - - glBegin(GL_LINES); - for (a = 0; a < 3.14159; a += 0.2) { - float x = .9 * cos(a); - float y = .9 * sin(a); - - glVertex2f(-x, -y); - glVertex2f( x, y); - } - glEnd(); - - glDisable(GL_LINE_SMOOTH); - glDisable(GL_BLEND); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(argv[0]) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/line-stipple-wide.c b/progs/trivial/line-stipple-wide.c deleted file mode 100644 index 767583bbea..0000000000 --- a/progs/trivial/line-stipple-wide.c +++ /dev/null @@ -1,149 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glEnable(GL_LINE_STIPPLE); - glLineStipple( 5, 0xfffe ); - glLineWidth( 4 ); - - glBegin(GL_LINES); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, -30.0); - - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(0,.9,0); - glVertex3f(-0.9, 0.0, -30.0); - - glColor3f(0,.9,0); - glVertex3f(-0.9, 0.0, -30.0); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/line-userclip-clip.c b/progs/trivial/line-userclip-clip.c deleted file mode 100644 index 3265b2c3bf..0000000000 --- a/progs/trivial/line-userclip-clip.c +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - static GLdouble plane[4] = { -.5, 0, 1, 0 }; - - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); - glClipPlane(GL_CLIP_PLANE0, plane); - glEnable(GL_CLIP_PLANE0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); -/* glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); */ - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_LINE_STRIP); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, 0.0); - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, 0.0); - glColor3f(0,.9,0); - glVertex3f(-1.9, 0.0, 0.0); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, 0.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/line-userclip-nop-clip.c b/progs/trivial/line-userclip-nop-clip.c deleted file mode 100644 index 0198e27807..0000000000 --- a/progs/trivial/line-userclip-nop-clip.c +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - static GLdouble plane[4] = { 0, 0, 1, 0 }; - - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); - glClipPlane(GL_CLIP_PLANE0, plane); - glEnable(GL_CLIP_PLANE0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); -/* glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); */ - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_LINE_STRIP); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, 0.0); - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, 0.0); - glColor3f(0,.9,0); - glVertex3f(-1.9, 0.0, 0.0); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, 0.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/line-userclip-nop.c b/progs/trivial/line-userclip-nop.c deleted file mode 100644 index 6c863a3c82..0000000000 --- a/progs/trivial/line-userclip-nop.c +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - static GLdouble plane[4] = { 0, 0, 1, 0 }; - - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); - glClipPlane(GL_CLIP_PLANE0, plane); - glEnable(GL_CLIP_PLANE0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); -/* glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); */ - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_LINE_STRIP); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, 0.0); - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, 0.0); - glColor3f(0,.9,0); - glVertex3f(-0.9, 0.0, 0.0); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, 0.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/line-userclip.c b/progs/trivial/line-userclip.c deleted file mode 100644 index 6cfcb6fc73..0000000000 --- a/progs/trivial/line-userclip.c +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - static GLdouble plane[4] = { -.5, 0, 1, 0 }; - - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); - glClipPlane(GL_CLIP_PLANE0, plane); - glEnable(GL_CLIP_PLANE0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); -/* glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); */ - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_LINE_STRIP); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, 0.0); - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, 0.0); - glColor3f(0,.9,0); - glVertex3f(-0.9, 0.0, 0.0); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, 0.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/line-wide.c b/progs/trivial/line-wide.c deleted file mode 100644 index 1945712c5d..0000000000 --- a/progs/trivial/line-wide.c +++ /dev/null @@ -1,148 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glLineWidth(4.0); - - glBegin(GL_LINES); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, -30.0); - - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(0,.9,0); - glVertex3f(-0.9, 0.0, -30.0); - - - glColor3f(0,.9,0); - glVertex3f(-0.9, 0.0, -30.0); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/line.c b/progs/trivial/line.c deleted file mode 100644 index 58ab96836f..0000000000 --- a/progs/trivial/line.c +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_LINES); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, -30.0); - - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(0,.9,0); - glVertex3f(-0.9, 0.0, -30.0); - - - glColor3f(0,.9,0); - glVertex3f(-0.9, 0.0, -30.0); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/lineloop-clip.c b/progs/trivial/lineloop-clip.c deleted file mode 100644 index 5e6b6217a1..0000000000 --- a/progs/trivial/lineloop-clip.c +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_LINE_LOOP); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(0,.9,0); - glVertex3f(-1.9, 0.0, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/lineloop-elts.c b/progs/trivial/lineloop-elts.c deleted file mode 100644 index ab944157c0..0000000000 --- a/progs/trivial/lineloop-elts.c +++ /dev/null @@ -1,121 +0,0 @@ -/* Test rebasing */ - -#include <assert.h> -#include <string.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - -GLfloat verts[][4] = { - { 0.9, -0.9, 0.0, 1.0 }, - { 0.9, 0.9, 0.0, 1.0 }, - { -0.9, 0.9, 0.0, 1.0 }, - { -0.9, -0.9, 0.0, 1.0 }, -}; - -GLubyte color[][4] = { - { 0x00, 0x00, 0xff, 0x00 }, - { 0x00, 0xff, 0x00, 0x00 }, - { 0xff, 0x00, 0x00, 0x00 }, - { 0xff, 0xff, 0xff, 0x00 }, -}; - -GLuint indices[] = { 1, 2, 3 }; - -static void Init( void ) -{ - GLint errno; - GLuint prognum; - - static const char *prog1 = - "!!ARBvp1.0\n" - "MOV result.color, vertex.color;\n" - "MOV result.position, vertex.position;\n" - "END\n"; - - glGenProgramsARB(1, &prognum); - glBindProgramARB(GL_VERTEX_PROGRAM_ARB, prognum); - glProgramStringARB(GL_VERTEX_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, - strlen(prog1), (const GLubyte *) prog1); - - assert(glIsProgramARB(prognum)); - errno = glGetError(); - printf("glGetError = %d\n", errno); - if (errno != GL_NO_ERROR) - { - GLint errorpos; - - glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &errorpos); - printf("errorpos: %d\n", errorpos); - printf("%s\n", (char *)glGetString(GL_PROGRAM_ERROR_STRING_ARB)); - } - - - glEnableClientState( GL_VERTEX_ARRAY ); - glEnableClientState( GL_COLOR_ARRAY ); - glVertexPointer( 3, GL_FLOAT, sizeof(verts[0]), verts ); - glColorPointer( 4, GL_UNSIGNED_BYTE, 0, color ); - -} - - - -static void Display( void ) -{ - glClearColor(0.3, 0.3, 0.3, 1); - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - glEnable(GL_VERTEX_PROGRAM_NV); - - /* Should have min_index == 1, maybe force a rebase: - */ - glDrawElements( GL_LINE_LOOP, 3, GL_UNSIGNED_INT, indices ); - - glFlush(); -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - /*glTranslatef( 0.0, 0.0, -15.0 );*/ -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 250, 250 ); - glutInitDisplayMode( GLUT_RGB | GLUT_SINGLE | GLUT_DEPTH ); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/lineloop.c b/progs/trivial/lineloop.c deleted file mode 100644 index 82eccd24f8..0000000000 --- a/progs/trivial/lineloop.c +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_LINE_LOOP); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(0,.9,0); - glVertex3f(-0.9, 0.0, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/linestrip-clip.c b/progs/trivial/linestrip-clip.c deleted file mode 100644 index 5e90ea2eb0..0000000000 --- a/progs/trivial/linestrip-clip.c +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_LINE_STRIP); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, -30.0); - - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, -30.0); - - glColor3f(0,.9,0); - glVertex3f(-1.9, 0.0, -30.0); - - glColor3f(0,0,.7); - glVertex3f( 0.8, -0.8, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/linestrip-flat-stipple.c b/progs/trivial/linestrip-flat-stipple.c deleted file mode 100644 index bae5c3a1c3..0000000000 --- a/progs/trivial/linestrip-flat-stipple.c +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glShadeModel(GL_FLAT); - glEnable(GL_LINE_STIPPLE); - glLineStipple( 5, 0xfffe ); - - glBegin(GL_LINE_STRIP); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(0,.9,0); - glVertex3f(-0.9, 0.0, -30.0); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/linestrip-stipple-wide.c b/progs/trivial/linestrip-stipple-wide.c deleted file mode 100644 index 0296941a0d..0000000000 --- a/progs/trivial/linestrip-stipple-wide.c +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glEnable(GL_LINE_STIPPLE); - glLineStipple( 5, 0xfffe ); - glLineWidth( 4 ); - - glBegin(GL_LINE_STRIP); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(0,.9,0); - glVertex3f(-0.9, 0.0, -30.0); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/linestrip-stipple.c b/progs/trivial/linestrip-stipple.c deleted file mode 100644 index a847d47dee..0000000000 --- a/progs/trivial/linestrip-stipple.c +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glEnable(GL_LINE_STIPPLE); - glLineStipple( 5, 0xfffe ); - - glBegin(GL_LINE_STRIP); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(0,.9,0); - glVertex3f(-0.9, 0.0, -30.0); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/linestrip.c b/progs/trivial/linestrip.c deleted file mode 100644 index b6d6882146..0000000000 --- a/progs/trivial/linestrip.c +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_LINE_STRIP); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(0,.9,0); - glVertex3f(-0.9, 0.0, -30.0); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/long-fixed-func.c b/progs/trivial/long-fixed-func.c deleted file mode 100644 index 4b6c412f9e..0000000000 --- a/progs/trivial/long-fixed-func.c +++ /dev/null @@ -1,153 +0,0 @@ -/** - * Enable as much fixed-function vertex processing state as possible - * to test fixed-function -> program code generation. - */ - - - -#include <GL/glew.h> -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -static void -Reshape(int width, int height) -{ - glViewport(0, 0, (GLint)width, (GLint)height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - - -static void -Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_TRIANGLES); - glColor3f(.8,0,0); - glVertex3f(-0.9, -0.9, -30.0); - glColor3f(0,.9,0); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(0,0,.7); - glVertex3f( 0.0, 0.9, -30.0); - glEnd(); - - glFlush(); - - glutSwapBuffers(); -} - - -static void -Init(void) -{ - GLubyte tex[16][16][4]; - GLfloat pos[4] = {5, 10, 3, 1.0}; - int i, j; - - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.3, 0.1, 0.3, 0.0); - - for (i = 0; i < 16; i++) { - for (j = 0; j < 16; j++) { - if ((i+j) & 1) { - tex[i][j][0] = 100; - tex[i][j][1] = 100; - tex[i][j][2] = 100; - tex[i][j][3] = 255; - } - else { - tex[i][j][0] = 200; - tex[i][j][1] = 200; - tex[i][j][2] = 200; - tex[i][j][3] = 255; - } - } - } - - - glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, 1); - glFogi(GL_FOG_MODE, GL_LINEAR); - glEnable(GL_FOG); - - glPointParameterfv(GL_DISTANCE_ATTENUATION_EXT, pos); - - for (i = 0; i < 8; i++) { - GLuint texObj; - - glEnable(GL_LIGHT0 + i); - glLightf(GL_LIGHT0 + i, GL_SPOT_EXPONENT, 3.5); - glLightf(GL_LIGHT0 + i, GL_SPOT_CUTOFF, 30.); - glLightf(GL_LIGHT0 + i, GL_CONSTANT_ATTENUATION, 3.); - glLightf(GL_LIGHT0 + i, GL_LINEAR_ATTENUATION, 3.); - glLightf(GL_LIGHT0 + i, GL_QUADRATIC_ATTENUATION, 3.); - glLightfv(GL_LIGHT0 + i, GL_POSITION, pos); - - glActiveTexture(GL_TEXTURE0 + i); - glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP); - glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP); - glTexGeni(GL_R, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR); - glTexGeni(GL_Q, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR); - glEnable(GL_TEXTURE_GEN_S); - glEnable(GL_TEXTURE_GEN_T); - glEnable(GL_TEXTURE_GEN_R); - glEnable(GL_TEXTURE_GEN_Q); - glEnable(GL_TEXTURE_2D); - - glMatrixMode(GL_TEXTURE); - glScalef(2.0, 1.0, 3.0); - - glGenTextures(1, &texObj); - glBindTexture(GL_TEXTURE_2D, texObj); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 16, 16, 0, - GL_RGBA, GL_UNSIGNED_BYTE, tex); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - } - - glEnable(GL_LIGHTING); - glActiveTexture(GL_TEXTURE0); - glMatrixMode(GL_MODELVIEW); -} - - -static void -Key(unsigned char key, int x, int y) -{ - if (key == 27) { - exit(0); - } - glutPostRedisplay(); -} - - -int -main(int argc, char **argv) -{ - GLenum type = GLUT_RGB | GLUT_DOUBLE; - - glutInit(&argc, argv); - glutInitWindowPosition(0, 0); - glutInitWindowSize( 250, 250); - glutInitDisplayMode(type); - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - glewInit(); - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/pgon-mode.c b/progs/trivial/pgon-mode.c deleted file mode 100644 index db58638619..0000000000 --- a/progs/trivial/pgon-mode.c +++ /dev/null @@ -1,136 +0,0 @@ -/** - * Test glPolygonMode. - * A tri-strip w/ two tris is drawn so that the first tri is front-facing - * but the second tri is back-facing. - * Set glPolygonMode differently for the front/back faces - * - */ - - -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glut.h> - -static int Win; -static GLfloat Zrot = 0; -static GLboolean FrontFillBackUnfilled = GL_TRUE; -static GLboolean Lines = GL_TRUE; - - -static void -Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - if (FrontFillBackUnfilled) { - if (Lines) { - printf("FrontMode = FILL, BackMode = LINE\n"); - glPolygonMode(GL_BACK, GL_LINE); - } - else { - printf("FrontMode = FILL, BackMode = POINT\n"); - glPolygonMode(GL_BACK, GL_POINT); - } - glPolygonMode(GL_FRONT, GL_FILL); - } - else { - if (Lines) { - printf("FrontMode = LINE, BackMode = FILL\n"); - glPolygonMode(GL_FRONT, GL_LINE); - } - else { - printf("FrontMode = POINT, BackMode = FILL\n"); - glPolygonMode(GL_FRONT, GL_POINT); - } - glPolygonMode(GL_BACK, GL_FILL); - } - - glPushMatrix(); - glRotatef(Zrot, 0, 0, 1); - - glBegin(GL_TRIANGLE_STRIP); - glVertex2f(-1, 0); - glVertex2f( 1, 0); - glVertex2f(0, 1); - glVertex2f(0, -1); - glEnd(); - - glPopMatrix(); - - glutSwapBuffers(); -} - - -static void -Reshape(int width, int height) -{ - glViewport(0, 0, width, height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-1.0, 1.0, -1.0, 1.0, 5.0, 25.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0, 0.0, -15.0); -} - - -static void -Key(unsigned char key, int x, int y) -{ - const GLfloat step = 3.0; - (void) x; - (void) y; - switch (key) { - case 'p': - FrontFillBackUnfilled = !FrontFillBackUnfilled; - break; - case 'l': - Lines = !Lines; - break; - case 'z': - Zrot -= step; - break; - case 'Z': - Zrot += step; - break; - case 27: - glutDestroyWindow(Win); - exit(0); - break; - } - glutPostRedisplay(); -} - - -static void -Init(void) -{ - printf("GL_RENDERER = %s\n", (char*) glGetString(GL_RENDERER)); - - glLineWidth(3.0); - glPointSize(3.0); - - glColor4f(1, 1, 1, 0.8); - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - - printf("Press 'p' to toggle polygon mode\n"); -} - - -int -main(int argc, char *argv[]) -{ - glutInit(&argc, argv); - glutInitWindowPosition(0, 0); - glutInitWindowSize(400, 400); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); - Win = glutCreateWindow(argv[0]); - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/point-clip.c b/progs/trivial/point-clip.c deleted file mode 100644 index 23cfd77863..0000000000 --- a/progs/trivial/point-clip.c +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_POINTS); - glColor3f(1,0,0); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(1,1,0); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(1,0,1); - glVertex3f(-1.9, 0.9, -30.0); - glColor3f(0,1,1); - glVertex3f(-0.9, -0.9, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/point-param.c b/progs/trivial/point-param.c deleted file mode 100644 index 46bd773265..0000000000 --- a/progs/trivial/point-param.c +++ /dev/null @@ -1,159 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <GL/glew.h> -#include <math.h> -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, 0, 100.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - switch (key) { - case 27: - exit(1); - default: - break; - } - glutPostRedisplay(); -} - - -static float -expected(float z, float size, const float atten[3]) -{ - float dist = fabs(z); - const GLfloat q = atten[0] + dist * (atten[1] + dist * atten[2]); - const GLfloat a = sqrt(1.0 / q); - return size * a; -} - - -static void Draw(void) -{ - static GLfloat atten[3] = { 0.0, 0.1, .01 }; - float size = 40.0; - int i; - - glClear(GL_COLOR_BUFFER_BIT); - - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glPointSize(size); - glPointParameterfvARB(GL_POINT_DISTANCE_ATTENUATION_ARB, atten); - - glColor3f(1,0,0); - - printf("Expected point sizes:\n"); - glBegin(GL_POINTS); - for (i = 0; i < 5; i++) { - float x = -0.8 + i * 0.4; - float z = -i * 20 - 10; - glVertex3f( x, 0.0, z); - printf(" %f\n", expected(z, size, atten)); - } - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(argv[0]) == GL_FALSE) { - exit(1); - } - - glewInit(); - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/point-sprite.c b/progs/trivial/point-sprite.c deleted file mode 100644 index 16e6771514..0000000000 --- a/progs/trivial/point-sprite.c +++ /dev/null @@ -1,175 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - -#define SIZE 16 - { - GLubyte tex2d[SIZE][SIZE][3]; - GLint s, t; - - for (s = 0; s < SIZE; s++) { - for (t = 0; t < SIZE; t++) { -#if 1 - tex2d[t][s][0] = (s < SIZE/2) ? 0 : 255; - tex2d[t][s][1] = (t < SIZE/2) ? 0 : 255; - tex2d[t][s][2] = 0; -#else - tex2d[t][s][0] = s*255/(SIZE-1); - tex2d[t][s][1] = t*255/(SIZE-1); - tex2d[t][s][2] = 0; -#endif - } - } - - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_R, GL_REPEAT); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glTexImage2D(GL_TEXTURE_2D, 0, 3, SIZE, SIZE, 0, - GL_RGB, GL_UNSIGNED_BYTE, tex2d); - glPixelStorei(GL_UNPACK_ALIGNMENT, 4); - glEnable(GL_TEXTURE_2D); - } - - glEnable(GL_POINT_SPRITE); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glPointSize(16.0); - - glBegin(GL_POINTS); - glColor3f(1,0,0); - glVertex3f( 0.6, -0.6, -30.0); - glColor3f(1,1,0); - glVertex3f( 0.6, 0.6, -30.0); - glColor3f(1,0,1); - glVertex3f(-0.6, 0.6, -30.0); - glColor3f(0,1,1); - glVertex3f(-0.6, -0.6, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/point-wide-smooth.c b/progs/trivial/point-wide-smooth.c deleted file mode 100644 index 752cb8aee3..0000000000 --- a/progs/trivial/point-wide-smooth.c +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glPointSize(8.0); - - glEnable(GL_POINT_SMOOTH); - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - - glBegin(GL_POINTS); - glColor3f(1,0,0); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(1,1,0); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(1,0,1); - glVertex3f(-0.9, 0.9, -30.0); - glColor3f(0,1,1); - glVertex3f(-0.9, -0.9, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/point-wide.c b/progs/trivial/point-wide.c deleted file mode 100644 index 3b00ee9e50..0000000000 --- a/progs/trivial/point-wide.c +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glDisable(GL_DEPTH_TEST); - - glPointSize(8.0); - - glBegin(GL_POINTS); - glColor3f(1,0,0); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(1,1,0); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(1,0,1); - glVertex3f(-0.9, 0.9, -30.0); - glColor3f(0,1,1); - glVertex3f(-0.9, -0.9, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/point.c b/progs/trivial/point.c deleted file mode 100644 index 8f5299cf6b..0000000000 --- a/progs/trivial/point.c +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_POINTS); - glColor3f(1,0,0); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(1,1,0); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(1,0,1); - glVertex3f(-0.9, 0.9, -30.0); - glColor3f(0,1,1); - glVertex3f(-0.9, -0.9, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/poly-flat-clip.c b/progs/trivial/poly-flat-clip.c deleted file mode 100644 index 2a968bed40..0000000000 --- a/progs/trivial/poly-flat-clip.c +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glShadeModel(GL_FLAT); - - - glBegin(GL_POLYGON); - glColor3f(1,0,0); - glVertex3f( 0, 0, -30.0); - glColor3f(1,1,0); - glVertex3f( 1.3, 1.1, -30.0); - glColor3f(1,0,1); - glVertex3f(-.9, .9, -30.0); - glColor3f(0,1,1); - glVertex3f(-1.1, -1.3, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/poly-flat-unfilled-clip.c b/progs/trivial/poly-flat-unfilled-clip.c deleted file mode 100644 index 89f4e0656a..0000000000 --- a/progs/trivial/poly-flat-unfilled-clip.c +++ /dev/null @@ -1,145 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glShadeModel(GL_FLAT); - - glPolygonMode(GL_FRONT, GL_LINE); - glPolygonMode(GL_BACK, GL_LINE); - glLineWidth(4.0); - - - glBegin(GL_POLYGON); - glColor3f(1,0,0); - glVertex3f( 0, 0, -30.0); - glColor3f(1,1,0); - glVertex3f( 1.3, 1.1, -30.0); - glColor3f(1,0,1); - glVertex3f(-.9, .9, -30.0); - glColor3f(0,1,1); - glVertex3f(-1.1, -1.3, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/poly-flat.c b/progs/trivial/poly-flat.c deleted file mode 100644 index 33c2e04e0f..0000000000 --- a/progs/trivial/poly-flat.c +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glShadeModel(GL_FLAT); - - - glBegin(GL_POLYGON); - glColor3f(1,0,0); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(1,1,0); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(1,0,1); - glVertex3f(-0.9, 0.9, -30.0); - glColor3f(0,1,1); - glVertex3f(-0.9, -0.9, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/poly-unfilled.c b/progs/trivial/poly-unfilled.c deleted file mode 100644 index c8c0d7a9e3..0000000000 --- a/progs/trivial/poly-unfilled.c +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - - glBegin(GL_POLYGON); - glColor3f(1,0,0); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(1,1,0); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(1,0,1); - glVertex3f(-0.9, 0.9, -30.0); - glColor3f(0,1,1); - glVertex3f(-0.9, -0.9, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/poly.c b/progs/trivial/poly.c deleted file mode 100644 index 964eb42d78..0000000000 --- a/progs/trivial/poly.c +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_POLYGON); - glColor3f(1,0,0); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(1,1,0); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(1,0,1); - glVertex3f(-0.9, 0.9, -30.0); - glColor3f(0,1,1); - glVertex3f(-0.9, -0.9, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/quad-clip-all-vertices.c b/progs/trivial/quad-clip-all-vertices.c deleted file mode 100644 index 7712d8ca5b..0000000000 --- a/progs/trivial/quad-clip-all-vertices.c +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_QUADS); - glColor3f(1,0,0); - glVertex3f( 1.9, -1.9, -30.0); - glColor3f(1,1,0); - glVertex3f( 1.9, 1.9, -30.0); - glColor3f(1,0,1); - glVertex3f(-1.9, 1.9, -30.0); - glColor3f(0,1,1); - glVertex3f(-1.9, -1.9, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/quad-clip-nearplane.c b/progs/trivial/quad-clip-nearplane.c deleted file mode 100644 index 9380e4f9ae..0000000000 --- a/progs/trivial/quad-clip-nearplane.c +++ /dev/null @@ -1,152 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; -float Z = -6; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - fprintf(stderr, "Press z/Z to translate quad\n"); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-1.0, 1.0, -1.0, 1.0, 5, 100.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - switch (key) { - case 'z': - Z += 0.5; - break; - case 'Z': - Z -= 0.5; - break; - case 27: - exit(1); - default: - return; - } - printf("Z = %f\n", Z); - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glPushMatrix(); - glTranslatef(0, -0.5, Z); - - glBegin(GL_QUADS); - glColor3f(1,0,0); - glVertex3f( -0.8, 0, -4.0); - glColor3f(1,1,0); - glVertex3f( 0.8, 0, -4.0); - glColor3f(1,0,1); - glVertex3f( 0.8, 0, 4.0); - glColor3f(0,1,1); - glVertex3f( -0.8, 0, 4.0); - glEnd(); - - glPopMatrix(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); - glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/quad-clip.c b/progs/trivial/quad-clip.c deleted file mode 100644 index 2847c9f960..0000000000 --- a/progs/trivial/quad-clip.c +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_QUADS); - glColor3f(1,0,0); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(1,1,0); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(1,0,1); - glVertex3f(-1.9, 0.9, -30.0); - glColor3f(0,1,1); - glVertex3f(-0.9, -0.9, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/quad-degenerate.c b/progs/trivial/quad-degenerate.c deleted file mode 100644 index 85e129d4be..0000000000 --- a/progs/trivial/quad-degenerate.c +++ /dev/null @@ -1,144 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_QUADS); - glColor3f(1,0,0); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(1,1,0); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(1,0,1); - glVertex3f(-0.9, 0.9, -30.0); - glColor3f(0,1,1); - glVertex3f(-0.9, -0.9, -30.0); - glColor3f(1,0,0); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(1,1,0); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(1,0,1); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/quad-flat.c b/progs/trivial/quad-flat.c deleted file mode 100644 index bed98e31a4..0000000000 --- a/progs/trivial/quad-flat.c +++ /dev/null @@ -1,149 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glShadeModel(GL_FLAT); - - if (1) { - glBegin(GL_LINES); - glColor3f(1,0,0); - glVertex3f( 0.95, -0.9, -30.0); - glColor3f(1,1,0); - glVertex3f( 0.95, 0.9, -30.0); - glEnd(); - } - - glBegin(GL_QUADS); - glColor3f(1,0,0); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(1,1,0); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(1,0,1); - glVertex3f(-0.9, 0.9, -30.0); - glColor3f(0,1,1); - glVertex3f(-0.9, -0.9, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/quad-offset-factor.c b/progs/trivial/quad-offset-factor.c deleted file mode 100644 index 1fc57a54ae..0000000000 --- a/progs/trivial/quad-offset-factor.c +++ /dev/null @@ -1,157 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(1.0, 1.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void quad( float half ) -{ - glBegin(GL_QUADS); - glVertex3f( half/9.0, -half/9.0, -25.0 + half); - glVertex3f( half/9.0, half/9.0, -25.0 + half); - glVertex3f(-half/9.0, half/9.0, -25.0 - half); - glVertex3f(-half/9.0, -half/9.0, -25.0 - half); - glEnd(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glEnable(GL_DEPTH_TEST); - - /* red: offset back */ - glEnable(GL_POLYGON_OFFSET_FILL); - glPolygonOffset(1, 0); - glColor3f(1,0,0); - quad(9); - - /* green: no offset */ - glDisable(GL_POLYGON_OFFSET_FILL); - glColor3f(0,1,0); - quad(6); - - /* black: offset zero, should not be visible because of z test */ - glEnable(GL_POLYGON_OFFSET_FILL); - glPolygonOffset(0, 0); - glColor3f(0,0,0); - quad(6); - - /* blue: offset forward */ - glEnable(GL_POLYGON_OFFSET_FILL); - glPolygonOffset(-1, 0); - glColor3f(0,0,1); - quad(3); - - glDisable(GL_POLYGON_OFFSET_FILL); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA | GLUT_DEPTH; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/quad-offset-unfilled.c b/progs/trivial/quad-offset-unfilled.c deleted file mode 100644 index 62f50fb98c..0000000000 --- a/progs/trivial/quad-offset-unfilled.c +++ /dev/null @@ -1,170 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(1.0, 1.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glEnable(GL_DEPTH_TEST); - - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); - - - - glEnable(GL_POLYGON_OFFSET_FILL); - glPolygonOffset(1, 0); - - glBegin(GL_QUADS); - glColor3f(1,0,0); - glVertex3f( 0.9, -0.9, -10.0); - glVertex3f( 0.9, 0.9, -10.0); - glVertex3f(-0.9, 0.9, -40.0); - glVertex3f(-0.9, -0.9, -40.0); - glEnd(); - - glDisable(GL_POLYGON_OFFSET_FILL); - - glBegin(GL_QUADS); - glColor3f(0,1,0); - glVertex3f( 0.6, -0.6, -15.0); - glVertex3f( 0.6, 0.6, -15.0); - glVertex3f(-0.6, 0.6, -35.0); - glVertex3f(-0.6, -0.6, -35.0); - glEnd(); - - glEnable(GL_POLYGON_OFFSET_LINE); - glPolygonOffset(-1, 0); - - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - - glBegin(GL_QUADS); - glColor3f(0,0,1); - glVertex3f( 0.3, -0.3, -20.0); - glVertex3f( 0.3, 0.3, -20.0); - glVertex3f(-0.3, 0.3, -30.0); - glVertex3f(-0.3, -0.3, -30.0); - glEnd(); - - - glDisable(GL_POLYGON_OFFSET_FILL); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA | GLUT_DEPTH; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/quad-offset-units.c b/progs/trivial/quad-offset-units.c deleted file mode 100644 index 1ac2338692..0000000000 --- a/progs/trivial/quad-offset-units.c +++ /dev/null @@ -1,158 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(1.0, 1.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.2, 1.2, -1.2, 1.2, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void quad( float half ) -{ - glBegin(GL_QUADS); - glVertex3f( half/9.0, -half/9.0, -25.0 + half); - glVertex3f( half/9.0, half/9.0, -25.0 + half); - glVertex3f(-half/9.0, half/9.0, -25.0 - half); - glVertex3f(-half/9.0, -half/9.0, -25.0 - half); - glEnd(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glEnable(GL_DEPTH_TEST); - - /* red: offset back */ - glEnable(GL_POLYGON_OFFSET_FILL); - glPolygonOffset(0, 4); - glColor3f(1,0,0); - quad(9); - - /* black: no offset */ - glDisable(GL_POLYGON_OFFSET_FILL); - glColor3f(0,0,0); - quad(6); - - /* green: offset 0 (this should obscure the black quad) */ - glEnable(GL_POLYGON_OFFSET_FILL); - glPolygonOffset(0, 0); - glDepthFunc( GL_EQUAL ); - glColor3f(0,1,0); - quad(6); - - /* blue: offset forward */ - glDepthFunc( GL_LESS ); - glPolygonOffset(0, -4); - glColor3f(0,0,1); - quad(3); - - glDisable(GL_POLYGON_OFFSET_FILL); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA | GLUT_DEPTH; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/quad-tex-2d.c b/progs/trivial/quad-tex-2d.c deleted file mode 100644 index 8a886ef578..0000000000 --- a/progs/trivial/quad-tex-2d.c +++ /dev/null @@ -1,189 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - -static GLenum Target = GL_TEXTURE_2D; -static GLenum Filter = GL_NEAREST; -GLenum doubleBuffer; -static float Rot = 0; -static int win = 0; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); - -#define SIZE 32 - { - GLubyte tex2d[SIZE][SIZE][3]; - GLint s, t; - - for (s = 0; s < SIZE; s++) { - for (t = 0; t < SIZE; t++) { -#if 0 - tex2d[t][s][0] = (s < SIZE/2) ? 0 : 255; - tex2d[t][s][1] = (t < SIZE/2) ? 0 : 255; - tex2d[t][s][2] = 0; -#else - tex2d[t][s][0] = s*255/(SIZE-1); - tex2d[t][s][1] = t*255/(SIZE-1); - tex2d[t][s][2] = 0; -#endif - } - } - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - - if (Target == GL_TEXTURE_1D) - glTexImage1D(Target, 0, 3, SIZE, 0, GL_RGB, GL_UNSIGNED_BYTE, tex2d); - else - glTexImage2D(Target, 0, 3, SIZE, SIZE, 0, - GL_RGB, GL_UNSIGNED_BYTE, tex2d); - - glEnable(Target); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - glTexParameterf(Target, GL_TEXTURE_WRAP_R, GL_REPEAT); - glTexParameterf(Target, GL_TEXTURE_MIN_FILTER, Filter); - glTexParameterf(Target, GL_TEXTURE_MAG_FILTER, Filter); - - glPixelStorei(GL_UNPACK_ALIGNMENT, 4); - } -} - -static void Reshape(int width, int height) -{ - glViewport(0, 0, (GLint)width, (GLint)height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); -#if 0 - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); -#else - glFrustum(-1, 1, -1, 1, 10, 20); -#endif - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0, 0, -15); -} - -static void Key(unsigned char key, int x, int y) -{ - switch (key) { - case 'r': - Rot += 10.0; - break; - case 'R': - Rot -= 10.0; - break; - case 27: - glutDestroyWindow(win); - exit(0); - default: - return; - } - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glPushMatrix(); - glRotatef(Rot, 0, 1, 0); - - glBegin(GL_QUADS); - glTexCoord2f(1,0); - glVertex3f( 0.9, -0.9, 0.0); - glTexCoord2f(1,1); - glVertex3f( 0.9, 0.9, 0.0); - glTexCoord2f(0,1); - glVertex3f(-0.9, 0.9, 0.0); - glTexCoord2f(0,0); - glVertex3f(-0.9, -0.9, 0.0); - glEnd(); - - glPopMatrix(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - win = glutCreateWindow(*argv); - if (!win) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/quad-tex-3d.c b/progs/trivial/quad-tex-3d.c deleted file mode 100644 index d05131d3b8..0000000000 --- a/progs/trivial/quad-tex-3d.c +++ /dev/null @@ -1,181 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glew.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - -GLfloat z= 0; -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); - -#define SIZE 16 - { - GLubyte tex3d[SIZE][SIZE][SIZE][3]; - GLint r, s, t; - - for (s = 0; s < SIZE; s++) { - for (t = 0; t < SIZE; t++) { - for (r = 0; r < SIZE; r++) { -#if 0 - tex3d[r][t][s][0] = (s < SIZE/2) ? 0 : 255; - tex3d[r][t][s][1] = (t < SIZE/2) ? 0 : 255; - tex3d[r][t][s][2] = (r < SIZE/2) ? 0 : 255; -#else - tex3d[r][t][s][0] = s*255/(SIZE-1); - tex3d[r][t][s][1] = t*255/(SIZE-1); - tex3d[r][t][s][2] = r*255/(SIZE-1); -#endif - } - } - } - - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - glTexParameterf(GL_TEXTURE_3D, GL_TEXTURE_WRAP_R, GL_REPEAT); - glTexParameterf(GL_TEXTURE_3D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameterf(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glTexImage3D(GL_TEXTURE_3D, 0, 3, SIZE, SIZE, SIZE, 0, - GL_RGB, GL_UNSIGNED_BYTE, tex3d); - glPixelStorei(GL_UNPACK_ALIGNMENT, 4); - glEnable(GL_TEXTURE_3D); - } - -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case ' ': - z += 1.0/SIZE; - break; - case 27: - exit(1); - default: - return; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - fprintf(stderr, "z: %f\n", z); - - glBegin(GL_QUADS); - glTexCoord3f(1,0,z); - glVertex3f( 0.9, -0.9, -30.0); - glTexCoord3f(1,1,z); - glVertex3f( 0.9, 0.9, -30.0); - glTexCoord3f(0,1,z); - glVertex3f(-0.9, 0.9, -30.0); - glTexCoord3f(0,0,z); - glVertex3f(-0.9, -0.9, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - glewInit(); - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/quad-tex-alpha.c b/progs/trivial/quad-tex-alpha.c deleted file mode 100644 index 9db6792fad..0000000000 --- a/progs/trivial/quad-tex-alpha.c +++ /dev/null @@ -1,171 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); - -#define SIZE 16 - { - GLubyte tex2d[SIZE][SIZE][4]; - GLint s, t; - - for (s = 0; s < SIZE; s++) { - for (t = 0; t < SIZE; t++) { - tex2d[t][s][0] = (s < SIZE/2) ? 0 : 255; - tex2d[t][s][1] = (t < SIZE/2) ? 0 : 255; - tex2d[t][s][2] = 0; - tex2d[t][s][3] = ((t^s) & 3) * 63; - } - } - - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_R, GL_REPEAT); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glTexImage2D(GL_TEXTURE_2D, 0, 4, SIZE, SIZE, 0, - GL_RGBA, GL_UNSIGNED_BYTE, tex2d); - glPixelStorei(GL_UNPACK_ALIGNMENT, 4); - glEnable(GL_TEXTURE_2D); - } -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glDisable(GL_DEPTH_TEST); - glDisable(GL_STENCIL_TEST); - glEnable(GL_ALPHA_TEST); - glAlphaFunc(GL_GEQUAL, 0.5); - - glBegin(GL_QUADS); - glTexCoord2f(1,0); - glVertex3f( 0.9, -0.9, -30.0); - glTexCoord2f(1,1); - glVertex3f( 0.9, 0.9, -30.0); - glTexCoord2f(0,1); - glVertex3f(-0.9, 0.9, -30.0); - glTexCoord2f(0,0); - glVertex3f(-0.9, -0.9, -30.0); - glEnd(); - - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(100, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/quad-tex-pbo.c b/progs/trivial/quad-tex-pbo.c deleted file mode 100644 index b7aa1db436..0000000000 --- a/progs/trivial/quad-tex-pbo.c +++ /dev/null @@ -1,184 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <GL/glew.h> - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - -GLenum doubleBuffer; - -static GLuint DrawPBO; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); - -#define SIZE 16 - { - GLubyte tex2d[SIZE][SIZE][4]; - GLint s, t; - - for (s = 0; s < SIZE; s++) { - for (t = 0; t < SIZE; t++) { - /* bgra: - */ - tex2d[t][s][0] = 0x30; - tex2d[t][s][1] = t*255/(SIZE-1); - tex2d[t][s][2] = s*255/(SIZE-1); - tex2d[t][s][3] = 0xff; - } - } - - - /* put image into DrawPBO */ - glGenBuffersARB(1, &DrawPBO); - glBindBufferARB(GL_PIXEL_PACK_BUFFER_EXT, DrawPBO); - glBufferDataARB(GL_PIXEL_PACK_BUFFER_EXT, - SIZE * SIZE * 4, tex2d, GL_STATIC_DRAW); - glBindBufferARB(GL_PIXEL_PACK_BUFFER_EXT, 0); - - - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_R, GL_REPEAT); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_EXT, DrawPBO); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, SIZE, SIZE, 0, - GL_BGRA, GL_UNSIGNED_BYTE, NULL); - glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_EXT, 0); - glPixelStorei(GL_UNPACK_ALIGNMENT, 4); - glEnable(GL_TEXTURE_2D); - } - -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_QUADS); - glTexCoord2f(1,0); - glVertex3f( 0.9, -0.9, -30.0); - glTexCoord2f(1,1); - glVertex3f( 0.9, 0.9, -30.0); - glTexCoord2f(0,1); - glVertex3f(-0.9, 0.9, -30.0); - glTexCoord2f(0,0); - glVertex3f(-0.9, -0.9, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - glewInit(); - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/quad-tex-sub.c b/progs/trivial/quad-tex-sub.c deleted file mode 100644 index 5620dbc6f8..0000000000 --- a/progs/trivial/quad-tex-sub.c +++ /dev/null @@ -1,204 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glew.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - -#define SIZE 16 -GLenum doubleBuffer; -GLint line = 0; - -static void MakeImage() -{ - GLubyte tex2d[SIZE][SIZE][3]; - GLint s, t; - - for (s = 0; s < SIZE; s++) { - for (t = 0; t < SIZE; t++) { - tex2d[t][s][0] = s*255/(SIZE-1); - tex2d[t][s][1] = t*255/(SIZE-1); - tex2d[t][s][2] = 0*255/(SIZE-1); - } - } - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, - SIZE, SIZE, - 0, - GL_RGB, GL_UNSIGNED_BYTE, tex2d); - glPixelStorei(GL_UNPACK_ALIGNMENT, 4); - glEnable(GL_TEXTURE_2D); -} - -static void UpdateLine() -{ - GLubyte tex[SIZE][3]; - GLubyte b = 0; - GLint s, t; - - t = line % SIZE; - if (line % (SIZE * 2) < SIZE) - b = 255; - else - b = 0; - - for (s = 0; s < SIZE; s++) { - tex[s][0] = s*255/(SIZE-1); - tex[s][1] = t*255/(SIZE-1); - tex[s][2] = b; - } - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glTexSubImage2D(GL_TEXTURE_2D, 0, - 0, t, - SIZE, 1, - GL_RGB, GL_UNSIGNED_BYTE, tex); - glPixelStorei(GL_UNPACK_ALIGNMENT, 4); -} - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); - - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - - MakeImage(); - UpdateLine(); - line++; -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - UpdateLine(); - line++; - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_QUADS); - glTexCoord2f(1,0); - glVertex3f( 0.9, -0.9, -30.0); - glTexCoord2f(1,1); - glVertex3f( 0.9, 0.9, -30.0); - glTexCoord2f(0,1); - glVertex3f(-0.9, 0.9, -30.0); - glTexCoord2f(0,0); - glVertex3f(-0.9, -0.9, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); - glutInitWindowSize(250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - glewInit(); - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/quad-unfilled-clip.c b/progs/trivial/quad-unfilled-clip.c deleted file mode 100644 index d2e8718775..0000000000 --- a/progs/trivial/quad-unfilled-clip.c +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - - glBegin(GL_QUADS); - glColor3f(1,0,0); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(1,1,0); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(1,0,1); - glVertex3f(-1.9, 0.9, -30.0); - glColor3f(0,1,1); - glVertex3f(-0.9, -0.9, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/quad-unfilled-stipple.c b/progs/trivial/quad-unfilled-stipple.c deleted file mode 100644 index 8c1737e675..0000000000 --- a/progs/trivial/quad-unfilled-stipple.c +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - - glEnable(GL_LINE_STIPPLE); - glLineStipple( 5, 0xfffe ); - - glBegin(GL_QUADS); - glColor3f(1,0,0); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(1,1,1); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(0,1,0); - glVertex3f(-0.9, 0.9, -30.0); - glColor3f(0,0,0); - glVertex3f(-0.9, -0.9, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/quad-unfilled.c b/progs/trivial/quad-unfilled.c deleted file mode 100644 index b756449d7a..0000000000 --- a/progs/trivial/quad-unfilled.c +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - - glBegin(GL_QUADS); - glColor3f(1,0,0); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(1,1,0); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(1,0,1); - glVertex3f(-0.9, 0.9, -30.0); - glColor3f(0,1,1); - glVertex3f(-0.9, -0.9, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/quad.c b/progs/trivial/quad.c deleted file mode 100644 index 582de783d5..0000000000 --- a/progs/trivial/quad.c +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_QUADS); - glColor3f(1,0,0); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(1,1,0); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(1,0,1); - glVertex3f(-0.9, 0.9, -30.0); - glColor3f(0,1,1); - glVertex3f(-0.9, -0.9, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/quads.c b/progs/trivial/quads.c deleted file mode 100644 index de7854a255..0000000000 --- a/progs/trivial/quads.c +++ /dev/null @@ -1,157 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_QUADS); - glColor3f(1,0,0); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(1,1,0); - glVertex3f( 0.9, 0.9, -30.0); - - glColor3f(1,1,1); - glVertex3f( 0.1, 0.9, -30.0); - glColor3f(1,0,1); - glVertex3f( 0.1, -0.9, -30.0); - - if (0) { - glEnd(); - glFlush(); - glBegin(GL_QUADS); - } - - glColor3f(0,1,0); - glVertex3f(-0.1, -0.9, -30.0); - glColor3f(1,0,0); - glVertex3f(-0.1, 0.9, -30.0); - - - glColor3f(1,0,1); - glVertex3f(-0.9, 0.9, -30.0); - glColor3f(0,1,1); - glVertex3f(-0.9, -0.9, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/quadstrip-clip.c b/progs/trivial/quadstrip-clip.c deleted file mode 100644 index 4cea81a45d..0000000000 --- a/progs/trivial/quadstrip-clip.c +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_QUAD_STRIP); - glColor3f(1,1,1); - glVertex3f( 1.9, -0.9, -30.0); - glVertex3f( 0.9, 0.9, -30.0); - - glColor3f(1,0,0); - glVertex3f( 0.1, -0.8, -30.0); - glVertex3f( 0.1, 0.8, -30.0); - - glColor3f(0,1,0); - glVertex3f(-0.1, -0.9, -30.0); - glVertex3f(-0.1, 0.9, -30.0); - - glColor3f(0,0,0); - glVertex3f(-0.9, -0.8, -30.0); - glVertex3f(-0.9, 0.8, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/quadstrip-cont.c b/progs/trivial/quadstrip-cont.c deleted file mode 100644 index 44412698dc..0000000000 --- a/progs/trivial/quadstrip-cont.c +++ /dev/null @@ -1,163 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_QUAD_STRIP); - glColor3f(1,0,0); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(1,1,0); - glVertex3f( 0.9, 0.9, -30.0); - - glColor3f(1,0,0); - glVertex3f( 0.1, -0.8, -30.0); - glColor3f(1,1,0); - glVertex3f( 0.1, 0.8, -30.0); - - glColor3f(0,1,1); - glVertex3f(-0.1, -0.9, -30.0); - glColor3f(1,0,1); - glVertex3f(-0.1, 0.9, -30.0); - - glColor3f(0,1,1); - glVertex3f(-0.9, -0.8, -30.0); - glColor3f(1,0,1); - glVertex3f(-0.9, 0.8, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static void -idle(void) -{ - glutPostRedisplay(); -} - - -static void -visible(int vis) -{ - if (vis == GLUT_VISIBLE) - glutIdleFunc(idle); - else - glutIdleFunc(NULL); -} - - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutVisibilityFunc(visible); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/quadstrip-flat.c b/progs/trivial/quadstrip-flat.c deleted file mode 100644 index 0e0b3b49fa..0000000000 --- a/progs/trivial/quadstrip-flat.c +++ /dev/null @@ -1,151 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glShadeModel(GL_FLAT); - - glBegin(GL_QUAD_STRIP); - glColor3f(1,0,0); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(1,1,0); - glVertex3f( 0.9, 0.9, -30.0); - - glColor3f(1,0,0); - glVertex3f( 0.1, -0.8, -30.0); - glColor3f(1,1,0); - glVertex3f( 0.1, 0.8, -30.0); - - glColor3f(0,1,1); - glVertex3f(-0.1, -0.9, -30.0); - glColor3f(1,0,1); - glVertex3f(-0.1, 0.9, -30.0); - - glColor3f(0,1,1); - glVertex3f(-0.9, -0.8, -30.0); - glColor3f(1,0,1); - glVertex3f(-0.9, 0.8, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/quadstrip.c b/progs/trivial/quadstrip.c deleted file mode 100644 index 1be815fb8c..0000000000 --- a/progs/trivial/quadstrip.c +++ /dev/null @@ -1,145 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_QUAD_STRIP); - glColor3f(1,0,0); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(1,1,0); - glVertex3f( 0.9, 0.9, -30.0); - - glColor3f(1,0,0); - glVertex3f( 0.1, -0.8, -30.0); - glColor3f(1,1,0); - glVertex3f( 0.1, 0.8, -30.0); - - glColor3f(0,1,1); - glVertex3f(-0.1, -0.9, -30.0); - glColor3f(1,0,1); - glVertex3f(-0.1, 0.9, -30.0); - - glColor3f(0,1,1); - glVertex3f(-0.9, -0.8, -30.0); - glColor3f(1,0,1); - glVertex3f(-0.9, 0.8, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/readpixels.c b/progs/trivial/readpixels.c deleted file mode 100644 index b063f17956..0000000000 --- a/progs/trivial/readpixels.c +++ /dev/null @@ -1,104 +0,0 @@ -/* - * glRead/DrawPixels test - */ - - -#include <GL/glew.h> -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - -static int Width = 250, Height = 250; -static GLfloat Zoom = 1.0; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - glClearColor(0.3, 0.1, 0.3, 0.0); -} - -static void Reshape(int width, int height) -{ - Width = width / 2; - Height = height; - /* draw on left half (we'll read that area) */ - glViewport(0, 0, Width, height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - switch (key) { - case 27: - exit(0); - default: - break; - } - glutPostRedisplay(); -} - -static void Draw(void) -{ - GLfloat *image = (GLfloat *) malloc(Width * Height * 4 * sizeof(GLfloat)); - - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_TRIANGLES); - glColor3f(.8,0,0); - glVertex3f(-0.9, -0.9, -30.0); - glColor3f(0,.9,0); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(0,0,.7); - glVertex3f( 0.0, 0.9, -30.0); - glEnd(); - - glBegin(GL_QUADS); - glColor3f(1, 1, 1); - glVertex2f(-1.0, -1.0); - glVertex2f(-0.9, -1.0); - glVertex2f(-0.9, -0.9); - glVertex2f(-1.0, -0.9); - glEnd(); - - glReadPixels(0, 0, Width, Height, GL_RGBA, GL_FLOAT, image); - printf("Pixel(0,0) = %f, %f, %f, %f\n", - image[0], image[1], image[2], image[3]); - /* draw to right half of window */ - glWindowPos2iARB(Width, 0); - glPixelZoom(Zoom, Zoom); - glDrawPixels(Width, Height, GL_RGBA, GL_FLOAT, image); - free(image); - - glutSwapBuffers(); -} - -int main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitWindowPosition(0, 0); - glutInitWindowSize(Width*2, Height); - glutInitDisplayMode(GLUT_RGB | GLUT_ALPHA | GLUT_DOUBLE); - if (glutCreateWindow(argv[0]) == GL_FALSE) { - exit(1); - } - - if (argc > 1) - Zoom = atof(argv[1]); - - glewInit(); - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-alpha-tex.c b/progs/trivial/tri-alpha-tex.c deleted file mode 100644 index 853d564ae7..0000000000 --- a/progs/trivial/tri-alpha-tex.c +++ /dev/null @@ -1,180 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); - -#define SIZE 16 - { - GLubyte tex2d[SIZE][SIZE][4]; - GLint s, t; - - for (s = 0; s < SIZE; s++) { - for (t = 0; t < SIZE; t++) { - tex2d[t][s][0] = (s < SIZE/2) ? 0 : 255; - tex2d[t][s][1] = (t < SIZE/2) ? 0 : 255; - tex2d[t][s][2] = 0; - tex2d[t][s][3] = ((t^s) & 3) * 63; - } - } - - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_R, GL_REPEAT); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glTexImage2D(GL_TEXTURE_2D, 0, 4, SIZE, SIZE, 0, - GL_RGBA, GL_UNSIGNED_BYTE, tex2d); - glPixelStorei(GL_UNPACK_ALIGNMENT, 4); - glEnable(GL_TEXTURE_2D); - } -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glDisable(GL_DEPTH_TEST); - glDisable(GL_STENCIL_TEST); - glEnable(GL_ALPHA_TEST); - glAlphaFunc(GL_GEQUAL, 0.5); - - glBegin(GL_QUADS); - glTexCoord2f(1,0); - glVertex3f( 0.9, -0.9, -30.0); - glTexCoord2f(1,1); - glVertex3f( 0.9, 0.9, -30.0); - glTexCoord2f(0,1); - glVertex3f(-0.9, 0.9, -30.0); - glTexCoord2f(0,0); - glVertex3f(-0.9, -0.9, -30.0); - glEnd(); -#if 0 - glBegin(GL_TRIANGLES); - glColor4f(0,0,.7,1); - glVertex3f( 0.9, -0.9, -30.0); - glColor4f(.8,0,0,.5); - glVertex3f( 0.9, 0.9, -30.0); - glColor4f(0,.9,0,0); - glVertex3f(-0.9, 0.0, -30.0); - glEnd(); -#endif - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(100, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-alpha.c b/progs/trivial/tri-alpha.c deleted file mode 100644 index bd1c88ecf8..0000000000 --- a/progs/trivial/tri-alpha.c +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glDisable(GL_DEPTH_TEST); - glDisable(GL_STENCIL_TEST); - glEnable(GL_ALPHA_TEST); - glAlphaFunc(GL_GEQUAL, 0.5); - - glBegin(GL_TRIANGLES); - glColor4f(0,0,.7,1); - glVertex3f( 0.9, -0.9, -30.0); - glColor4f(.8,0,0,.5); - glVertex3f( 0.9, 0.9, -30.0); - glColor4f(0,.9,0,0); - glVertex3f(-0.9, 0.0, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(100, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-array-interleaved.c b/progs/trivial/tri-array-interleaved.c deleted file mode 100644 index 95de2056cf..0000000000 --- a/progs/trivial/tri-array-interleaved.c +++ /dev/null @@ -1,120 +0,0 @@ -/* Test rebasing */ - -#include <assert.h> -#include <string.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - -struct { - GLubyte color[4]; - GLfloat vert[3]; -} verts[] = { - - { { 0x00, 0x00, 0xff, 0x00 }, - { 0.9, -0.9, 0.0 } }, - - { { 0x00, 0xff, 0x00, 0x00 }, - { 0.9, 0.9, 0.0 } }, - - { { 0xff, 0x00, 0x00, 0x00 }, - { -0.9, 0.9, 0.0 } }, - - { { 0xff, 0xff, 0xff, 0x00 }, - { -0.9, -0.9, 0.0 } }, -}; - -GLuint indices[] = { 1, 2, 3 }; - -static void Init( void ) -{ - GLint errno; - GLuint prognum; - - static const char *prog1 = - "!!ARBvp1.0\n" - "MOV result.color, vertex.color;\n" - "MOV result.position, vertex.position;\n" - "END\n"; - - glGenProgramsARB(1, &prognum); - glBindProgramARB(GL_VERTEX_PROGRAM_ARB, prognum); - glProgramStringARB(GL_VERTEX_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, - strlen(prog1), (const GLubyte *) prog1); - - assert(glIsProgramARB(prognum)); - errno = glGetError(); - printf("glGetError = %d\n", errno); - if (errno != GL_NO_ERROR) - { - GLint errorpos; - - glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &errorpos); - printf("errorpos: %d\n", errorpos); - printf("%s\n", (char *)glGetString(GL_PROGRAM_ERROR_STRING_ARB)); - } - - glInterleavedArrays( GL_C4UB_V3F, sizeof(verts[0]), verts ); -} - - - -static void Display( void ) -{ - glClearColor(0.3, 0.3, 0.3, 1); - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - glEnable(GL_VERTEX_PROGRAM_NV); - - /* Should have min_index == 1, maybe force a rebase: - */ - glDrawElements( GL_TRIANGLES, 3, GL_UNSIGNED_INT, indices ); - - glFlush(); -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - /*glTranslatef( 0.0, 0.0, -15.0 );*/ -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 250, 250 ); - glutInitDisplayMode( GLUT_RGB | GLUT_SINGLE | GLUT_DEPTH ); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-blend-color.c b/progs/trivial/tri-blend-color.c deleted file mode 100644 index 629b35c4ab..0000000000 --- a/progs/trivial/tri-blend-color.c +++ /dev/null @@ -1,145 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glew.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClearColor(0.0, 0.0, 1.0, 0.0); - glClear(GL_COLOR_BUFFER_BIT); - - glEnable(GL_BLEND); - glBlendEquation(GL_FUNC_ADD); - glBlendColor(1.0, 0, 0, 0); - glBlendFunc(GL_CONSTANT_COLOR, GL_SRC_COLOR); - - glBegin(GL_TRIANGLES); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(0,.9,0); - glVertex3f(-0.9, 0.0, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(100, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - glewInit(); - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-blend-max.c b/progs/trivial/tri-blend-max.c deleted file mode 100644 index b173dab8ec..0000000000 --- a/progs/trivial/tri-blend-max.c +++ /dev/null @@ -1,147 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -/* - * alpha.c - * This program draws several overlapping filled polygons - * to demonstrate the effect order has on alpha blending results. - * Use the 't' key to toggle the order of drawing polygons. - */ -#include <stdlib.h> -#include <GL/glew.h> -#include <GL/glut.h> - -static int leftFirst = GL_TRUE; - -/* Initialize alpha blending function. - */ -static void init(void) -{ - glBlendEquation (GL_MAX); - glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glShadeModel (GL_FLAT); - glClearColor (1.0, 0.0, 0.0, 0.0); -} - -static void drawLeftTriangle(void) -{ - /* draw yellow triangle on LHS of screen */ - - glBegin (GL_TRIANGLES); - glColor4f(1.0, 1.0, 0.0, 0.75); - glVertex3f(0.1, 0.9, 0.0); - glVertex3f(0.1, 0.1, 0.0); - glVertex3f(0.7, 0.5, 0.0); - glEnd(); -} - -static void drawRightTriangle(void) -{ - /* draw cyan triangle on RHS of screen */ - - glEnable (GL_BLEND); - glBegin (GL_TRIANGLES); - glColor4f(0.0, 1.0, 1.0, 0.75); - glVertex3f(0.9, 0.9, 0.0); - glVertex3f(0.3, 0.5, 0.0); - glVertex3f(0.9, 0.1, 0.0); - glEnd(); - glDisable (GL_BLEND); -} - -static void display(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - if (leftFirst) { - drawLeftTriangle(); - drawRightTriangle(); - } - else { - drawRightTriangle(); - drawLeftTriangle(); - } - - glFlush(); -} - -static void reshape(int w, int h) -{ - glViewport(0, 0, (GLsizei) w, (GLsizei) h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - if (w <= h) - gluOrtho2D (0.0, 1.0, 0.0, 1.0*(GLfloat)h/(GLfloat)w); - else - gluOrtho2D (0.0, 1.0*(GLfloat)w/(GLfloat)h, 0.0, 1.0); -} - -/* ARGSUSED1 */ -static void keyboard(unsigned char key, int x, int y) -{ - switch (key) { - case 't': - case 'T': - leftFirst = !leftFirst; - glutPostRedisplay(); - break; - case 27: /* Escape key */ - exit(0); - break; - default: - break; - } -} - -/* Main Loop - * Open window with initial window size, title bar, - * RGBA display mode, and handle input events. - */ -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); - glutInitWindowSize (200, 200); - glutCreateWindow (argv[0]); - glewInit(); - init(); - glutReshapeFunc (reshape); - glutKeyboardFunc (keyboard); - glutDisplayFunc (display); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-blend-min.c b/progs/trivial/tri-blend-min.c deleted file mode 100644 index 629139acae..0000000000 --- a/progs/trivial/tri-blend-min.c +++ /dev/null @@ -1,147 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -/* - * alpha.c - * This program draws several overlapping filled polygons - * to demonstrate the effect order has on alpha blending results. - * Use the 't' key to toggle the order of drawing polygons. - */ -#include <stdlib.h> -#include <GL/glew.h> -#include <GL/glut.h> - -static int leftFirst = GL_TRUE; - -/* Initialize alpha blending function. - */ -static void init(void) -{ - glBlendEquation (GL_MIN); - glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glShadeModel (GL_FLAT); - glClearColor (1.0, 0.0, 0.0, 0.0); -} - -static void drawLeftTriangle(void) -{ - /* draw yellow triangle on LHS of screen */ - - glBegin (GL_TRIANGLES); - glColor4f(1.0, 1.0, 0.0, 0.75); - glVertex3f(0.1, 0.9, 0.0); - glVertex3f(0.1, 0.1, 0.0); - glVertex3f(0.7, 0.5, 0.0); - glEnd(); -} - -static void drawRightTriangle(void) -{ - /* draw cyan triangle on RHS of screen */ - - glEnable (GL_BLEND); - glBegin (GL_TRIANGLES); - glColor4f(0.0, 1.0, 1.0, 0.75); - glVertex3f(0.9, 0.9, 0.0); - glVertex3f(0.3, 0.5, 0.0); - glVertex3f(0.9, 0.1, 0.0); - glEnd(); - glDisable (GL_BLEND); -} - -static void display(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - if (leftFirst) { - drawLeftTriangle(); - drawRightTriangle(); - } - else { - drawRightTriangle(); - drawLeftTriangle(); - } - - glFlush(); -} - -static void reshape(int w, int h) -{ - glViewport(0, 0, (GLsizei) w, (GLsizei) h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - if (w <= h) - gluOrtho2D (0.0, 1.0, 0.0, 1.0*(GLfloat)h/(GLfloat)w); - else - gluOrtho2D (0.0, 1.0*(GLfloat)w/(GLfloat)h, 0.0, 1.0); -} - -/* ARGSUSED1 */ -static void keyboard(unsigned char key, int x, int y) -{ - switch (key) { - case 't': - case 'T': - leftFirst = !leftFirst; - glutPostRedisplay(); - break; - case 27: /* Escape key */ - exit(0); - break; - default: - break; - } -} - -/* Main Loop - * Open window with initial window size, title bar, - * RGBA display mode, and handle input events. - */ -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); - glutInitWindowSize (200, 200); - glutCreateWindow (argv[0]); - glewInit(); - init(); - glutReshapeFunc (reshape); - glutKeyboardFunc (keyboard); - glutDisplayFunc (display); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-blend-revsub.c b/progs/trivial/tri-blend-revsub.c deleted file mode 100644 index ef1e92c85d..0000000000 --- a/progs/trivial/tri-blend-revsub.c +++ /dev/null @@ -1,147 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -/* - * alpha.c - * This program draws several overlapping filled polygons - * to demonstrate the effect order has on alpha blending results. - * Use the 't' key to toggle the order of drawing polygons. - */ -#include <stdlib.h> -#include <GL/glew.h> -#include <GL/glut.h> - -static int leftFirst = GL_TRUE; - -/* Initialize alpha blending function. - */ -static void init(void) -{ - glBlendEquation (GL_FUNC_REVERSE_SUBTRACT); - glBlendFunc (GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA); - glShadeModel (GL_FLAT); - glClearColor (1.0, 0.0, 0.0, 0.0); -} - -static void drawLeftTriangle(void) -{ - /* draw yellow triangle on LHS of screen */ - - glBegin (GL_TRIANGLES); - glColor4f(1.0, 1.0, 0.0, 0.75); - glVertex3f(0.1, 0.9, 0.0); - glVertex3f(0.1, 0.1, 0.0); - glVertex3f(0.7, 0.5, 0.0); - glEnd(); -} - -static void drawRightTriangle(void) -{ - /* draw cyan triangle on RHS of screen */ - - glEnable (GL_BLEND); - glBegin (GL_TRIANGLES); - glColor4f(0.0, 1.0, 1.0, 0.75); - glVertex3f(0.9, 0.9, 0.0); - glVertex3f(0.3, 0.5, 0.0); - glVertex3f(0.9, 0.1, 0.0); - glEnd(); - glDisable (GL_BLEND); -} - -static void display(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - if (leftFirst) { - drawLeftTriangle(); - drawRightTriangle(); - } - else { - drawRightTriangle(); - drawLeftTriangle(); - } - - glFlush(); -} - -static void reshape(int w, int h) -{ - glViewport(0, 0, (GLsizei) w, (GLsizei) h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - if (w <= h) - gluOrtho2D (0.0, 1.0, 0.0, 1.0*(GLfloat)h/(GLfloat)w); - else - gluOrtho2D (0.0, 1.0*(GLfloat)w/(GLfloat)h, 0.0, 1.0); -} - -/* ARGSUSED1 */ -static void keyboard(unsigned char key, int x, int y) -{ - switch (key) { - case 't': - case 'T': - leftFirst = !leftFirst; - glutPostRedisplay(); - break; - case 27: /* Escape key */ - exit(0); - break; - default: - break; - } -} - -/* Main Loop - * Open window with initial window size, title bar, - * RGBA display mode, and handle input events. - */ -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); - glutInitWindowSize (200, 200); - glutCreateWindow (argv[0]); - glewInit(); - init(); - glutReshapeFunc (reshape); - glutKeyboardFunc (keyboard); - glutDisplayFunc (display); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-blend-sub.c b/progs/trivial/tri-blend-sub.c deleted file mode 100644 index 3c560ae6ef..0000000000 --- a/progs/trivial/tri-blend-sub.c +++ /dev/null @@ -1,147 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -/* - * alpha.c - * This program draws several overlapping filled polygons - * to demonstrate the effect order has on alpha blending results. - * Use the 't' key to toggle the order of drawing polygons. - */ -#include <stdlib.h> -#include <GL/glew.h> -#include <GL/glut.h> - -static int leftFirst = GL_TRUE; - -/* Initialize alpha blending function. - */ -static void init(void) -{ - glBlendEquation (GL_FUNC_SUBTRACT); - glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glShadeModel (GL_FLAT); - glClearColor (1.0, 0.0, 0.0, 0.0); -} - -static void drawLeftTriangle(void) -{ - /* draw yellow triangle on LHS of screen */ - - glBegin (GL_TRIANGLES); - glColor4f(1.0, 1.0, 0.0, 0.75); - glVertex3f(0.1, 0.9, 0.0); - glVertex3f(0.1, 0.1, 0.0); - glVertex3f(0.7, 0.5, 0.0); - glEnd(); -} - -static void drawRightTriangle(void) -{ - /* draw cyan triangle on RHS of screen */ - - glEnable (GL_BLEND); - glBegin (GL_TRIANGLES); - glColor4f(0.0, 1.0, 1.0, 0.75); - glVertex3f(0.9, 0.9, 0.0); - glVertex3f(0.3, 0.5, 0.0); - glVertex3f(0.9, 0.1, 0.0); - glEnd(); - glDisable (GL_BLEND); -} - -static void display(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - if (leftFirst) { - drawLeftTriangle(); - drawRightTriangle(); - } - else { - drawRightTriangle(); - drawLeftTriangle(); - } - - glFlush(); -} - -static void reshape(int w, int h) -{ - glViewport(0, 0, (GLsizei) w, (GLsizei) h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - if (w <= h) - gluOrtho2D (0.0, 1.0, 0.0, 1.0*(GLfloat)h/(GLfloat)w); - else - gluOrtho2D (0.0, 1.0*(GLfloat)w/(GLfloat)h, 0.0, 1.0); -} - -/* ARGSUSED1 */ -static void keyboard(unsigned char key, int x, int y) -{ - switch (key) { - case 't': - case 'T': - leftFirst = !leftFirst; - glutPostRedisplay(); - break; - case 27: /* Escape key */ - exit(0); - break; - default: - break; - } -} - -/* Main Loop - * Open window with initial window size, title bar, - * RGBA display mode, and handle input events. - */ -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); - glutInitWindowSize (200, 200); - glutCreateWindow (argv[0]); - glewInit(); - init(); - glutReshapeFunc (reshape); - glutKeyboardFunc (keyboard); - glutDisplayFunc (display); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-blend.c b/progs/trivial/tri-blend.c deleted file mode 100644 index f41be89b09..0000000000 --- a/progs/trivial/tri-blend.c +++ /dev/null @@ -1,144 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -/* - * alpha.c - * This program draws several overlapping filled polygons - * to demonstrate the effect order has on alpha blending results. - * Use the 't' key to toggle the order of drawing polygons. - */ -#include <GL/glut.h> -#include <stdlib.h> - -static int leftFirst = GL_TRUE; - -/* Initialize alpha blending function. - */ -static void init(void) -{ - glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glShadeModel (GL_FLAT); - glClearColor (1.0, 0.0, 0.0, 0.0); -} - -static void drawLeftTriangle(void) -{ - /* draw yellow triangle on LHS of screen */ - - glBegin (GL_TRIANGLES); - glColor4f(1.0, 1.0, 0.0, 0.75); - glVertex3f(0.1, 0.9, 0.0); - glVertex3f(0.1, 0.1, 0.0); - glVertex3f(0.7, 0.5, 0.0); - glEnd(); -} - -static void drawRightTriangle(void) -{ - /* draw cyan triangle on RHS of screen */ - - glEnable (GL_BLEND); - glBegin (GL_TRIANGLES); - glColor4f(0.0, 1.0, 1.0, 0.75); - glVertex3f(0.9, 0.9, 0.0); - glVertex3f(0.3, 0.5, 0.0); - glVertex3f(0.9, 0.1, 0.0); - glEnd(); - glDisable (GL_BLEND); -} - -static void display(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - if (leftFirst) { - drawLeftTriangle(); - drawRightTriangle(); - } - else { - drawRightTriangle(); - drawLeftTriangle(); - } - - glFlush(); -} - -static void reshape(int w, int h) -{ - glViewport(0, 0, (GLsizei) w, (GLsizei) h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - if (w <= h) - gluOrtho2D (0.0, 1.0, 0.0, 1.0*(GLfloat)h/(GLfloat)w); - else - gluOrtho2D (0.0, 1.0*(GLfloat)w/(GLfloat)h, 0.0, 1.0); -} - -/* ARGSUSED1 */ -static void keyboard(unsigned char key, int x, int y) -{ - switch (key) { - case 't': - case 'T': - leftFirst = !leftFirst; - glutPostRedisplay(); - break; - case 27: /* Escape key */ - exit(0); - break; - default: - break; - } -} - -/* Main Loop - * Open window with initial window size, title bar, - * RGBA display mode, and handle input events. - */ -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_ALPHA); - glutInitWindowSize (200, 200); - glutCreateWindow (argv[0]); - init(); - glutReshapeFunc (reshape); - glutKeyboardFunc (keyboard); - glutDisplayFunc (display); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-clear.c b/progs/trivial/tri-clear.c deleted file mode 100644 index e52ed81bf4..0000000000 --- a/progs/trivial/tri-clear.c +++ /dev/null @@ -1,144 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - -GLint Width = 250, Height = 250; - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_TRIANGLES); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(0,.9,0); - glVertex3f(-0.9, 0.0, -30.0); - glEnd(); - - glEnable(GL_SCISSOR_TEST); - glClearColor(1, 0, 1, 0); - glScissor(Width / 2, Height / 2, Width - Width / 2, Height - Height / 2); - glClear(GL_COLOR_BUFFER_BIT); - glDisable(GL_SCISSOR_TEST); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(100, 0); glutInitWindowSize( Width, Height); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-clip.c b/progs/trivial/tri-clip.c deleted file mode 100644 index 3e3879c985..0000000000 --- a/progs/trivial/tri-clip.c +++ /dev/null @@ -1,159 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -static GLenum doubleBuffer; -static GLfloat Xpos = 0, Ypos = 0; - - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - glViewport(0, 0, (GLint)width, (GLint)height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - switch (key) { - case 27: - exit(1); - default: - break; - } - glutPostRedisplay(); -} - -static void -SpecialKey(int key, int x, int y) -{ - const GLfloat step = 0.25; - (void) x; - (void) y; - switch (key) { - case GLUT_KEY_UP: - Ypos += step; - break; - case GLUT_KEY_DOWN: - Ypos -= step; - break; - case GLUT_KEY_LEFT: - Xpos -= step; - break; - case GLUT_KEY_RIGHT: - Xpos += step; - break; - } - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glPushMatrix(); - glTranslatef(Xpos, Ypos, 0); - - glBegin(GL_TRIANGLES); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(0,.9,0); - glVertex3f(-1.9, 0.0, -30.0); - glEnd(); - - glPopMatrix(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutSpecialFunc(SpecialKey); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-cull-both.c b/progs/trivial/tri-cull-both.c deleted file mode 100644 index 809599d4a6..0000000000 --- a/progs/trivial/tri-cull-both.c +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); - glCullFace(GL_FRONT_AND_BACK); - glEnable(GL_CULL_FACE); - -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - - - glBegin(GL_TRIANGLES); - glColor3f(.8,0,0); - glVertex3f( 0.93, 0.9, -30.0); - glColor3f(0,.9,0); - glVertex3f(-0.93, 0.0, -30.0); - glColor3f(0,0,.7); - glVertex3f( 0.93, -0.8, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-cull.c b/progs/trivial/tri-cull.c deleted file mode 100644 index c71ad9a031..0000000000 --- a/progs/trivial/tri-cull.c +++ /dev/null @@ -1,173 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - -static GLenum doubleBuffer; -static GLint cullmode = 0; -static GLenum front = GL_CCW; /* GL default */ - -static void cull(void) -{ - cullmode = (cullmode + 1) % 4; - if (cullmode == 0) { - glCullFace(GL_FRONT); - glEnable(GL_CULL_FACE); - printf("cull GL_FRONT\n"); - } - else if (cullmode == 1) { - glCullFace(GL_BACK); - glEnable(GL_CULL_FACE); - printf("cull GL_BACK\n"); - } - else if (cullmode == 2) { - glCullFace(GL_FRONT_AND_BACK); - glEnable(GL_CULL_FACE); - printf("cull GL_FRONT_AND_BACK\n"); - } - else { - glDisable(GL_CULL_FACE); - printf("cull none\n"); - } -} - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - glClearColor(0.0, 0.0, 1.0, 0.0); - cull(); -} - -static void Reshape(int width, int height) -{ - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - switch (key) { - case 27: - exit(1); - case 'c': - cull(); - break; - case 'f': - front = ((front == GL_CCW) ? GL_CW : GL_CCW); - glFrontFace(front); - printf("front face = %s\n", front == GL_CCW ? "GL_CCW" : "GL_CW"); - break; - default: - return; - } - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_TRIANGLES); - /* CCW / front-facing */ - glColor3f(0,0,.7); - glVertex3f(-0.1, -0.9, -30.0); - glColor3f(.8,0,0); - glVertex3f(-0.1, 0.9, -30.0); - glColor3f(0,.9,0); - glVertex3f(-0.9, 0.0, -30.0); - - /* CW / back-facing */ - glColor3f(0,0,.7); - glVertex3f( 0.1, -0.9, -30.0); - glColor3f(.8,0,0); - glVertex3f( 0.1, 0.9, -30.0); - glColor3f(0,.9,0); - glVertex3f( 0.9, 0.0, -30.0); - - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-dlist.c b/progs/trivial/tri-dlist.c deleted file mode 100644 index 62d0a965d8..0000000000 --- a/progs/trivial/tri-dlist.c +++ /dev/null @@ -1,151 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; -GLint list; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); - - list = glGenLists(1); - glNewList(list, GL_COMPILE); - glBegin(GL_TRIANGLES); -/* glColor3f(0,0,.7); */ - glVertex3f( 0.9, -0.9, -30.0); -/* glColor3f(.8,0,0); */ - glVertex3f( 0.9, 0.9, -30.0); -/* glColor3f(0,.9,0); */ - glVertex3f(-0.9, 0.0, -30.0); - glEnd(); - glEndList(); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - - - - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glColor3f(0,.9,0); - glCallList(list); - - glRotatef(45,0,0,1); - glColor3f(1,0,1); - glCallList(list); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-edgeflag.c b/progs/trivial/tri-edgeflag.c deleted file mode 100644 index 4c8736ad8c..0000000000 --- a/progs/trivial/tri-edgeflag.c +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - -static GLenum doubleBuffer; -static GLenum frontface = GL_CCW; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); -} - -static void Reshape(int width, int height) -{ - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); -/* glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); */ - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - switch (key) { - case 'f': - frontface = (frontface == GL_CCW) ? GL_CW : GL_CCW; - glFrontFace(frontface); - break; - case 27: - exit(1); - default: - return; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glPolygonMode(GL_FRONT, GL_LINE); - glPolygonMode(GL_BACK, GL_POINT); - - glBegin(GL_TRIANGLES); - glEdgeFlag(1); - glColor3f(0.3,0.3,.9); - glVertex3f( 0.9, -0.9, -0.0); - glEdgeFlag(0); - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, -0.0); - glEdgeFlag(1); - glColor3f(0,.9,0); - glVertex3f(-0.9, 0.0, -0.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-fbo-tex-mip.c b/progs/trivial/tri-fbo-tex-mip.c deleted file mode 100644 index 2e8fb74a00..0000000000 --- a/progs/trivial/tri-fbo-tex-mip.c +++ /dev/null @@ -1,259 +0,0 @@ -/* Framebuffer object test */ - - -#include <GL/glew.h> -#include <GL/glut.h> -#include <assert.h> -#include <stdio.h> -#include <stdlib.h> - -/* For debug */ - - -static int Win = 0; -static int Width = 512, Height = 512; - -static GLenum TexTarget = GL_TEXTURE_2D; -static int TexWidth = 512, TexHeight = 512; - -static GLuint MyFB; -static GLuint TexObj; -static GLboolean Anim = GL_FALSE; -static GLfloat Rot = 0.0; -static GLuint TextureLevel = 4; /* which texture level to render to */ -static GLenum TexIntFormat = GL_RGB; /* either GL_RGB or GL_RGBA */ - - -static void -CheckError(int line) -{ - GLenum err = glGetError(); - if (err) { - printf("GL Error 0x%x at line %d\n", (int) err, line); - } -} - - -static void -Idle(void) -{ - Rot = glutGet(GLUT_ELAPSED_TIME) * 0.1; - glutPostRedisplay(); -} - - -static void -RenderTexture(void) -{ - GLenum status; - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, 5.0, 25.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0, 0.0, -15.0); - - if (1) { - /* draw to texture image */ - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, MyFB); - - status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT); - if (status != GL_FRAMEBUFFER_COMPLETE_EXT) { - printf("Framebuffer incomplete!!!\n"); - } - - glViewport(0, 0, - TexWidth / (1 << TextureLevel), - TexHeight / (1 << TextureLevel)); - glClearColor(0.5, 0.5, 1.0, 0.0); - glClear(GL_COLOR_BUFFER_BIT); - - CheckError(__LINE__); - - glBegin(GL_POLYGON); - glColor3f(1, 0, 0); - glVertex2f(-1, -1); - glColor3f(0, 1, 0); - glVertex2f(1, -1); - glColor3f(0, 0, 1); - glVertex2f(0, 1); - glEnd(); - - /* Bind normal framebuffer */ - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); - } - else { - } - - CheckError(__LINE__); -} - - - -static void -Display(void) -{ - float ar = (float) Width / (float) Height; - - RenderTexture(); - - /* draw textured quad in the window */ - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-ar, ar, -1.0, 1.0, 5.0, 25.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0, 0.0, -7.0); - - glViewport(0, 0, Width, Height); - - glClearColor(0.25, 0.25, 0.25, 0); - glClear(GL_COLOR_BUFFER_BIT); - - glPushMatrix(); - glRotatef(Rot, 0, 1, 0); - glEnable(TexTarget); - glBindTexture(TexTarget, TexObj); - - { - glBegin(GL_POLYGON); - glColor3f(0.25, 0.25, 0.25); - glTexCoord2f(0, 0); - glVertex2f(-1, -1); - glTexCoord2f(1, 0); - glVertex2f(1, -1); - glColor3f(1.0, 1.0, 1.0); - glTexCoord2f(1, 1); - glVertex2f(1, 1); - glTexCoord2f(0, 1); - glVertex2f(-1, 1); - glEnd(); - } - - glPopMatrix(); - glDisable(TexTarget); - - glutSwapBuffers(); - CheckError(__LINE__); -} - - -static void -Reshape(int width, int height) -{ - glViewport(0, 0, width, height); - Width = width; - Height = height; -} - - -static void -CleanUp(void) -{ - glDeleteFramebuffersEXT(1, &MyFB); - - glDeleteTextures(1, &TexObj); - - glutDestroyWindow(Win); - - exit(0); -} - - -static void -Key(unsigned char key, int x, int y) -{ - (void) x; - (void) y; - switch (key) { - case 'a': - Anim = !Anim; - if (Anim) - glutIdleFunc(Idle); - else - glutIdleFunc(NULL); - break; - case 's': - Rot += 2.0; - break; - case 27: - CleanUp(); - break; - } - glutPostRedisplay(); -} - - -static void -Init(int argc, char *argv[]) -{ - if (!glutExtensionSupported("GL_EXT_framebuffer_object")) { - printf("GL_EXT_framebuffer_object not found!\n"); - exit(0); - } - - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - - - /* Make texture object/image */ - glGenTextures(1, &TexObj); - glBindTexture(TexTarget, TexObj); - glTexParameteri(TexTarget, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(TexTarget, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexParameteri(TexTarget, GL_TEXTURE_BASE_LEVEL, TextureLevel); - glTexParameteri(TexTarget, GL_TEXTURE_MAX_LEVEL, TextureLevel); - - glTexImage2D(TexTarget, 0, TexIntFormat, TexWidth, TexHeight, 0, - GL_RGBA, GL_UNSIGNED_BYTE, NULL); - glTexImage2D(TexTarget, TextureLevel, TexIntFormat, - TexWidth / (1 << TextureLevel), TexHeight / (1 << TextureLevel), 0, - GL_RGBA, GL_UNSIGNED_BYTE, NULL); - - - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - - - - - /* gen framebuffer id, delete it, do some assertions, just for testing */ - glGenFramebuffersEXT(1, &MyFB); - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, MyFB); - assert(glIsFramebufferEXT(MyFB)); - - - CheckError(__LINE__); - - /* Render color to texture */ - glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, - TexTarget, TexObj, TextureLevel); - - - - CheckError(__LINE__); - - /* bind regular framebuffer */ - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); - - -} - - -int -main(int argc, char *argv[]) -{ - glutInit(&argc, argv); - glutInitWindowPosition(0, 0); - glutInitWindowSize(Width, Height); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); - Win = glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Display); - if (Anim) - glutIdleFunc(Idle); - Init(argc, argv); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-fbo-tex.c b/progs/trivial/tri-fbo-tex.c deleted file mode 100644 index eacb7d577b..0000000000 --- a/progs/trivial/tri-fbo-tex.c +++ /dev/null @@ -1,255 +0,0 @@ -/* Framebuffer object test */ - - -#include <GL/glew.h> -#include <GL/glut.h> -#include <assert.h> -#include <stdio.h> -#include <stdlib.h> - -/* For debug */ - - -static int Win = 0; -static int Width = 512, Height = 512; - -static GLenum TexTarget = GL_TEXTURE_2D; -static int TexWidth = 512, TexHeight = 512; - -static GLuint MyFB; -static GLuint TexObj; -static GLboolean Anim = GL_FALSE; -static GLfloat Rot = 0.0; -static GLuint TextureLevel = 0; /* which texture level to render to */ -static GLenum TexIntFormat = GL_RGB; /* either GL_RGB or GL_RGBA */ - - -static void -CheckError(int line) -{ - GLenum err = glGetError(); - if (err) { - printf("GL Error 0x%x at line %d\n", (int) err, line); - } -} - - -static void -Idle(void) -{ - Rot = glutGet(GLUT_ELAPSED_TIME) * 0.1; - glutPostRedisplay(); -} - - -static void -RenderTexture(void) -{ - GLenum status; - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, 5.0, 25.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0, 0.0, -15.0); - - if (1) { - /* draw to texture image */ - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, MyFB); - - status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT); - if (status != GL_FRAMEBUFFER_COMPLETE_EXT) { - printf("Framebuffer incomplete!!!\n"); - } - - glViewport(0, 0, TexWidth, TexHeight); - - glClearColor(0.5, 0.5, 1.0, 0.0); - glClear(GL_COLOR_BUFFER_BIT); - - CheckError(__LINE__); - - glBegin(GL_POLYGON); - glColor3f(1, 0, 0); - glVertex2f(-1, -1); - glColor3f(0, 1, 0); - glVertex2f(1, -1); - glColor3f(0, 0, 1); - glVertex2f(0, 1); - glEnd(); - - /* Bind normal framebuffer */ - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); - } - else { - } - - CheckError(__LINE__); -} - - - -static void -Display(void) -{ - float ar = (float) Width / (float) Height; - - RenderTexture(); - - /* draw textured quad in the window */ - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-ar, ar, -1.0, 1.0, 5.0, 25.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0, 0.0, -7.0); - - glViewport(0, 0, Width, Height); - - glClearColor(0.25, 0.25, 0.25, 0); - glClear(GL_COLOR_BUFFER_BIT); - - glPushMatrix(); - glRotatef(Rot, 0, 1, 0); - glEnable(TexTarget); - glBindTexture(TexTarget, TexObj); - - { - glBegin(GL_POLYGON); - glColor3f(0.25, 0.25, 0.25); - glTexCoord2f(0, 0); - glVertex2f(-1, -1); - glTexCoord2f(1, 0); - glVertex2f(1, -1); - glColor3f(1.0, 1.0, 1.0); - glTexCoord2f(1, 1); - glVertex2f(1, 1); - glTexCoord2f(0, 1); - glVertex2f(-1, 1); - glEnd(); - } - - glPopMatrix(); - glDisable(TexTarget); - - glutSwapBuffers(); - CheckError(__LINE__); -} - - -static void -Reshape(int width, int height) -{ - glViewport(0, 0, width, height); - Width = width; - Height = height; -} - - -static void -CleanUp(void) -{ - glDeleteFramebuffersEXT(1, &MyFB); - - glDeleteTextures(1, &TexObj); - - glutDestroyWindow(Win); - - exit(0); -} - - -static void -Key(unsigned char key, int x, int y) -{ - (void) x; - (void) y; - switch (key) { - case 'a': - Anim = !Anim; - if (Anim) - glutIdleFunc(Idle); - else - glutIdleFunc(NULL); - break; - case 's': - Rot += 2.0; - break; - case 27: - CleanUp(); - break; - } - glutPostRedisplay(); -} - - -static void -Init(int argc, char *argv[]) -{ - if (!glutExtensionSupported("GL_EXT_framebuffer_object")) { - printf("GL_EXT_framebuffer_object not found!\n"); - exit(0); - } - - printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - - - /* Make texture object/image */ - glGenTextures(1, &TexObj); - glBindTexture(TexTarget, TexObj); - glTexParameteri(TexTarget, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(TexTarget, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexParameteri(TexTarget, GL_TEXTURE_BASE_LEVEL, TextureLevel); - glTexParameteri(TexTarget, GL_TEXTURE_MAX_LEVEL, TextureLevel); - - glTexImage2D(TexTarget, 0, TexIntFormat, TexWidth, TexHeight, 0, - GL_RGBA, GL_UNSIGNED_BYTE, NULL); - - - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - - - - - /* gen framebuffer id, delete it, do some assertions, just for testing */ - glGenFramebuffersEXT(1, &MyFB); - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, MyFB); - assert(glIsFramebufferEXT(MyFB)); - - - CheckError(__LINE__); - - /* Render color to texture */ - glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, - TexTarget, TexObj, TextureLevel); - - - - CheckError(__LINE__); - - /* bind regular framebuffer */ - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); - - -} - - -int -main(int argc, char *argv[]) -{ - glutInit(&argc, argv); - glutInitWindowPosition(0, 0); - glutInitWindowSize(Width, Height); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); - Win = glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Display); - if (Anim) - glutIdleFunc(Idle); - Init(argc, argv); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-fbo.c b/progs/trivial/tri-fbo.c deleted file mode 100644 index 089180f97a..0000000000 --- a/progs/trivial/tri-fbo.c +++ /dev/null @@ -1,203 +0,0 @@ - -#include <assert.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <string.h> - -#include <GL/glew.h> -#include <GL/glut.h> - - - -static int Width = 400, Height = 400; -static GLuint MyFB, MyRB; - - -#define CheckError() assert(glGetError() == 0) - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - - if (!glutExtensionSupported("GL_EXT_framebuffer_object")) { - printf("GL_EXT_framebuffer_object not found!\n"); - exit(0); - } - - - glGenFramebuffersEXT(1, &MyFB); - glGenRenderbuffersEXT(1, &MyRB); - - { - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, MyFB); - - glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, MyRB); - - glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT1_EXT, - GL_RENDERBUFFER_EXT, MyRB); - - glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_RGB, Width, Height); - - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); - } - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - - - -static void -Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode( GL_MODELVIEW ); - - Width = width; - Height = height; - glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_RGB, Width, Height); -} - - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - - - -static void Draw( void ) -{ - - /* draw to user framebuffer */ - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, MyFB); - glDrawBuffer(GL_COLOR_ATTACHMENT1_EXT); - glReadBuffer(GL_COLOR_ATTACHMENT1_EXT); - - glClearColor(0.5, 0.5, 1.0, 0.0); - glClear(GL_COLOR_BUFFER_BIT); - CheckError(); - - glBegin(GL_TRIANGLES); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(0,.9,0); - glVertex3f(-0.9, 0.0, -30.0); - glEnd(); - - - { - GLubyte *buffer = malloc(Width * Height * 4); - - /* read from user framebuffer */ - glReadPixels(0, 0, Width-60, Height-60, GL_RGBA, GL_UNSIGNED_BYTE, buffer); - CheckError(); - - /* draw to window */ - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); - /* Try to clear the window, but will overwrite: - */ - glClearColor(0.8, 0.8, 0, 0.0); - glClear(GL_COLOR_BUFFER_BIT); - - glWindowPos2iARB(30, 30); - glDrawPixels(Width-60, Height-60, GL_RGBA, GL_UNSIGNED_BYTE, buffer); - - - free(buffer); - } - - /* Bind normal framebuffer */ - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); - - if (1) { - glBegin(GL_TRIANGLES); - glColor3f(0,.7,0); - glVertex3f( 0.5, -0.5, -30.0); - glColor3f(0,0,.8); - glVertex3f( 0.5, 0.5, -30.0); - glColor3f(.9,0,0); - glVertex3f(-0.5, 0.0, -30.0); - glEnd(); - } - - if (doubleBuffer) - glutSwapBuffers(); - else - glFinish(); - - CheckError(); -} - - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - - - -int -main( int argc, char *argv[] ) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(100, 0); glutInitWindowSize( Width, Height ); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(argv[0]) == GL_FALSE) { - exit(1); - } - - glewInit(); - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-flat-clip.c b/progs/trivial/tri-flat-clip.c deleted file mode 100644 index a23f8a382b..0000000000 --- a/progs/trivial/tri-flat-clip.c +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.5, 0.5, 0.5, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glShadeModel(GL_FLAT); - - glBegin(GL_TRIANGLES); - glColor3f(0,0,1); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(1,0,0); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(0,1,0); - glVertex3f(-1.9, 0.0, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-flat.c b/progs/trivial/tri-flat.c deleted file mode 100644 index 0614321844..0000000000 --- a/progs/trivial/tri-flat.c +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.5, 0.5, 0.5, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glShadeModel(GL_FLAT); - - glBegin(GL_TRIANGLES); - glColor3f(0,0,1); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(1,0,0); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(0,1,0); - glVertex3f(-0.9, 0.0, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-fog.c b/progs/trivial/tri-fog.c deleted file mode 100644 index 7fc254a467..0000000000 --- a/progs/trivial/tri-fog.c +++ /dev/null @@ -1,162 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - -GLint Width = 250, Height = 250; - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); - - glEnable(GL_FOG); - glFogi(GL_FOG_MODE, GL_LINEAR); - glFogf(GL_FOG_START, 25); - glFogf(GL_FOG_END, 35); -#if 0 - glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glEnable (GL_BLEND); -#endif -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glEnable(GL_FOG); - - glBegin(GL_TRIANGLES); - glColor3f(1,1,1); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(1,1,1); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(1,1,1); - glVertex3f(-0.9, 0.0, -40.0); - glEnd(); - -#if 0 - glBegin(GL_TRIANGLES); - glColor3f(0,0,.7); - glVertex3f(-0.9, -0.9, -30.0); - glColor3f(.8,0,0); - glVertex3f(-0.9, 0.9, -30.0); - glColor3f(0,.9,0); - glVertex3f( 0.9, 0.0, -30.0); - glEnd(); -#endif - - glDisable(GL_FOG); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(100, 0); glutInitWindowSize(Width, Height); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-fp-const-imm.c b/progs/trivial/tri-fp-const-imm.c deleted file mode 100644 index accea62042..0000000000 --- a/progs/trivial/tri-fp-const-imm.c +++ /dev/null @@ -1,172 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glew.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - GLint errno; - GLuint prognum; - static const char *prog1 = - "!!ARBfp1.0\n" - "TEMP R1;\n" - "MOV R1, state.material.emission;\n" - "MUL R1, R1, {0.9}.x;\n" - "MOV result.color, R1;\n" - "END\n"; - - - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - /* Setup the fragment program */ - glGenProgramsARB(1, &prognum); - glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, prognum); - glProgramStringARB(GL_FRAGMENT_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, - strlen(prog1), (const GLubyte *)prog1); - - errno = glGetError(); - printf("glGetError = 0x%x\n", errno); - if (errno != GL_NO_ERROR) { - GLint errorpos; - - glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &errorpos); - printf("errorpos: %d\n", errorpos); - printf("glError(GL_PROGRAM_ERROR_STRING_ARB) = %s\n", - (char *) glGetString(GL_PROGRAM_ERROR_STRING_ARB)); - } - glEnable(GL_FRAGMENT_PROGRAM_ARB); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); -/* glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); */ - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_TRIANGLES); - glColor3f(0,0,.7); - glTexCoord3f(0,0,.7); - glVertex3f( 0.9, -0.9, -0.0); - glColor3f(.8,0,0); - glTexCoord3f(.8,0,0); - glVertex3f( 0.9, 0.9, -0.0); - glColor3f(0,.9,0); - glTexCoord3f(0,.9,0); - glVertex3f(-0.9, 0.0, -0.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - glewInit(); - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-fp.c b/progs/trivial/tri-fp.c deleted file mode 100644 index 6ecfef4d2a..0000000000 --- a/progs/trivial/tri-fp.c +++ /dev/null @@ -1,170 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glew.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - GLint errno; - GLuint prognum; - static const char *prog1 = - "!!ARBfp1.0\n" - "MOV result.color, fragment.texcoord[1];\n" - /* "MOV result.color, fragment.color;\n" */ - "END\n"; - - - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - /* Setup the fragment program */ - glGenProgramsARB(1, &prognum); - glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, prognum); - glProgramStringARB(GL_FRAGMENT_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, - strlen(prog1), (const GLubyte *)prog1); - - errno = glGetError(); - printf("glGetError = 0x%x\n", errno); - if (errno != GL_NO_ERROR) { - GLint errorpos; - - glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &errorpos); - printf("errorpos: %d\n", errorpos); - printf("glError(GL_PROGRAM_ERROR_STRING_ARB) = %s\n", - (char *) glGetString(GL_PROGRAM_ERROR_STRING_ARB)); - } - glEnable(GL_FRAGMENT_PROGRAM_ARB); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); -/* glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); */ - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_TRIANGLES); - glColor3f(0,0,.7); - glTexCoord3f(0,0,.7); - glVertex3f( 0.9, -0.9, -0.0); - glColor3f(.8,0,0); - glTexCoord3f(.8,0,0); - glVertex3f( 0.9, 0.9, -0.0); - glColor3f(0,.9,0); - glTexCoord3f(0,.9,0); - glVertex3f(-0.9, 0.0, -0.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - glewInit(); - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-lit-material.c b/progs/trivial/tri-lit-material.c deleted file mode 100644 index 16cebb2b98..0000000000 --- a/progs/trivial/tri-lit-material.c +++ /dev/null @@ -1,149 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); -/* glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); */ - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - static GLfloat red[4] = {0.8, 0.1, 0.0, 1.0}; - static GLfloat green[4] = {0.0, 0.8, 0.2, 1.0}; - static GLfloat blue[4] = {0.2, 0.2, .9, 1.0}; - - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_TRIANGLES); - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, blue); - glNormal3f(0,0,.7); - glVertex3f( 0.9, -0.9, -0.0); - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, green); - glNormal3f(0,0,.8); - glVertex3f( 0.9, 0.9, -0.0); - - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, red); - glNormal3f(0,0,.9); - glVertex3f(-0.9, 0.0, -0.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-lit.c b/progs/trivial/tri-lit.c deleted file mode 100644 index 26ebd99d91..0000000000 --- a/progs/trivial/tri-lit.c +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); -/* glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); */ - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_TRIANGLES); - glNormal3f(0,0,.7); - glVertex3f( 0.9, -0.9, -0.0); - glNormal3f(.8,0,0); - glVertex3f( 0.9, 0.9, -0.0); - glNormal3f(0,.9,0); - glVertex3f(-0.9, 0.0, -0.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-logicop-none.c b/progs/trivial/tri-logicop-none.c deleted file mode 100644 index 2b6a3d6f5c..0000000000 --- a/progs/trivial/tri-logicop-none.c +++ /dev/null @@ -1,179 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer = 1; -int win; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.3, 0.1, 0.3, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - switch (key) { - case 27: - exit(0); - default: - glutPostRedisplay(); - return; - } -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_TRIANGLES); - glColor3f(.8,0,0); - glVertex3f(-0.9, -0.9, -30.0); - glColor3f(0,.9,0); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(0,0,.7); - glVertex3f( 0.0, 0.9, -30.0); - glEnd(); - - - glLineWidth(4.0); - - glBegin(GL_LINES); - glColor3f(.1,.7,.1); - glVertex3f( 0.5, -0.5, -30.0); - glVertex3f( 0.5, 0.5, -30.0); - - glColor3f(.1,.1,.8); - glVertex3f( 0.5, 0.5, -30.0); - glVertex3f(-0.5, 0.5, -30.0); - - glColor3f(.5,.1,.1); - glVertex3f(-0.5, 0.5, -30.0); - glVertex3f(-0.5, -0.5, -30.0); - - glColor3f(.8,.8,.8); - glVertex3f(-0.5, -0.5, -30.0); - glVertex3f( 0.5, -0.5, -30.0); - glEnd(); - - /* glLineWidth(12.0); */ - - /* Redraw parts of the lines: - */ - glBegin(GL_LINES); - glColor3f(.1,.7,.1); - glVertex3f( 0.5, -0.2, -30.0); - glVertex3f( 0.5, 0.2, -30.0); - - glColor3f(.1,.1,.8); - glVertex3f( 0.2, 0.5, -30.0); - glVertex3f(-0.2, 0.5, -30.0); - - glColor3f(.5,.1,.1); - glVertex3f(-0.5, 0.2, -30.0); - glVertex3f(-0.5, -0.2, -30.0); - - glColor3f(.8,.8,.8); - glVertex3f(-0.2, -0.5, -30.0); - glVertex3f( 0.2, -0.5, -30.0); - glEnd(); - - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - win = glutCreateWindow(*argv); - if (!win) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-logicop-xor.c b/progs/trivial/tri-logicop-xor.c deleted file mode 100644 index b8207cd6d8..0000000000 --- a/progs/trivial/tri-logicop-xor.c +++ /dev/null @@ -1,187 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer = 1; -int win; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.3, 0.1, 0.3, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - switch (key) { - case 27: - exit(0); - default: - glutPostRedisplay(); - return; - } -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_TRIANGLES); - glColor3f(.8,0,0); - glVertex3f(-0.9, -0.9, -30.0); - glColor3f(0,.9,0); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(0,0,.7); - glVertex3f( 0.0, 0.9, -30.0); - glEnd(); - - - glLineWidth(4.0); - - glEnable(GL_BLEND); - glEnable(GL_COLOR_LOGIC_OP); - glLogicOp(GL_XOR); - - glBegin(GL_LINES); - glColor3f(.1,.7,.1); - glVertex3f( 0.5, -0.5, -30.0); - glVertex3f( 0.5, 0.5, -30.0); - - glColor3f(.1,.1,.8); - glVertex3f( 0.5, 0.5, -30.0); - glVertex3f(-0.5, 0.5, -30.0); - - glColor3f(.5,.1,.1); - glVertex3f(-0.5, 0.5, -30.0); - glVertex3f(-0.5, -0.5, -30.0); - - glColor3f(.8,.8,.8); - glVertex3f(-0.5, -0.5, -30.0); - glVertex3f( 0.5, -0.5, -30.0); - glEnd(); - - /* glLineWidth(12.0); */ - - /* Redraw parts of the lines to remove them: - */ - glBegin(GL_LINES); - glColor3f(.1,.7,.1); - glVertex3f( 0.5, -0.2, -30.0); - glVertex3f( 0.5, 0.2, -30.0); - - glColor3f(.1,.1,.8); - glVertex3f( 0.2, 0.5, -30.0); - glVertex3f(-0.2, 0.5, -30.0); - - glColor3f(.5,.1,.1); - glVertex3f(-0.5, 0.2, -30.0); - glVertex3f(-0.5, -0.2, -30.0); - - glColor3f(.8,.8,.8); - glVertex3f(-0.2, -0.5, -30.0); - glVertex3f( 0.2, -0.5, -30.0); - glEnd(); - - - - glDisable(GL_COLOR_LOGIC_OP); - glDisable(GL_BLEND); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - win = glutCreateWindow(*argv); - if (!win) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-mask-tri.c b/progs/trivial/tri-mask-tri.c deleted file mode 100644 index d62620905d..0000000000 --- a/progs/trivial/tri-mask-tri.c +++ /dev/null @@ -1,154 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -GLint Width = 250, Height = 250; -GLenum doubleBuffer; -GLint Win; -GLboolean Rmask = GL_TRUE, Gmask = GL_FALSE, Bmask = GL_TRUE; - - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - glViewport(0, 0, (GLint)width, (GLint)height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - switch (key) { - case 'r': - Rmask = !Rmask; - break; - case 'g': - Gmask = !Gmask; - break; - case 'b': - Bmask = !Bmask; - break; - case 27: - glutDestroyWindow(Win); - exit(1); - default: - return; - } - glutPostRedisplay(); -} - -static void Draw(void) -{ - printf("ColorMask = %d, %d, %d\n", Rmask, Gmask, Bmask); - glColorMask(1,1,1,1); - - glClear(GL_COLOR_BUFFER_BIT); - - /* right triangle: green */ - glBegin(GL_TRIANGLES); - glColor3f(0,1,0); - glVertex3f( 0.9, -0.9, -30.0); - glVertex3f( 0.9, 0.9, -30.0); - glVertex3f(-0.9, 0.0, -30.0); - glEnd(); - - glColorMask(Rmask, Gmask, Bmask, 0); - - /* left triangle: white&mask: purple middle region: white */ - glBegin(GL_TRIANGLES); - glColor3f(1,1,1); - glVertex3f(-0.9, -0.9, -30.0); - glVertex3f(-0.9, 0.9, -30.0); - glVertex3f( 0.9, 0.0, -30.0); - glEnd(); - - glDisable(GL_SCISSOR_TEST); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } - else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } - else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - - glutInitWindowPosition(100, 0); glutInitWindowSize(Width, Height); - glutInitDisplayMode(type); - Win = glutCreateWindow(*argv); - Init(); - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-multitex-vbo.c b/progs/trivial/tri-multitex-vbo.c deleted file mode 100644 index ca4edaa5dd..0000000000 --- a/progs/trivial/tri-multitex-vbo.c +++ /dev/null @@ -1,261 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glew.h> -#include <GL/glut.h> - -#define NR_VERTS 4 - -struct { - GLfloat position[NR_VERTS][4]; - GLubyte color[NR_VERTS][4]; - GLfloat tex0[NR_VERTS][2]; - GLfloat tex1[NR_VERTS][2]; -} verts = { - - { { 0.9, -0.9, 0.0, 1.0 }, - { 0.9, 0.9, 0.0, 1.0 }, - { -0.9, 0.9, 0.0, 1.0 }, - { -0.9, -0.9, 0.0, 1.0 } }, - - { { 0x00, 0x00, 0xff, 0x00 }, - { 0x00, 0xff, 0x00, 0x00 }, - { 0xff, 0x00, 0x00, 0x00 }, - { 0xff, 0xff, 0xff, 0x00 } - }, - - { { 1, -1 }, - { 1, 1 }, - { -1, 1 }, - { -1, -1 } }, - - { { 3, 0 }, - { 0, 3 }, - { -3, 0 }, - { 0, -3} }, - -}; - -GLuint indices[] = { 0, 1, 2, 3 }; - -GLuint arrayObj, elementObj; - - -GLenum doubleBuffer; - - -#define Offset(ptr, member) (void *)((const char *)&((ptr)->member) - (const char *)(ptr)) - -static void Init(void) -{ - GLuint texObj[2]; - - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); - - glGenTextures(2, texObj); - -#define SIZE 32 - { - GLubyte tex2d[SIZE][SIZE][3]; - GLint s, t; - - for (s = 0; s < SIZE; s++) { - for (t = 0; t < SIZE; t++) { - tex2d[t][s][0] = s*255/(SIZE-1); - tex2d[t][s][1] = t*255/(SIZE-1); - tex2d[t][s][2] = 0; - } - } - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glActiveTextureARB(GL_TEXTURE0_ARB); - glBindTexture(GL_TEXTURE_2D, texObj[0]); - - - glTexImage2D(GL_TEXTURE_2D, 0, 3, SIZE, SIZE, 0, - GL_RGB, GL_UNSIGNED_BYTE, tex2d); - - glEnable(GL_TEXTURE_2D); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_R, GL_REPEAT); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - - glPixelStorei(GL_UNPACK_ALIGNMENT, 4); - } - - { - GLubyte tex2d[SIZE][SIZE][3]; - GLint s, t; - - for (s = 0; s < SIZE; s++) { - for (t = 0; t < SIZE; t++) { - GLboolean on = ((s/4) ^ (t/4)) & 1; - tex2d[t][s][0] = on ? 128 : 0; - tex2d[t][s][1] = on ? 128 : 0; - tex2d[t][s][2] = on ? 128 : 0; - } - } - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glActiveTextureARB(GL_TEXTURE1_ARB); - glBindTexture(GL_TEXTURE_2D, texObj[1]); - - glTexImage2D(GL_TEXTURE_2D, 0, 3, SIZE, SIZE, 0, - GL_RGB, GL_UNSIGNED_BYTE, tex2d); - - glEnable(GL_TEXTURE_2D); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_ADD); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_R, GL_REPEAT); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - - glPixelStorei(GL_UNPACK_ALIGNMENT, 4); - } - - glActiveTextureARB( GL_TEXTURE0_ARB ); - - - { - - glGenBuffersARB(1, &arrayObj); - glGenBuffersARB(1, &elementObj); - - glBindBufferARB(GL_ARRAY_BUFFER_ARB, arrayObj); - glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, elementObj); - - glBufferDataARB(GL_ARRAY_BUFFER_ARB, sizeof(verts), &verts, GL_STATIC_DRAW_ARB); - glBufferDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, sizeof(indices), indices, GL_STATIC_DRAW_ARB); - - glEnableClientState( GL_VERTEX_ARRAY ); - glVertexPointer( 4, GL_FLOAT, 0, Offset(&verts, position) ); - - glEnableClientState( GL_COLOR_ARRAY ); - glColorPointer( 4, GL_UNSIGNED_BYTE, 0, Offset(&verts, color) ); - - glClientActiveTextureARB( GL_TEXTURE0_ARB ); - glEnableClientState( GL_TEXTURE_COORD_ARRAY ); - glTexCoordPointer( 2, GL_FLOAT, 0, Offset(&verts, tex0) ); - - glClientActiveTextureARB( GL_TEXTURE1_ARB ); - glEnableClientState( GL_TEXTURE_COORD_ARRAY ); - glTexCoordPointer( 2, GL_FLOAT, 0, Offset(&verts, tex1) ); - - glClientActiveTextureARB( GL_TEXTURE0_ARB ); - } -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); -/* glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); */ - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glDrawElements( GL_TRIANGLES, 3, GL_UNSIGNED_INT, NULL ); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - glewInit(); - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-orig.c b/progs/trivial/tri-orig.c deleted file mode 100644 index d86d34c39d..0000000000 --- a/progs/trivial/tri-orig.c +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); -/* glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); */ - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_TRIANGLES); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, -0.0); - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, -0.0); - glColor3f(0,.9,0); - glVertex3f(-0.9, 0.0, -0.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-query.c b/progs/trivial/tri-query.c deleted file mode 100644 index 8898f182c7..0000000000 --- a/progs/trivial/tri-query.c +++ /dev/null @@ -1,166 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glew.h> -#include <GL/glut.h> - - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - -static GLuint OccQuery; - -GLenum doubleBuffer; - -static void Init(void) -{ - if (!glutExtensionSupported("GL_ARB_occlusion_query")) { - fprintf(stderr, "Sorry, this program requires GL_ARB_occlusion_query\n"); - exit(1); - } - - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); - - glGenQueriesARB(1, &OccQuery); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - GLuint passed; - GLint ready; - - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); - - glEnable(GL_DEPTH_TEST); - - glBeginQueryARB(GL_SAMPLES_PASSED_ARB, OccQuery); - - glBegin(GL_TRIANGLES); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(0,.9,0); - glVertex3f(-0.9, 0.0, -30.0); - glEnd(); - - glEndQueryARB(GL_SAMPLES_PASSED_ARB); - - do { - /* do useful work here, if any */ - glGetQueryObjectivARB(OccQuery, GL_QUERY_RESULT_AVAILABLE_ARB, &ready); - } while (!ready); - glGetQueryObjectuivARB(OccQuery, GL_QUERY_RESULT_ARB, &passed); - - fprintf(stderr, " %d Fragments Visible\n", passed); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(100, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_DEPTH; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - glewInit(); - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-repeat.c b/progs/trivial/tri-repeat.c deleted file mode 100644 index 91e355c71f..0000000000 --- a/progs/trivial/tri-repeat.c +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.3, 0.1, 0.3, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - switch (key) { - case 27: - exit(0); - default: - glutPostRedisplay(); - return; - } -} - -static void Draw(void) -{ - static float f = 0; - f += .1; - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_TRIANGLES); - glColor3f((sin(f)+1)/2.0,0,0); - glVertex3f(-0.9, -0.9, -30.0); - glColor3f(0,(cos(f)+1)/2.0,0); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(0,0,.7); - glVertex3f( 0.0, 0.9, -30.0); - glEnd(); - - glutSwapBuffers(); - glutPostRedisplay(); -} - -static GLenum Args(int argc, char **argv) -{ - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= GLUT_DOUBLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-scissor-tri.c b/progs/trivial/tri-scissor-tri.c deleted file mode 100644 index d65502d91b..0000000000 --- a/progs/trivial/tri-scissor-tri.c +++ /dev/null @@ -1,152 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - -GLint Width = 250, Height = 250; - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_TRIANGLES); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(0,.9,0); - glVertex3f(-0.9, 0.0, -30.0); - glEnd(); - - glScissor(Width / 4, Height / 4, Width / 2, Height / 2); - glEnable(GL_SCISSOR_TEST); - - glBegin(GL_TRIANGLES); - glColor3f(0,0,.7); - glVertex3f(-0.9, -0.9, -30.0); - glColor3f(.8,0,0); - glVertex3f(-0.9, 0.9, -30.0); - glColor3f(0,.9,0); - glVertex3f( 0.9, 0.0, -30.0); - glEnd(); - - glDisable(GL_SCISSOR_TEST); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(100, 0); glutInitWindowSize(Width, Height); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-square.c b/progs/trivial/tri-square.c deleted file mode 100644 index 2014bd489c..0000000000 --- a/progs/trivial/tri-square.c +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluOrtho2D(0, (GLdouble)width, 0, (GLdouble)height); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glColor3f(1,1,1); - - glBegin(GL_TRIANGLES); - glVertex3f( 10, 10, -30.0); - glVertex3f( 200, 150, -30.0); - glVertex3f( 10, 200, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(100, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-stencil.c b/progs/trivial/tri-stencil.c deleted file mode 100644 index 9f68bca914..0000000000 --- a/progs/trivial/tri-stencil.c +++ /dev/null @@ -1,158 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <math.h> -#include <GL/glut.h> - - -static void Init(void) -{ -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-5.0, 5.0, -5.0, 5.0, -5.0, 5.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - printf("Exiting...\n"); - exit(1); - case 'r': - printf("Redisplaying...\n"); - glutPostRedisplay(); - break; - default: - printf("No such key '%c'...\n", key); - break; - } -} - -static void Draw(void) -{ - glShadeModel(GL_FLAT); - - { - glClearColor(0.0, 0.0, 0.0, 0.0); - glClearStencil(0); - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT|GL_STENCIL_BUFFER_BIT); - } - - - glStencilMask(1); - glEnable(GL_STENCIL_TEST); - glStencilFunc(GL_ALWAYS, 1, 1); - glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE); - - glColor3ub(200, 0, 0); - glBegin(GL_POLYGON); - glVertex3i(-4, -4, 0); - glVertex3i( 4, -4, 0); - glVertex3i( 0, 4, 0); - glEnd(); - -#if 1 - glStencilFunc(GL_EQUAL, 1, 1); - glStencilOp(GL_INCR, GL_KEEP, GL_DECR); - - glColor3ub(0, 200, 0); - glBegin(GL_POLYGON); - glVertex3i(3, 3, 0); - glVertex3i(-3, 3, 0); - glVertex3i(-3, -3, 0); - glVertex3i(3, -3, 0); - glEnd(); -#endif - -#if 1 - glStencilFunc(GL_EQUAL, 1, 1); - glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); - - glColor3ub(0, 0, 200); - glBegin(GL_POLYGON); - glVertex3f(2.5, 2.5, 0); - glVertex3f(-2.5, 2.5, 0); - glVertex3f(-2.5, -2.5, 0); - glVertex3f(2.5, -2.5, 0); - glEnd(); -#endif - - glFlush(); -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-dr") == 0) { - } else { - printf("%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); - glutInitWindowSize( 300, 300); - - type = GLUT_RGB | GLUT_SINGLE | GLUT_DEPTH | GLUT_STENCIL; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-stipple.c b/progs/trivial/tri-stipple.c deleted file mode 100644 index 15a08fec7c..0000000000 --- a/progs/trivial/tri-stipple.c +++ /dev/null @@ -1,152 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - -static GLubyte fly[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x03, 0x80, 0x01, 0xC0, 0x06, 0xC0, 0x03, 0x60, 0x04, 0x60, 0x06, 0x20, -0x04, 0x30, 0x0C, 0x20, 0x04, 0x18, 0x18, 0x20, 0x04, 0x0C, 0x30, 0x20, -0x04, 0x06, 0x60, 0x20, 0x44, 0x03, 0xC0, 0x22, 0x44, 0x01, 0x80, 0x22, -0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 0x80, 0x22, -0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 0x80, 0x22, 0x66, 0x01, 0x80, 0x66, -0x33, 0x01, 0x80, 0xCC, 0x19, 0x81, 0x81, 0x98, 0x0C, 0xC1, 0x83, 0x30, -0x07, 0xe1, 0x87, 0xe0, 0x03, 0x3f, 0xfc, 0xc0, 0x03, 0x31, 0x8c, 0xc0, -0x03, 0x33, 0xcc, 0xc0, 0x06, 0x64, 0x26, 0x60, 0x0c, 0xcc, 0x33, 0x30, -0x18, 0xcc, 0x33, 0x18, 0x10, 0xc4, 0x23, 0x08, 0x10, 0x63, 0xC6, 0x08, -0x10, 0x30, 0x0c, 0x08, 0x10, 0x18, 0x18, 0x08, 0x10, 0x00, 0x00, 0x08}; - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glEnable (GL_POLYGON_STIPPLE); - glPolygonStipple (fly); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); -/* glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); */ - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_TRIANGLES); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, -0.0); - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, -0.0); - glColor3f(0,.9,0); - glVertex3f(-0.9, 0.0, -0.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-tex-3d.c b/progs/trivial/tri-tex-3d.c deleted file mode 100644 index 073a080d7a..0000000000 --- a/progs/trivial/tri-tex-3d.c +++ /dev/null @@ -1,174 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glew.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); - -#define SIZE 16 - { - GLubyte tex3d[SIZE][SIZE][SIZE][3]; - GLint r, s, t; - - for (s = 0; s < SIZE; s++) { - for (t = 0; t < SIZE; t++) { - for (r = 0; r < SIZE; r++) { -#if 0 - tex3d[r][t][s][0] = (s < SIZE/2) ? 0 : 255; - tex3d[r][t][s][1] = (t < SIZE/2) ? 0 : 255; - tex3d[r][t][s][2] = (r < SIZE/2) ? 0 : 255; -#else - tex3d[r][t][s][0] = s*255/(SIZE-1); - tex3d[r][t][s][1] = t*255/(SIZE-1); - tex3d[r][t][s][2] = r*255/(SIZE-1); -#endif - } - } - } - - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - glTexParameterf(GL_TEXTURE_3D, GL_TEXTURE_WRAP_R, GL_REPEAT); - glTexParameterf(GL_TEXTURE_3D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameterf(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glTexImage3D(GL_TEXTURE_3D, 0, 3, SIZE, SIZE, SIZE, 0, - GL_RGB, GL_UNSIGNED_BYTE, tex3d); - glPixelStorei(GL_UNPACK_ALIGNMENT, 4); - glEnable(GL_TEXTURE_3D); - } - -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_TRIANGLES); - glTexCoord3f( 0,0,.9); - glVertex3f( 0.9, -0.9, -30.0); - glTexCoord3f(.9,0,0); - glVertex3f( 0.9, 0.9, -30.0); - glTexCoord3f(0,.9,0); - glVertex3f(-0.9, 0.0, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - glewInit(); - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-tex.c b/progs/trivial/tri-tex.c deleted file mode 100644 index 244e154504..0000000000 --- a/progs/trivial/tri-tex.c +++ /dev/null @@ -1,169 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); - - -#define SIZE 32 - { - GLubyte tex2d[SIZE][SIZE][3]; - GLint s, t; - - for (s = 0; s < SIZE; s++) { - for (t = 0; t < SIZE; t++) { -#if 0 - tex2d[t][s][0] = (s < SIZE/2) ? 0 : 255; - tex2d[t][s][1] = (t < SIZE/2) ? 0 : 255; - tex2d[t][s][2] = 0; -#else - tex2d[t][s][0] = s*255/(SIZE-1); - tex2d[t][s][1] = t*255/(SIZE-1); - tex2d[t][s][2] = 0; -#endif - } - } - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - - glTexImage2D(GL_TEXTURE_2D, 0, 3, SIZE, SIZE, 0, - GL_RGB, GL_UNSIGNED_BYTE, tex2d); - - glEnable(GL_TEXTURE_2D); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_R, GL_REPEAT); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - - glPixelStorei(GL_UNPACK_ALIGNMENT, 4); - } - -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); -/* glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); */ - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_TRIANGLES); - glTexCoord2f(1,-1); - glVertex3f( 0.9, -0.9, -0.0); - glTexCoord2f(1,1); - glVertex3f( 0.9, 0.9, -0.0); - glTexCoord2f(-1,0); - glVertex3f(-0.9, 0.0, -0.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-tri.c b/progs/trivial/tri-tri.c deleted file mode 100644 index 7bf400793e..0000000000 --- a/progs/trivial/tri-tri.c +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_TRIANGLES); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(0,.9,0); - glVertex3f(-0.9, 0.0, -30.0); - glEnd(); - - glBegin(GL_TRIANGLES); - glColor3f(0,0,.7); - glVertex3f(-0.9, -0.9, -30.0); - glColor3f(.8,0,0); - glVertex3f(-0.9, 0.9, -30.0); - glColor3f(0,.9,0); - glVertex3f( 0.9, 0.0, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(100, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-unfilled-clip.c b/progs/trivial/tri-unfilled-clip.c deleted file mode 100644 index 585919e16d..0000000000 --- a/progs/trivial/tri-unfilled-clip.c +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - - glBegin(GL_TRIANGLES); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(0,.9,0); - glVertex3f(-1.9, 0.0, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-unfilled-edgeflag.c b/progs/trivial/tri-unfilled-edgeflag.c deleted file mode 100644 index f536f64229..0000000000 --- a/progs/trivial/tri-unfilled-edgeflag.c +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); -/* glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); */ - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glPolygonMode(GL_FRONT, GL_LINE); - glPolygonMode(GL_BACK, GL_LINE); - - glBegin(GL_TRIANGLES); - glEdgeFlag(1); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, -0.0); - glEdgeFlag(0); - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, -0.0); - glEdgeFlag(1); - glColor3f(0,.9,0); - glVertex3f(-0.9, 0.0, -0.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-unfilled-fog.c b/progs/trivial/tri-unfilled-fog.c deleted file mode 100644 index c6ecc705b3..0000000000 --- a/progs/trivial/tri-unfilled-fog.c +++ /dev/null @@ -1,153 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - -GLint Width = 250, Height = 250; - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - switch (key) { - case 27: - exit(1); - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glEnable(GL_FOG); - - glPolygonMode(GL_FRONT, GL_FILL); - glPolygonMode(GL_BACK, GL_FILL); - - glBegin(GL_TRIANGLES); - glColor3f(0,0,.7); - glVertex3f( 0.7, -0.7, -30.0); - glColor3f(.8,0,0); - glVertex3f( 0.7, 0.7, -30.0); - glColor3f(0,.9,0); - glVertex3f(-0.7, 0.0, -30.0); - glEnd(); - - glPolygonMode(GL_FRONT, GL_LINE); - glPolygonMode(GL_BACK, GL_LINE); - - glBegin(GL_TRIANGLES); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(0,.9,0); - glVertex3f(-0.9, 0.0, -30.0); - glEnd(); - - glDisable(GL_FOG); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(100, 0); glutInitWindowSize(Width, Height); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-unfilled-point.c b/progs/trivial/tri-unfilled-point.c deleted file mode 100644 index 11e276e1a5..0000000000 --- a/progs/trivial/tri-unfilled-point.c +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); -/* glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); */ - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glPolygonMode(GL_FRONT, GL_POINT); - glPolygonMode(GL_BACK, GL_POINT); - - glBegin(GL_TRIANGLES); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, -0.0); - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, -0.0); - glColor3f(0,.9,0); - glVertex3f(-0.9, 0.0, -0.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-unfilled-smooth.c b/progs/trivial/tri-unfilled-smooth.c deleted file mode 100644 index fa31667e65..0000000000 --- a/progs/trivial/tri-unfilled-smooth.c +++ /dev/null @@ -1,151 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); -/* glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); */ - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glEnable(GL_LINE_SMOOTH); - - glBegin(GL_TRIANGLES); - glColor3f(0,0,.7); - glVertex3f( 0.6, -0.6, -0.0); - glColor3f(.8,0,0); - glVertex3f( 0.6, 0.6, -0.0); - glColor3f(0,.9,0); - glVertex3f(-0.6, 0.0, -0.0); - glEnd(); - - glPolygonMode(GL_FRONT, GL_LINE); -/* glPolygonMode(GL_BACK, GL_LINE); */ - - glBegin(GL_TRIANGLES); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, -0.0); - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, -0.0); - glColor3f(0,.9,0); - glVertex3f(-0.9, 0.0, -0.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-unfilled-tri-lit.c b/progs/trivial/tri-unfilled-tri-lit.c deleted file mode 100644 index d6baeb4697..0000000000 --- a/progs/trivial/tri-unfilled-tri-lit.c +++ /dev/null @@ -1,179 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); -/* glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); */ - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glPolygonMode(GL_FRONT, GL_LINE); - glPolygonMode(GL_BACK, GL_LINE); - - glBegin(GL_TRIANGLES); - glNormal3f(0,0,.7); - glVertex3f( 0.9, -0.9, -0.0); - glNormal3f(.8,0,0); - glVertex3f( 0.9, 0.9, -0.0); - glNormal3f(0,.9,0); - glVertex3f(-0.9, 0.0, -0.0); - glEnd(); - - glPolygonMode(GL_FRONT, GL_FILL); - glPolygonMode(GL_BACK, GL_FILL); - - glBegin(GL_TRIANGLES); - glNormal3f(0,0,.7); - glVertex3f( 0.8, -0.8, -0.0); - glNormal3f(.8,0,0); - glVertex3f( 0.8, 0.8, -0.0); - glNormal3f(0,.9,0); - glVertex3f(-0.8, 0.0, -0.0); - glEnd(); - - glPolygonMode(GL_FRONT, GL_LINE); - glPolygonMode(GL_BACK, GL_LINE); - - glBegin(GL_TRIANGLES); - glNormal3f(.8,0,0); - glVertex3f( -0.9, 0.9, -0.0); - glNormal3f(0,0,.7); - glVertex3f( -0.9, -0.9, -0.0); - glNormal3f(0,.9,0); - glVertex3f( 0.9, 0.0, -0.0); - glEnd(); - - glPolygonMode(GL_FRONT, GL_FILL); - glPolygonMode(GL_BACK, GL_FILL); - - glBegin(GL_TRIANGLES); - glNormal3f(.8,0,0); - glVertex3f( -0.8, 0.8, -0.0); - glNormal3f(0,0,.7); - glVertex3f( -0.8, -0.8, -0.0); - glNormal3f(0,.9,0); - glVertex3f( 0.8, 0.0, -0.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-unfilled-tri.c b/progs/trivial/tri-unfilled-tri.c deleted file mode 100644 index 75a70b8a41..0000000000 --- a/progs/trivial/tri-unfilled-tri.c +++ /dev/null @@ -1,176 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); -/* glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); */ - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glPolygonMode(GL_FRONT, GL_LINE); - glPolygonMode(GL_BACK, GL_LINE); - - glBegin(GL_TRIANGLES); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, -0.0); - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, -0.0); - glColor3f(0,.9,0); - glVertex3f(-0.9, 0.0, -0.0); - glEnd(); - - glPolygonMode(GL_FRONT, GL_FILL); - glPolygonMode(GL_BACK, GL_FILL); - - glBegin(GL_TRIANGLES); - glColor3f(0,0,.7); - glVertex3f( 0.8, -0.8, -0.0); - glColor3f(.8,0,0); - glVertex3f( 0.8, 0.8, -0.0); - glColor3f(0,.9,0); - glVertex3f(-0.8, 0.0, -0.0); - glEnd(); - - glPolygonMode(GL_FRONT, GL_LINE); - glPolygonMode(GL_BACK, GL_LINE); - - glBegin(GL_TRIANGLES); - glColor3f(.8,0,0); - glVertex3f( -0.9, 0.9, -0.0); - glColor3f(0,0,.7); - glVertex3f( -0.9, -0.9, -0.0); - glColor3f(0,.9,0); - glVertex3f( 0.9, 0.0, -0.0); - glEnd(); - - glPolygonMode(GL_FRONT, GL_FILL); - glPolygonMode(GL_BACK, GL_FILL); - - glBegin(GL_TRIANGLES); - glColor3f(.8,0,0); - glVertex3f( -0.8, 0.8, -0.0); - glColor3f(0,0,.7); - glVertex3f( -0.8, -0.8, -0.0); - glColor3f(0,.9,0); - glVertex3f( 0.8, 0.0, -0.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-unfilled-userclip-stip.c b/progs/trivial/tri-unfilled-userclip-stip.c deleted file mode 100644 index 02bfa92f83..0000000000 --- a/progs/trivial/tri-unfilled-userclip-stip.c +++ /dev/null @@ -1,148 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - static GLdouble plane[4] = { -.5, 0, 1, 0 }; - - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); - glClipPlane(GL_CLIP_PLANE0, plane); - glEnable(GL_CLIP_PLANE0); - glLineWidth( 4 ); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); -/* glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); */ - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - - glEnable(GL_LINE_STIPPLE); - glLineStipple( 5, 0xfffe ); - - - - glBegin(GL_TRIANGLES); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, 0.0); - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, 0.0); - glColor3f(0,.9,0); - glVertex3f(-0.9, 0.0, 0.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-unfilled-userclip.c b/progs/trivial/tri-unfilled-userclip.c deleted file mode 100644 index 11e53fc7cc..0000000000 --- a/progs/trivial/tri-unfilled-userclip.c +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - static GLdouble plane[4] = { -.5, 0, 1, 0 }; - - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); - glClipPlane(GL_CLIP_PLANE0, plane); - glEnable(GL_CLIP_PLANE0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); -/* glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); */ - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - - glBegin(GL_TRIANGLES); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, 0.0); - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, 0.0); - glColor3f(0,.9,0); - glVertex3f(-0.9, 0.0, 0.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-unfilled.c b/progs/trivial/tri-unfilled.c deleted file mode 100644 index afa1058dad..0000000000 --- a/progs/trivial/tri-unfilled.c +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); -/* glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); */ - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glPolygonMode(GL_FRONT, GL_LINE); - glPolygonMode(GL_BACK, GL_LINE); - - glBegin(GL_TRIANGLES); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, -0.0); - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, -0.0); - glColor3f(0,.9,0); - glVertex3f(-0.9, 0.0, -0.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-userclip.c b/progs/trivial/tri-userclip.c deleted file mode 100644 index 5651c73832..0000000000 --- a/progs/trivial/tri-userclip.c +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - static GLdouble plane[4] = { -.5, 0, 1, 0 }; - - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); - glClipPlane(GL_CLIP_PLANE0, plane); - glEnable(GL_CLIP_PLANE0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); -/* glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); */ - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_TRIANGLES); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, 0.0); - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, 0.0); - glColor3f(0,.9,0); - glVertex3f(-0.9, 0.0, 0.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-viewport.c b/progs/trivial/tri-viewport.c deleted file mode 100644 index 3e52449b47..0000000000 --- a/progs/trivial/tri-viewport.c +++ /dev/null @@ -1,327 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - -GLenum doubleBuffer = 1; -int win; -static float tx = 0; -static float ty = 0; -static float tw = 0; -static float th = 0; -static float z = -5; - - -static float win_width = 250; -static float win_height = 250; -static enum { - ORTHO, - FRUSTUM, - MODE_MAX -} mode = ORTHO; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0, 0, 0, 0.0); -} - -static void Reshape(int width, int height) -{ - win_width = width; - win_height = height; - glutPostRedisplay(); -} - - -static void Key(unsigned char key, int x, int y) -{ - switch (key) { - case 27: - exit(0); - case 'w': - tw += 1.0; - break; - case 'W': - tw -= 1.0; - break; - case 'h': - th += 1.0; - break; - case 'H': - th -= 1.0; - break; - - case 'z': - z += 1.0; - break; - case 'Z': - z -= 1.0; - break; - case 'm': - mode++; - mode %= MODE_MAX; - break; - case ' ': - tw = th = tx = ty = 0; - z = -5; - mode = ORTHO; - break; - default: - break; - } - glutPostRedisplay(); -} - - -static void Draw(void) -{ - int i; - float w = tw + win_width; - float h = th + win_height; - - fprintf(stderr, "glViewport(%f %f %f %f)\n", tx, ty, w, h); - fprintf(stderr, "mode: %s\n", mode == FRUSTUM ? "FRUSTUM" : "ORTHO"); - fprintf(stderr, "z: %f\n", z); - fflush(stderr); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - - switch (mode) { - case FRUSTUM: - glFrustum(-1.0, 1.0, -1.0, 1.0, 5.0, 25.0); - break; - case ORTHO: - default: - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - break; - } - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - - - glClear(GL_COLOR_BUFFER_BIT); - - - /*********************************************************************** - * Should be clipped to be no larger than the triangles: - */ - glViewport(tx, ty, w, h); - - glBegin(GL_POLYGON); - glColor3f(1,1,0); - glVertex3f(-100, -100, z); - glVertex3f(-100, 100, z); - glVertex3f(100, 100, z); - glVertex3f(100, -100, z); - glEnd(); - - glBegin(GL_POLYGON); - glColor3f(0,1,1); - glVertex3f(-10, -10, z); - glVertex3f(-10, 10, z); - glVertex3f(10, 10, z); - glVertex3f(10, -10, z); - glEnd(); - - glBegin(GL_POLYGON); - glColor3f(1,0,0); - glVertex3f(-2, -2, z); - glVertex3f(-2, 2, z); - glVertex3f(2, 2, z); - glVertex3f(2, -2, z); - glEnd(); - - - glBegin(GL_POLYGON); - glColor3f(.5,.5,1); - glVertex3f(-1, -1, z); - glVertex3f(-1, 1, z); - glVertex3f(1, 1, z); - glVertex3f(1, -1, z); - glEnd(); - - /*********************************************************************** - */ - glViewport(0, 0, win_width, win_height); - glBegin(GL_LINES); - glColor3f(1,1,0); - glVertex3f(-1, 0, z); - glVertex3f(1, 0, z); - - glVertex3f(0, -1, z); - glVertex3f(0, 1, z); - glEnd(); - - - /*********************************************************************** - */ - glViewport(tx, ty, w, h); - glBegin(GL_TRIANGLES); - glColor3f(1,0,0); - glVertex3f(-1, -1, z); - glVertex3f(0, -1, z); - glVertex3f(-.5, -.5, z); - - glColor3f(1,1,1); - glVertex3f(0, -1, z); - glVertex3f(1, -1, z); - glVertex3f(.5, -.5, z); - - glVertex3f(-.5, -.5, z); - glVertex3f(.5, -.5, z); - glVertex3f(0, 0, z); - - - glColor3f(0,1,0); - glVertex3f(1, 1, z); - glVertex3f(0, 1, z); - glVertex3f(.5, .5, z); - - glColor3f(1,1,1); - glVertex3f(0, 1, z); - glVertex3f(-1, 1, z); - glVertex3f(-.5, .5, z); - - glVertex3f(.5, .5, z); - glVertex3f(-.5, .5, z); - glVertex3f( 0, 0, z); - - glEnd(); - - - glViewport(0, 0, win_width, win_height); - - glBegin(GL_LINES); - glColor3f(.5,.5,0); - for (i = -10; i < 10; i++) { - float f = i / 10.0; - - if (i == 0) - continue; - - glVertex3f(-1, f, z); - glVertex3f(1, f, z); - - glVertex3f(f, -1, z); - glVertex3f(f, 1, z); - } - glEnd(); - - - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - if (getenv("VPX")) - tx = atof(getenv("VPX")); - - if (getenv("VPY")) - ty = atof(getenv("VPY")); - - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - - -static void -special(int k, int x, int y) -{ - switch (k) { - case GLUT_KEY_UP: - ty += 1.0; - break; - case GLUT_KEY_DOWN: - ty -= 1.0; - break; - case GLUT_KEY_LEFT: - tx -= 1.0; - break; - case GLUT_KEY_RIGHT: - tx += 1.0; - break; - default: - break; - } - glutPostRedisplay(); -} - - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - win = glutCreateWindow(*argv); - if (!win) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutSpecialFunc(special); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-z-9.c b/progs/trivial/tri-z-9.c deleted file mode 100644 index 37b9e2f873..0000000000 --- a/progs/trivial/tri-z-9.c +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, 1, -1); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClearColor(0.0, 0.0, 1.0, 0.0); - glClearDepth(1.0); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glDepthFunc(GL_EQUAL); - glEnable(GL_DEPTH_TEST); - - glBegin(GL_TRIANGLES); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, .5); - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, .5); - glColor3f(0,.9,0); - glVertex3f(-0.9, 0.0, .5); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(100, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_DEPTH; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-z-eq.c b/progs/trivial/tri-z-eq.c deleted file mode 100644 index 6bdac47419..0000000000 --- a/progs/trivial/tri-z-eq.c +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, 1, -1); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClearColor(0.0, 0.0, 1.0, 0.0); - glClearDepth(1.0); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glDepthFunc(GL_EQUAL); - glEnable(GL_DEPTH_TEST); - - glBegin(GL_TRIANGLES); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, 1.0); - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, 1.0); - glColor3f(0,.9,0); - glVertex3f(-0.9, 0.0, 1.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(100, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_DEPTH; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri-z.c b/progs/trivial/tri-z.c deleted file mode 100644 index 092249dd76..0000000000 --- a/progs/trivial/tri-z.c +++ /dev/null @@ -1,204 +0,0 @@ -/* - * Copyright (c) 1993-1997, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" - * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR - * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(R) is a registered trademark of Silicon Graphics, Inc. - */ - -#include <GL/glut.h> -#include <stdlib.h> -#include <stdio.h> - -static int leftFirst = GL_TRUE; - -static struct { GLenum func; const char *str; } funcs[] = - { - { GL_LESS, "GL_LESS" }, - { GL_LEQUAL, "GL_LEQUAL" }, - { GL_GREATER, "GL_GREATER" }, - { GL_GEQUAL, "GL_GEQUAL" }, - { GL_EQUAL, "GL_EQUAL" }, - { GL_NOTEQUAL, "GL_NOTEQUAL" }, - { GL_ALWAYS, "GL_ALWAYS" }, - { GL_NEVER, "GL_NEVER" }, - }; - -#define NUM_FUNCS (sizeof(funcs) / sizeof(funcs[0])) - -static int curFunc = 0; -static double clearVal = 1.0; -static float minZ = 0.0; -static float maxZ = 1.0; - -static void usage(void) -{ - printf("t - toggle rendering order of triangles\n"); - printf("c - toggle Z clear value between 0, 1\n"); - printf("f - cycle through depth test functions\n"); - printf("n/N - decrease/increase depthrange minZ\n"); - printf("x/X - decrease/increase depthrange maxZ\n"); - printf("spc - reset\n"); - printf("z - set to reverse-direction (ztrick) mode\n"); - fflush(stdout); -} - - -static void init(void) -{ - glEnable(GL_DEPTH_TEST); - glClearColor (1.0, 0.0, 0.0, 0.0); -} - -static void drawLeftTriangle(void) -{ - /* draw yellow triangle on LHS of screen */ - glBegin (GL_TRIANGLES); - glColor4f(1.0, 1.0, 0.0, 0.75); - glVertex3f(0.1, 0.9, -1.0); - glVertex3f(0.1, 0.1, -1.0); - glVertex3f(0.8, 0.5, 1.0); - glEnd(); -} - -static void drawRightTriangle(void) -{ - /* draw cyan triangle on RHS of screen */ - glBegin (GL_TRIANGLES); - glColor4f(0.0, 1.0, 1.0, 0.75); - glVertex3f(0.9, 0.9, 0.0); - glVertex3f(0.2, 0.5, 0.0); - glVertex3f(0.9, 0.1, 0.0); - glEnd(); -} - -static void display(void) -{ - printf("GL_CLEAR_DEPTH = %.2f, GL_DEPTH_FUNC = %s, DepthRange(%.1f, %.1f)\n", - clearVal, funcs[curFunc].str, minZ, maxZ); - fflush(stdout); - glClearDepth(clearVal); - glDepthRange(minZ, maxZ); - glDepthFunc(funcs[curFunc].func); - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - if (leftFirst) { - drawLeftTriangle(); - drawRightTriangle(); - } - else { - drawRightTriangle(); - drawLeftTriangle(); - } - - glFlush(); -} - -static void reshape(int w, int h) -{ - glViewport(0, 0, (GLsizei) w, (GLsizei) h); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - if (w <= h) - gluOrtho2D (0.0, 1.0, 0.0, 1.0*(GLfloat)h/(GLfloat)w); - else - gluOrtho2D (0.0, 1.0*(GLfloat)w/(GLfloat)h, 0.0, 1.0); -} - -/* ARGSUSED1 */ -static void keyboard(unsigned char key, int x, int y) -{ - switch (key) { - case 'n': - minZ -= .1; - break; - case 'N': - minZ += .1; - break; - case 'x': - maxZ -= .1; - break; - case 'X': - maxZ += .1; - break; - case 'c': - case 'C': - clearVal = 1.0 - clearVal; - break; - case 'f': - case 'F': - curFunc = (curFunc + 1) % NUM_FUNCS; - break; - case 't': - case 'T': - leftFirst = !leftFirst; - break; - case ' ': - curFunc = 0; - clearVal = 1.0; - minZ = 0.0; - maxZ = 1.0; - break; - case 'z': - curFunc = 2; - clearVal = 0.0; - minZ = 1.0; - maxZ = 0.0; - break; - case 27: /* Escape key */ - exit(0); - break; - default: - return; - } - glutPostRedisplay(); -} - -/* Main Loop - * Open window with initial window size, title bar, - * RGBA display mode, and handle input events. - */ -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); - glutInitWindowSize (200, 200); - glutCreateWindow (argv[0]); - glutReshapeFunc (reshape); - glutKeyboardFunc (keyboard); - glutDisplayFunc (display); - init(); - usage(); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tri.c b/progs/trivial/tri.c deleted file mode 100644 index cac3fcb7d9..0000000000 --- a/progs/trivial/tri.c +++ /dev/null @@ -1,136 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer = 1; -int win; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.3, 0.1, 0.3, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - switch (key) { - case 27: - glutDestroyWindow(win); - exit(0); - default: - glutPostRedisplay(); - return; - } -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_TRIANGLES); - glColor3f(.8,0,0); - glVertex3f(-0.9, -0.9, -30.0); - glColor3f(0,.9,0); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(0,0,.7); - glVertex3f( 0.0, 0.9, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - win = glutCreateWindow(*argv); - if (!win) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/trifan-flat-clip.c b/progs/trivial/trifan-flat-clip.c deleted file mode 100644 index 89bc471191..0000000000 --- a/progs/trivial/trifan-flat-clip.c +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glShadeModel(GL_FLAT); - - - glBegin(GL_TRIANGLE_FAN); - glColor3f(1,0,0); - glVertex3f( 0, 0, -30.0); - glColor3f(1,1,0); - glVertex3f( 1.3, 1.1, -30.0); - glColor3f(1,0,1); - glVertex3f(-.9, .9, -30.0); - glColor3f(0,1,1); - glVertex3f(-1.1, -1.3, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/trifan-flat-unfilled-clip.c b/progs/trivial/trifan-flat-unfilled-clip.c deleted file mode 100644 index 3a1a226e54..0000000000 --- a/progs/trivial/trifan-flat-unfilled-clip.c +++ /dev/null @@ -1,145 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glShadeModel(GL_FLAT); - - glPolygonMode(GL_FRONT, GL_LINE); - glPolygonMode(GL_BACK, GL_LINE); - glLineWidth(4.0); - - - glBegin(GL_TRIANGLE_FAN); - glColor3f(1,0,0); - glVertex3f( 0, 0, -30.0); - glColor3f(1,1,0); - glVertex3f( 1.3, 1.1, -30.0); - glColor3f(1,0,1); - glVertex3f(-.9, .9, -30.0); - glColor3f(0,1,1); - glVertex3f(-1.1, -1.3, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/trifan-flat.c b/progs/trivial/trifan-flat.c deleted file mode 100644 index d25abdf49e..0000000000 --- a/progs/trivial/trifan-flat.c +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glShadeModel(GL_FLAT); - - - glBegin(GL_TRIANGLE_FAN); - glColor3f(1,0,0); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(1,1,0); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(1,0,1); - glVertex3f(-0.9, 0.9, -30.0); - glColor3f(0,1,1); - glVertex3f(-0.9, -0.9, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/trifan-unfilled.c b/progs/trivial/trifan-unfilled.c deleted file mode 100644 index 2e3ff8218f..0000000000 --- a/progs/trivial/trifan-unfilled.c +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - - glBegin(GL_TRIANGLE_FAN); - glColor3f(1,0,0); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(1,1,0); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(1,0,1); - glVertex3f(-0.9, 0.9, -30.0); - glColor3f(0,1,1); - glVertex3f(-0.9, -0.9, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/trifan.c b/progs/trivial/trifan.c deleted file mode 100644 index b8a7615114..0000000000 --- a/progs/trivial/trifan.c +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_TRIANGLE_FAN); - glColor3f(1,0,0); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(1,1,0); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(1,0,1); - glVertex3f(-0.9, 0.9, -30.0); - glColor3f(0,1,1); - glVertex3f(-0.9, -0.9, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tristrip-clip.c b/progs/trivial/tristrip-clip.c deleted file mode 100644 index 4e6ee1fbca..0000000000 --- a/progs/trivial/tristrip-clip.c +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_TRIANGLE_STRIP); - glColor3f(1,0,0); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(1,1,0); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(0,1,1); - glVertex3f(-0.9, -0.9, -30.0); - glColor3f(1,0,1); - glVertex3f(-1.9, 0.9, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tristrip-flat.c b/progs/trivial/tristrip-flat.c deleted file mode 100644 index a90b8b6cb6..0000000000 --- a/progs/trivial/tristrip-flat.c +++ /dev/null @@ -1,149 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - glShadeModel(GL_FLAT); - - if (0) { - glBegin(GL_LINES); - glColor3f(1,0,0); - glVertex3f( 0.95, -0.9, -30.0); - glColor3f(1,1,0); - glVertex3f( 0.95, 0.9, -30.0); - glEnd(); - } - - glBegin(GL_TRIANGLE_STRIP); - glColor3f(1,0,0); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(0,1,0); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(0,0,.5); - glVertex3f(-0.9, -0.9, -30.0); - glColor3f(1,1,1); - glVertex3f(-0.9, 0.9, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/tristrip.c b/progs/trivial/tristrip.c deleted file mode 100644 index 29915ff111..0000000000 --- a/progs/trivial/tristrip.c +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the name of - * Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF - * ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_TRIANGLE_STRIP); - glColor3f(1,0,0); - glVertex3f( 0.9, -0.9, -30.0); - glColor3f(1,1,0); - glVertex3f( 0.9, 0.9, -30.0); - glColor3f(0,1,1); - glVertex3f(-0.9, -0.9, -30.0); - glColor3f(1,0,1); - glVertex3f(-0.9, 0.9, -30.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/vbo-drawarrays.c b/progs/trivial/vbo-drawarrays.c deleted file mode 100644 index cb26e84115..0000000000 --- a/progs/trivial/vbo-drawarrays.c +++ /dev/null @@ -1,134 +0,0 @@ -/* Basic VBO */ - -#include <assert.h> -#include <string.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - - -struct { - GLfloat pos[3]; - GLubyte color[4]; -} verts[] = -{ - { { 0.9, -0.9, 0.0 }, - { 0x00, 0x00, 0xff, 0x00 } - }, - - { { 0.9, 0.9, 0.0 }, - { 0x00, 0xff, 0x00, 0x00 } - }, - - { { -0.9, 0.9, 0.0 }, - { 0xff, 0x00, 0x00, 0x00 } - }, - - { { -0.9, -0.9, 0.0 }, - { 0xff, 0xff, 0xff, 0x00 } - }, -}; - -GLuint arrayObj, elementObj; - -static void Init( void ) -{ - GLint errno; - GLuint prognum; - - static const char *prog1 = - "!!ARBvp1.0\n" - "MOV result.color, vertex.color;\n" - "MOV result.position, vertex.position;\n" - "END\n"; - - glGenProgramsARB(1, &prognum); - glBindProgramARB(GL_VERTEX_PROGRAM_ARB, prognum); - glProgramStringARB(GL_VERTEX_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, - strlen(prog1), (const GLubyte *) prog1); - - assert(glIsProgramARB(prognum)); - errno = glGetError(); - printf("glGetError = %d\n", errno); - if (errno != GL_NO_ERROR) - { - GLint errorpos; - - glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &errorpos); - printf("errorpos: %d\n", errorpos); - printf("%s\n", (char *)glGetString(GL_PROGRAM_ERROR_STRING_ARB)); - } - - - glEnableClientState( GL_VERTEX_ARRAY ); - glEnableClientState( GL_COLOR_ARRAY ); - - glGenBuffersARB(1, &arrayObj); - glBindBufferARB(GL_ARRAY_BUFFER_ARB, arrayObj); - glBufferDataARB(GL_ARRAY_BUFFER_ARB, sizeof(verts), verts, GL_STATIC_DRAW_ARB); - - glVertexPointer( 3, GL_FLOAT, sizeof(verts[0]), 0 ); - glColorPointer( 4, GL_UNSIGNED_BYTE, sizeof(verts[0]), (void *)(3*sizeof(float)) ); - -} - - - -static void Display( void ) -{ - glClearColor(0.3, 0.3, 0.3, 1); - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - glEnable(GL_VERTEX_PROGRAM_ARB); - - /* glDrawArrays( GL_TRIANGLES, 0, 3 ); */ - glDrawArrays( GL_TRIANGLES, 1, 3 ); - - glFlush(); -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - /*glTranslatef( 0.0, 0.0, -15.0 );*/ -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 250, 250 ); - glutInitDisplayMode( GLUT_RGB | GLUT_SINGLE | GLUT_DEPTH ); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/vbo-drawelements.c b/progs/trivial/vbo-drawelements.c deleted file mode 100644 index b1b16d920b..0000000000 --- a/progs/trivial/vbo-drawelements.c +++ /dev/null @@ -1,138 +0,0 @@ -/* Basic VBO */ - -#include <assert.h> -#include <string.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - -struct { - GLfloat pos[3]; - GLubyte color[4]; -} verts[] = -{ - { { 0.9, -0.9, 0.0 }, - { 0x00, 0x00, 0xff, 0x00 } - }, - - { { 0.9, 0.9, 0.0 }, - { 0x00, 0xff, 0x00, 0x00 } - }, - - { { -0.9, 0.9, 0.0 }, - { 0xff, 0x00, 0x00, 0x00 } - }, - - { { -0.9, -0.9, 0.0 }, - { 0xff, 0xff, 0xff, 0x00 } - }, -}; - -GLuint indices[] = { 0, 1, 2, 3 }; - -GLuint arrayObj, elementObj; - -static void Init( void ) -{ - GLint errno; - GLuint prognum; - - static const char *prog1 = - "!!ARBvp1.0\n" - "MOV result.color, vertex.color;\n" - "MOV result.position, vertex.position;\n" - "END\n"; - - glGenProgramsARB(1, &prognum); - glBindProgramARB(GL_VERTEX_PROGRAM_ARB, prognum); - glProgramStringARB(GL_VERTEX_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, - strlen(prog1), (const GLubyte *) prog1); - - assert(glIsProgramARB(prognum)); - errno = glGetError(); - printf("glGetError = %d\n", errno); - if (errno != GL_NO_ERROR) - { - GLint errorpos; - - glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &errorpos); - printf("errorpos: %d\n", errorpos); - printf("%s\n", (char *)glGetString(GL_PROGRAM_ERROR_STRING_ARB)); - } - - - glEnableClientState( GL_VERTEX_ARRAY ); - glEnableClientState( GL_COLOR_ARRAY ); - - glGenBuffersARB(1, &arrayObj); - glGenBuffersARB(1, &elementObj); - - glBindBufferARB(GL_ARRAY_BUFFER_ARB, arrayObj); - glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, elementObj); - - glBufferDataARB(GL_ARRAY_BUFFER_ARB, sizeof(verts), verts, GL_STATIC_DRAW_ARB); - glBufferDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, sizeof(indices), indices, GL_STATIC_DRAW_ARB); - - glVertexPointer( 3, GL_FLOAT, sizeof(verts[0]), 0 ); - glColorPointer( 4, GL_UNSIGNED_BYTE, sizeof(verts[0]), (void *)(3*sizeof(float)) ); - -} - - - -static void Display( void ) -{ - glClearColor(0.3, 0.3, 0.3, 1); - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - glEnable(GL_VERTEX_PROGRAM_ARB); - glDrawElements( GL_TRIANGLES, 3, GL_UNSIGNED_INT, NULL ); - - glFlush(); -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - /*glTranslatef( 0.0, 0.0, -15.0 );*/ -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 250, 250 ); - glutInitDisplayMode( GLUT_RGB | GLUT_SINGLE | GLUT_DEPTH ); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/vbo-drawrange.c b/progs/trivial/vbo-drawrange.c deleted file mode 100644 index fa87eaf8fe..0000000000 --- a/progs/trivial/vbo-drawrange.c +++ /dev/null @@ -1,146 +0,0 @@ -/* Basic VBO */ - -#include <assert.h> -#include <string.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - -#define ELTOBJ 0 - -struct { - GLfloat pos[3]; - GLubyte color[4]; -} verts[] = -{ - { { 0.9, -0.9, 0.0 }, - { 0x00, 0x00, 0xff, 0x00 } - }, - - { { 0.9, 0.9, 0.0 }, - { 0x00, 0xff, 0x00, 0x00 } - }, - - { { -0.9, 0.9, 0.0 }, - { 0xff, 0x00, 0x00, 0x00 } - }, - - { { -0.9, -0.9, 0.0 }, - { 0xff, 0xff, 0xff, 0x00 } - }, -}; - -GLuint indices[] = { 1, 2, 3 }; - -GLuint arrayObj, elementObj; - -static void Init( void ) -{ - GLint errno; - GLuint prognum; - - static const char *prog1 = - "!!ARBvp1.0\n" - "MOV result.color, vertex.color;\n" - "MOV result.position, vertex.position;\n" - "END\n"; - - glGenProgramsARB(1, &prognum); - glBindProgramARB(GL_VERTEX_PROGRAM_ARB, prognum); - glProgramStringARB(GL_VERTEX_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, - strlen(prog1), (const GLubyte *) prog1); - - assert(glIsProgramARB(prognum)); - errno = glGetError(); - printf("glGetError = %d\n", errno); - if (errno != GL_NO_ERROR) - { - GLint errorpos; - - glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &errorpos); - printf("errorpos: %d\n", errorpos); - printf("%s\n", (char *)glGetString(GL_PROGRAM_ERROR_STRING_ARB)); - } - - - glEnableClientState( GL_VERTEX_ARRAY ); - glEnableClientState( GL_COLOR_ARRAY ); - - glGenBuffersARB(1, &arrayObj); - glBindBufferARB(GL_ARRAY_BUFFER_ARB, arrayObj); - glBufferDataARB(GL_ARRAY_BUFFER_ARB, sizeof(verts), verts, GL_STATIC_DRAW_ARB); - -#if ELTOBJ - glGenBuffersARB(1, &elementObj); - glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, elementObj); - glBufferDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, sizeof(indices), indices, GL_STATIC_DRAW_ARB); -#endif - - glVertexPointer( 3, GL_FLOAT, sizeof(verts[0]), 0 ); - glColorPointer( 4, GL_UNSIGNED_BYTE, sizeof(verts[0]), (void *)(3*sizeof(float)) ); - -} - - - -static void Display( void ) -{ - glClearColor(0.3, 0.3, 0.3, 1); - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - glEnable(GL_VERTEX_PROGRAM_ARB); - -#if ELTOBJ - glDrawRangeElements( GL_TRIANGLES, 1, 3, 3, GL_UNSIGNED_INT, NULL ); -#else - glDrawRangeElements( GL_TRIANGLES, 1, 3, 3, GL_UNSIGNED_INT, indices ); -#endif - - glFlush(); -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - /*glTranslatef( 0.0, 0.0, -15.0 );*/ -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 250, 250 ); - glutInitDisplayMode( GLUT_RGB | GLUT_SINGLE | GLUT_DEPTH ); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/vbo-noninterleaved.c b/progs/trivial/vbo-noninterleaved.c deleted file mode 100644 index f7c42a8981..0000000000 --- a/progs/trivial/vbo-noninterleaved.c +++ /dev/null @@ -1,139 +0,0 @@ -/* Basic VBO */ - -#include <assert.h> -#include <string.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - - -struct { - GLfloat pos[4][4]; - GLfloat col[4][4]; -} verts = -{ - /* Position: a quad - */ - { - { 0.9, -0.9, 0.0, 1.0 }, - { 0.9, 0.9, 0.0, 1.0 }, - { -0.9, 0.9, 0.0, 1.0 }, - { -0.9, -0.9, 0.0, 1.0 }, - }, - - /* Color: all red - */ - { - { 1.0, 0.0, 0.0, 1.0 }, - { 1.0, 0.0, 0.0, 1.0 }, - { 1.0, 0.0, 0.0, 1.0 }, - { 1.0, 0.0, 0.0, 1.0 }, - }, - - -}; - -GLuint arrayObj, elementObj; - -static void Init( void ) -{ - GLint errno; - GLuint prognum; - - static const char *prog1 = - "!!ARBvp1.0\n" - "MOV result.color, vertex.color;\n" - "MOV result.position, vertex.position;\n" - "END\n"; - - glGenProgramsARB(1, &prognum); - glBindProgramARB(GL_VERTEX_PROGRAM_ARB, prognum); - glProgramStringARB(GL_VERTEX_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, - strlen(prog1), (const GLubyte *) prog1); - - assert(glIsProgramARB(prognum)); - errno = glGetError(); - printf("glGetError = %d\n", errno); - if (errno != GL_NO_ERROR) - { - GLint errorpos; - - glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &errorpos); - printf("errorpos: %d\n", errorpos); - printf("%s\n", (char *)glGetString(GL_PROGRAM_ERROR_STRING_ARB)); - } - - - glEnableClientState( GL_VERTEX_ARRAY ); - glEnableClientState( GL_COLOR_ARRAY ); - - glGenBuffersARB(1, &arrayObj); - glBindBufferARB(GL_ARRAY_BUFFER_ARB, arrayObj); - glBufferDataARB(GL_ARRAY_BUFFER_ARB, sizeof(verts), &verts, GL_STATIC_DRAW_ARB); - - glVertexPointer( 4, GL_FLOAT, sizeof(verts.pos[0]), 0 ); - glColorPointer( 4, GL_FLOAT, sizeof(verts.col[0]), (void *)(4*4*sizeof(float)) ); - -} - - - -static void Display( void ) -{ - glClearColor(0.3, 0.3, 0.3, 1); - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - glEnable(GL_VERTEX_PROGRAM_ARB); - - /* glDrawArrays( GL_TRIANGLES, 0, 3 ); */ - /* glDrawArrays( GL_TRIANGLES, 1, 3 ); */ - glDrawArrays( GL_QUADS, 0, 4 ); - - glFlush(); -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - /*glTranslatef( 0.0, 0.0, -15.0 );*/ -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 250, 250 ); - glutInitDisplayMode( GLUT_RGB | GLUT_SINGLE | GLUT_DEPTH ); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/vp-array-int.c b/progs/trivial/vp-array-int.c deleted file mode 100644 index 2e1ac1374d..0000000000 --- a/progs/trivial/vp-array-int.c +++ /dev/null @@ -1,118 +0,0 @@ -/* Test glGenProgramsNV(), glIsProgramNV(), glLoadProgramNV() */ - -#include <assert.h> -#include <string.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - -GLint verts[][4] = { - { 1, -1, 0, 1 }, - { 1, 1, 0, 1 }, - { -1, 1, 0, 1 }, - { -1, -1, 0, 1 }, -}; - -GLubyte color[][4] = { - { 0x00, 0x00, 0xff, 0x00 }, - { 0x00, 0xff, 0x00, 0x00 }, - { 0xff, 0x00, 0x00, 0x00 }, - { 0xff, 0xff, 0xff, 0x00 }, -}; - -GLuint indices[] = { 0, 1, 2, 3 }; - -static void Init( void ) -{ - GLint errno; - GLuint prognum; - - static const char *prog1 = - "!!ARBvp1.0\n" - "MOV result.color, vertex.color;\n" - "MOV result.position, vertex.position;\n" - "END\n"; - - glGenProgramsARB(1, &prognum); - glBindProgramARB(GL_VERTEX_PROGRAM_ARB, prognum); - glProgramStringARB(GL_VERTEX_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, - strlen(prog1), (const GLubyte *) prog1); - - assert(glIsProgramARB(prognum)); - errno = glGetError(); - printf("glGetError = %d\n", errno); - if (errno != GL_NO_ERROR) - { - GLint errorpos; - - glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &errorpos); - printf("errorpos: %d\n", errorpos); - printf("%s\n", (char *)glGetString(GL_PROGRAM_ERROR_STRING_ARB)); - } - - - glEnableClientState( GL_VERTEX_ARRAY ); - glEnableClientState( GL_COLOR_ARRAY ); - glVertexPointer( 3, GL_INT, sizeof(verts[0]), verts ); - glColorPointer( 4, GL_UNSIGNED_BYTE, 0, color ); - -} - - - -static void Display( void ) -{ - glClearColor(0.3, 0.3, 0.3, 1); - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - glEnable(GL_VERTEX_PROGRAM_NV); - glDrawElements( GL_TRIANGLES, 3, GL_UNSIGNED_INT, indices ); - - glFlush(); -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - /*glTranslatef( 0.0, 0.0, -15.0 );*/ -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 250, 250 ); - glutInitDisplayMode( GLUT_RGB | GLUT_SINGLE | GLUT_DEPTH ); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/vp-array.c b/progs/trivial/vp-array.c deleted file mode 100644 index 852bf7d44d..0000000000 --- a/progs/trivial/vp-array.c +++ /dev/null @@ -1,118 +0,0 @@ -/* Test glGenProgramsNV(), glIsProgramNV(), glLoadProgramNV() */ - -#include <assert.h> -#include <string.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - -GLfloat verts[][4] = { - { 0.9, -0.9, 0.0, 1.0 }, - { 0.9, 0.9, 0.0, 1.0 }, - { -0.9, 0.9, 0.0, 1.0 }, - { -0.9, -0.9, 0.0, 1.0 }, -}; - -GLubyte color[][4] = { - { 0x00, 0x00, 0xff, 0x00 }, - { 0x00, 0xff, 0x00, 0x00 }, - { 0xff, 0x00, 0x00, 0x00 }, - { 0xff, 0xff, 0xff, 0x00 }, -}; - -GLuint indices[] = { 0, 1, 2, 3 }; - -static void Init( void ) -{ - GLint errno; - GLuint prognum; - - static const char *prog1 = - "!!ARBvp1.0\n" - "MOV result.color, vertex.color;\n" - "MOV result.position, vertex.position;\n" - "END\n"; - - glGenProgramsARB(1, &prognum); - glBindProgramARB(GL_VERTEX_PROGRAM_ARB, prognum); - glProgramStringARB(GL_VERTEX_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, - strlen(prog1), (const GLubyte *) prog1); - - assert(glIsProgramARB(prognum)); - errno = glGetError(); - printf("glGetError = %d\n", errno); - if (errno != GL_NO_ERROR) - { - GLint errorpos; - - glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &errorpos); - printf("errorpos: %d\n", errorpos); - printf("%s\n", (char *)glGetString(GL_PROGRAM_ERROR_STRING_ARB)); - } - - - glEnableClientState( GL_VERTEX_ARRAY ); - glEnableClientState( GL_COLOR_ARRAY ); - glVertexPointer( 3, GL_FLOAT, sizeof(verts[0]), verts ); - glColorPointer( 4, GL_UNSIGNED_BYTE, 0, color ); - -} - - - -static void Display( void ) -{ - glClearColor(0.3, 0.3, 0.3, 1); - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - glEnable(GL_VERTEX_PROGRAM_NV); - glDrawElements( GL_TRIANGLES, 3, GL_UNSIGNED_INT, indices ); - - glFlush(); -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - /*glTranslatef( 0.0, 0.0, -15.0 );*/ -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 250, 250 ); - glutInitDisplayMode( GLUT_RGB | GLUT_SINGLE | GLUT_DEPTH ); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/vp-clip.c b/progs/trivial/vp-clip.c deleted file mode 100644 index 267b927b93..0000000000 --- a/progs/trivial/vp-clip.c +++ /dev/null @@ -1,103 +0,0 @@ -/* Test glGenProgramsNV(), glIsProgramNV(), glLoadProgramNV() */ - -#include <assert.h> -#include <string.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - -static void Init( void ) -{ - GLint errno; - GLuint prognum; - - static const char *prog1 = - "!!ARBvp1.0\n" - "MOV result.color, vertex.color;\n" - "MOV result.position, vertex.position;\n" - "END\n"; - - glGenProgramsARB(1, &prognum); - - glBindProgramARB(GL_VERTEX_PROGRAM_ARB, prognum); - glProgramStringARB(GL_VERTEX_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, - strlen(prog1), (const GLubyte *) prog1); - - assert(glIsProgramARB(prognum)); - errno = glGetError(); - printf("glGetError = %d\n", errno); - if (errno != GL_NO_ERROR) - { - GLint errorpos; - - glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &errorpos); - printf("errorpos: %d\n", errorpos); - printf("%s\n", (char *)glGetString(GL_PROGRAM_ERROR_STRING_ARB)); - } -} - -static void Display( void ) -{ - glClearColor(0.3, 0.3, 0.3, 1); - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - glEnable(GL_VERTEX_PROGRAM_NV); - - glBegin(GL_TRIANGLES); - glColor3f(0,0,1); - glVertex3f( 2.0, -2.0, 0.0); - glColor3f(0,1,0); - glVertex3f( 2.0, 2.0, 0.0); - glColor3f(1,0,0); - glVertex3f(-2.0, 0.0, 0.0); - glEnd(); - - - glFlush(); -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - /*glTranslatef( 0.0, 0.0, -15.0 );*/ -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 250, 250 ); - glutInitDisplayMode( GLUT_RGB | GLUT_SINGLE | GLUT_DEPTH ); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/vp-line-clip.c b/progs/trivial/vp-line-clip.c deleted file mode 100644 index d27e4aae07..0000000000 --- a/progs/trivial/vp-line-clip.c +++ /dev/null @@ -1,117 +0,0 @@ -/* Test glGenProgramsNV(), glIsProgramNV(), glLoadProgramNV() */ - -#include <assert.h> -#include <string.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - -static void Init( void ) -{ - GLint errno; - GLuint prognum; - - static const char *prog1 = - "!!ARBvp1.0\n" - "MOV result.color, vertex.color;\n" - "MOV result.position, vertex.position;\n" - "END\n"; - - glGenProgramsARB(1, &prognum); - - glBindProgramARB(GL_VERTEX_PROGRAM_ARB, prognum); - glProgramStringARB(GL_VERTEX_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, - strlen(prog1), (const GLubyte *) prog1); - - assert(glIsProgramARB(prognum)); - errno = glGetError(); - printf("glGetError = %d\n", errno); - if (errno != GL_NO_ERROR) - { - GLint errorpos; - - glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &errorpos); - printf("errorpos: %d\n", errorpos); - printf("%s\n", (char *)glGetString(GL_PROGRAM_ERROR_STRING_ARB)); - } -} - -static void Display( void ) -{ - glClearColor(0.3, 0.3, 0.3, 1); - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - glEnable(GL_VERTEX_PROGRAM_NV); - -#if 0 - glBegin(GL_LINES); - glColor3f(0,0,1); - glVertex3f( 0.75, -0.75, 0.0); - glColor3f(0,1,0); - glVertex3f( 0.75, 0.75, 0.0); - - glColor3f(0,1,0); - glVertex3f( 0.75, 0.75, 0.0); - glColor3f(1,0,0); - glVertex3f(-1.75, 0.0, 0.0); - glEnd(); -#else - glBegin(GL_LINE_STRIP); - glColor3f(0,0,1); - glVertex3f( 0.75, -0.75, 0.0); - glColor3f(0,1,0); - glVertex3f( 0.75, 0.75, 0.0); - glColor3f(1,0,0); - glVertex3f(-1.75, 0.0, 0.0); - glEnd(); -#endif - - - glFlush(); -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - /*glTranslatef( 0.0, 0.0, -15.0 );*/ -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 250, 250 ); - glutInitDisplayMode( GLUT_RGB | GLUT_SINGLE | GLUT_DEPTH ); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/vp-tri-cb-pos.c b/progs/trivial/vp-tri-cb-pos.c deleted file mode 100644 index 9cbc4d1193..0000000000 --- a/progs/trivial/vp-tri-cb-pos.c +++ /dev/null @@ -1,158 +0,0 @@ -/* Test glGenProgramsNV(), glIsProgramNV(), glLoadProgramNV() */ - -#include <stdio.h> -#include <assert.h> -#include <string.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - - - -GLenum doubleBuffer; - -static void Init(void) -{ - GLint errno; - GLuint prognum; - - static const char *prog1 = - "!!ARBvp1.0\n" - "PARAM Emission = state.material.emission; \n" - "PARAM Ambient = state.material.ambient; \n" - "PARAM Diffuse = state.material.diffuse; \n" - "PARAM Specular = state.material.specular; \n" - "DP4 result.position.x, Ambient, vertex.position;\n" - "DP4 result.position.y, Diffuse, vertex.position;\n" - "DP4 result.position.z, Specular, vertex.position;\n" - "DP4 result.position.w, Emission, vertex.position;\n" - "MOV result.color, vertex.color;\n" - "END\n"; - - const float Ambient[4] = { 0.0, 1.0, 0.0, 0.0 }; - const float Diffuse[4] = { 1.0, 0.0, 0.0, 0.0 }; - const float Specular[4] = { 0.0, 0.0, 1.0, 0.0 }; - const float Emission[4] = { 0.0, 0.0, 0.0, 1.0 }; - glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, Ambient); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, Diffuse); - glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, Specular); - glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, Emission); - - - glGenProgramsARB(1, &prognum); - - glBindProgramARB(GL_VERTEX_PROGRAM_ARB, prognum); - glProgramStringARB(GL_VERTEX_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, - strlen(prog1), (const GLubyte *) prog1); - - assert(glIsProgramARB(prognum)); - errno = glGetError(); - printf("glGetError = %d\n", errno); - if (errno != GL_NO_ERROR) - { - GLint errorpos; - - glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &errorpos); - printf("errorpos: %d\n", errorpos); - printf("%s\n", (char *)glGetString(GL_PROGRAM_ERROR_STRING_ARB)); - } - - glEnable(GL_VERTEX_PROGRAM_NV); - -} - - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); -/* glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); */ - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_TRIANGLES); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, -0.0); - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, -0.0); - glColor3f(0,.9,0); - glVertex3f(-0.9, 0.0, -0.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - glewInit(); - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/vp-tri-cb-tex.c b/progs/trivial/vp-tri-cb-tex.c deleted file mode 100644 index e543e2ec3f..0000000000 --- a/progs/trivial/vp-tri-cb-tex.c +++ /dev/null @@ -1,191 +0,0 @@ -/* Test glGenProgramsNV(), glIsProgramNV(), glLoadProgramNV() */ - -#include <stdio.h> -#include <assert.h> -#include <string.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - - - -GLenum doubleBuffer; - -static void Init(void) -{ - GLint errno; - GLuint prognum; - - static const char *prog1 = - "!!ARBvp1.0\n" - "PARAM Emission = state.material.emission; \n" - "PARAM Ambient = state.material.ambient; \n" - "PARAM Diffuse = state.material.diffuse; \n" - "PARAM Specular = state.material.specular; \n" - "DP4 result.position.x, Ambient, vertex.position;\n" - "DP4 result.position.y, Diffuse, vertex.position;\n" - "DP4 result.position.z, Specular, vertex.position;\n" - "DP4 result.position.w, Emission, vertex.position;\n" - "MOV result.texcoord[0], vertex.texcoord[0];\n" - "END\n"; - - const float Ambient[4] = { 0.0, 1.0, 0.0, 0.0 }; - const float Diffuse[4] = { 1.0, 0.0, 0.0, 0.0 }; - const float Specular[4] = { 0.0, 0.0, 1.0, 0.0 }; - const float Emission[4] = { 0.0, 0.0, 0.0, 1.0 }; - glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, Ambient); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, Diffuse); - glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, Specular); - glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, Emission); - - - glGenProgramsARB(1, &prognum); - - glBindProgramARB(GL_VERTEX_PROGRAM_ARB, prognum); - glProgramStringARB(GL_VERTEX_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, - strlen(prog1), (const GLubyte *) prog1); - - assert(glIsProgramARB(prognum)); - errno = glGetError(); - printf("glGetError = %d\n", errno); - if (errno != GL_NO_ERROR) - { - GLint errorpos; - - glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &errorpos); - printf("errorpos: %d\n", errorpos); - printf("%s\n", (char *)glGetString(GL_PROGRAM_ERROR_STRING_ARB)); - } - - glEnable(GL_VERTEX_PROGRAM_NV); - -#define SIZE 32 - { - GLubyte tex2d[SIZE][SIZE][3]; - GLint s, t; - - for (s = 0; s < SIZE; s++) { - for (t = 0; t < SIZE; t++) { -#if 0 - tex2d[t][s][0] = (s < SIZE/2) ? 0 : 255; - tex2d[t][s][1] = (t < SIZE/2) ? 0 : 255; - tex2d[t][s][2] = 0; -#else - tex2d[t][s][0] = s*255/(SIZE-1); - tex2d[t][s][1] = t*255/(SIZE-1); - tex2d[t][s][2] = 0; -#endif - } - } - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - - glTexImage2D(GL_TEXTURE_2D, 0, 3, SIZE, SIZE, 0, - GL_RGB, GL_UNSIGNED_BYTE, tex2d); - - glEnable(GL_TEXTURE_2D); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_R, GL_REPEAT); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - - glPixelStorei(GL_UNPACK_ALIGNMENT, 4); - } - -} - - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); -/* glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); */ - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glBegin(GL_TRIANGLES); - glTexCoord2f(1,-1); - glVertex3f( 0.9, -0.9, -0.0); - glTexCoord2f(1,1); - glVertex3f( 0.9, 0.9, -0.0); - glTexCoord2f(-1,0); - glVertex3f(-0.9, 0.0, -0.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - glewInit(); - - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/vp-tri-cb.c b/progs/trivial/vp-tri-cb.c deleted file mode 100644 index 1f12a2c297..0000000000 --- a/progs/trivial/vp-tri-cb.c +++ /dev/null @@ -1,108 +0,0 @@ -/* Test glGenProgramsNV(), glIsProgramNV(), glLoadProgramNV() */ - -#include <assert.h> -#include <string.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - -static void Init( void ) -{ - GLint errno; - GLuint prognum; - - static const char *prog1 = - "!!ARBvp1.0\n" - "PARAM Diffuse = state.material.diffuse; \n" - "MOV result.color, Diffuse;\n" - "MOV result.position, vertex.position;\n" - "END\n"; - - const float Diffuse[4] = { 0.0, 1.0, 0.0, 1.0 }; - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, Diffuse); - - - glGenProgramsARB(1, &prognum); - - glBindProgramARB(GL_VERTEX_PROGRAM_ARB, prognum); - glProgramStringARB(GL_VERTEX_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, - strlen(prog1), (const GLubyte *) prog1); - - assert(glIsProgramARB(prognum)); - errno = glGetError(); - printf("glGetError = %d\n", errno); - if (errno != GL_NO_ERROR) - { - GLint errorpos; - - glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &errorpos); - printf("errorpos: %d\n", errorpos); - printf("%s\n", (char *)glGetString(GL_PROGRAM_ERROR_STRING_ARB)); - } -} - -static void Display( void ) -{ - glClearColor(0.3, 0.3, 0.3, 1); - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - glEnable(GL_VERTEX_PROGRAM_NV); - - glBegin(GL_TRIANGLES); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, -0.0); - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, -0.0); - glColor3f(0,.9,0); - glVertex3f(-0.9, 0.0, -0.0); - glEnd(); - - - glFlush(); -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - /*glTranslatef( 0.0, 0.0, -15.0 );*/ -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 250, 250 ); - glutInitDisplayMode( GLUT_DEPTH | GLUT_RGB | GLUT_SINGLE ); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/vp-tri-imm.c b/progs/trivial/vp-tri-imm.c deleted file mode 100644 index f2549f3697..0000000000 --- a/progs/trivial/vp-tri-imm.c +++ /dev/null @@ -1,102 +0,0 @@ -/* Test glGenProgramsNV(), glIsProgramNV(), glLoadProgramNV() */ - -#include <assert.h> -#include <string.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - -static void Init( void ) -{ - GLint errno; - GLuint prognum; - - static const char *prog1 = - "!!ARBvp1.0\n" - "ADD result.color, vertex.color, {.5}.x;\n" - "MOV result.position, vertex.position;\n" - "END\n"; - - - glGenProgramsARB(1, &prognum); - - glBindProgramARB(GL_VERTEX_PROGRAM_ARB, prognum); - glProgramStringARB(GL_VERTEX_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, - strlen(prog1), (const GLubyte *) prog1); - - assert(glIsProgramARB(prognum)); - errno = glGetError(); - printf("glGetError = %d\n", errno); - if (errno != GL_NO_ERROR) - { - GLint errorpos; - - glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &errorpos); - printf("errorpos: %d\n", errorpos); - printf("%s\n", (char *)glGetString(GL_PROGRAM_ERROR_STRING_ARB)); - } -} - -static void Display( void ) -{ - glClearColor(0.3, 0.3, 0.3, 1); - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - glEnable(GL_VERTEX_PROGRAM_NV); - - glBegin(GL_TRIANGLES); - glColor3f(0,0,0); - glVertex3f( 0.9, -0.9, -0.0); - glVertex3f( 0.9, 0.9, -0.0); - glVertex3f(-0.9, 0.0, -0.0); - glEnd(); - - - glFlush(); -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - /*glTranslatef( 0.0, 0.0, -15.0 );*/ -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 250, 250 ); - glutInitDisplayMode( GLUT_DEPTH | GLUT_RGB | GLUT_SINGLE ); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/vp-tri-invariant.c b/progs/trivial/vp-tri-invariant.c deleted file mode 100644 index 4dbe95eb9a..0000000000 --- a/progs/trivial/vp-tri-invariant.c +++ /dev/null @@ -1,147 +0,0 @@ -/* Test glGenProgramsNV(), glIsProgramNV(), glLoadProgramNV() */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - - -#define CI_OFFSET_1 16 -#define CI_OFFSET_2 32 - - -GLenum doubleBuffer; - -static void Init(void) -{ - GLint errno; - GLuint prognum; - - static const char *prog1 = - "!!ARBvp1.0\n" - "OPTION ARB_position_invariant ;" - "MOV result.color, vertex.color;\n" - "END\n"; - - - glGenProgramsARB(1, &prognum); - - glBindProgramARB(GL_VERTEX_PROGRAM_ARB, prognum); - glProgramStringARB(GL_VERTEX_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, - strlen(prog1), (const GLubyte *) prog1); - - errno = glGetError(); - printf("glGetError = %d\n", errno); - if (errno != GL_NO_ERROR) - { - GLint errorpos; - - glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &errorpos); - printf("errorpos: %d\n", errorpos); - printf("%s\n", (char *)glGetString(GL_PROGRAM_ERROR_STRING_ARB)); - } - - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fprintf(stderr, "GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); - fprintf(stderr, "GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); - fflush(stderr); - - glClearColor(0.0, 0.0, 1.0, 0.0); -} - -static void Reshape(int width, int height) -{ - - glViewport(0, 0, (GLint)width, (GLint)height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); -/* glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); */ - glMatrixMode(GL_MODELVIEW); -} - -static void Key(unsigned char key, int x, int y) -{ - - switch (key) { - case 27: - exit(1); - default: - break; - } - - glutPostRedisplay(); -} - -static void Draw(void) -{ - glClear(GL_COLOR_BUFFER_BIT); - - glEnable(GL_VERTEX_PROGRAM_ARB); - - glBegin(GL_TRIANGLES); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, -0.0); - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, -0.0); - glColor3f(0,.9,0); - glVertex3f(-0.9, 0.0, -0.0); - glEnd(); - - glFlush(); - - if (doubleBuffer) { - glutSwapBuffers(); - } -} - -static GLenum Args(int argc, char **argv) -{ - GLint i; - - doubleBuffer = GL_FALSE; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-sb") == 0) { - doubleBuffer = GL_FALSE; - } else if (strcmp(argv[i], "-db") == 0) { - doubleBuffer = GL_TRUE; - } else { - fprintf(stderr, "%s (Bad option).\n", argv[i]); - return GL_FALSE; - } - } - return GL_TRUE; -} - -int main(int argc, char **argv) -{ - GLenum type; - - glutInit(&argc, argv); - - if (Args(argc, argv) == GL_FALSE) { - exit(1); - } - - glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250); - - type = GLUT_RGB | GLUT_ALPHA; - type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE; - glutInitDisplayMode(type); - - if (glutCreateWindow(*argv) == GL_FALSE) { - exit(1); - } - - glewInit(); - Init(); - - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/vp-tri-swap.c b/progs/trivial/vp-tri-swap.c deleted file mode 100644 index a3ab1206fd..0000000000 --- a/progs/trivial/vp-tri-swap.c +++ /dev/null @@ -1,104 +0,0 @@ -/* Test glGenProgramsNV(), glIsProgramNV(), glLoadProgramNV() */ - -#include <assert.h> -#include <string.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - -static void Init( void ) -{ - GLint errno; - GLuint prognum; - - static const char *prog1 = - "!!ARBvp1.0\n" - "MOV result.position, vertex.color;\n" - "MOV result.color, vertex.position;\n" - "END\n"; - - - glGenProgramsARB(1, &prognum); - - glBindProgramARB(GL_VERTEX_PROGRAM_ARB, prognum); - glProgramStringARB(GL_VERTEX_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, - strlen(prog1), (const GLubyte *) prog1); - - assert(glIsProgramARB(prognum)); - errno = glGetError(); - printf("glGetError = %d\n", errno); - if (errno != GL_NO_ERROR) - { - GLint errorpos; - - glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &errorpos); - printf("errorpos: %d\n", errorpos); - printf("%s\n", (char *)glGetString(GL_PROGRAM_ERROR_STRING_ARB)); - } -} - -static void Display( void ) -{ - glClearColor(0.3, 0.3, 0.3, 1); - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - glEnable(GL_VERTEX_PROGRAM_NV); - - glBegin(GL_TRIANGLES); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, -0.0); - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, -0.0); - glColor3f(0,.9,0); - glVertex3f(-0.9, 0.0, -0.0); - glEnd(); - - - glFlush(); -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - /*glTranslatef( 0.0, 0.0, -15.0 );*/ -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 250, 250 ); - glutInitDisplayMode( GLUT_DEPTH | GLUT_RGB | GLUT_SINGLE ); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/vp-tri-tex.c b/progs/trivial/vp-tri-tex.c deleted file mode 100644 index bd2b5e59f9..0000000000 --- a/progs/trivial/vp-tri-tex.c +++ /dev/null @@ -1,138 +0,0 @@ -/* Test glGenProgramsNV(), glIsProgramNV(), glLoadProgramNV() */ - -#include <assert.h> -#include <string.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - -static void Init( void ) -{ - GLint errno; - GLuint prognum; - - static const char *prog1 = - "!!ARBvp1.0\n" - "MOV result.texcoord[0], vertex.texcoord[0];\n" - "MOV result.position, vertex.position;\n" - "END\n"; - - - glGenProgramsARB(1, &prognum); - - glBindProgramARB(GL_VERTEX_PROGRAM_ARB, prognum); - glProgramStringARB(GL_VERTEX_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, - strlen(prog1), (const GLubyte *) prog1); - - assert(glIsProgramARB(prognum)); - errno = glGetError(); - printf("glGetError = %d\n", errno); - if (errno != GL_NO_ERROR) - { - GLint errorpos; - - glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &errorpos); - printf("errorpos: %d\n", errorpos); - printf("%s\n", (char *)glGetString(GL_PROGRAM_ERROR_STRING_ARB)); - } - -#define SIZE 32 - { - GLubyte tex2d[SIZE][SIZE][3]; - GLint s, t; - - for (s = 0; s < SIZE; s++) { - for (t = 0; t < SIZE; t++) { -#if 0 - tex2d[t][s][0] = (s < SIZE/2) ? 0 : 255; - tex2d[t][s][1] = (t < SIZE/2) ? 0 : 255; - tex2d[t][s][2] = 0; -#else - tex2d[t][s][0] = s*255/(SIZE-1); - tex2d[t][s][1] = t*255/(SIZE-1); - tex2d[t][s][2] = 0; -#endif - } - } - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - - glTexImage2D(GL_TEXTURE_2D, 0, 3, SIZE, SIZE, 0, - GL_RGB, GL_UNSIGNED_BYTE, tex2d); - - glEnable(GL_TEXTURE_2D); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_R, GL_REPEAT); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - - glPixelStorei(GL_UNPACK_ALIGNMENT, 4); - } - -} - -static void Display( void ) -{ - glClearColor(0.3, 0.3, 0.3, 1); - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - glEnable(GL_VERTEX_PROGRAM_NV); - - glBegin(GL_TRIANGLES); - glTexCoord2f(1,-1); - glVertex3f( 0.9, -0.9, -0.0); - glTexCoord2f(1,1); - glVertex3f( 0.9, 0.9, -0.0); - glTexCoord2f(-1,0); - glVertex3f(-0.9, 0.0, -0.0); - glEnd(); - - - glFlush(); -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - /*glTranslatef( 0.0, 0.0, -15.0 );*/ -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 250, 250 ); - glutInitDisplayMode( GLUT_DEPTH | GLUT_RGB | GLUT_SINGLE ); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/vp-tri.c b/progs/trivial/vp-tri.c deleted file mode 100644 index 2932977314..0000000000 --- a/progs/trivial/vp-tri.c +++ /dev/null @@ -1,105 +0,0 @@ -/* Test glGenProgramsNV(), glIsProgramNV(), glLoadProgramNV() */ - -#include <assert.h> -#include <string.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - -static void Init( void ) -{ - GLint errno; - GLuint prognum; - - static const char *prog1 = - "!!ARBvp1.0\n" - "MOV result.color, vertex.color;\n" -/* "MOV result.color, {0,0,0,1};\n" */ - "MOV result.position, vertex.position;\n" - "END\n"; - - - glGenProgramsARB(1, &prognum); - - glBindProgramARB(GL_VERTEX_PROGRAM_ARB, prognum); - glProgramStringARB(GL_VERTEX_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, - strlen(prog1), (const GLubyte *) prog1); - - assert(glIsProgramARB(prognum)); - errno = glGetError(); - printf("glGetError = %d\n", errno); - if (errno != GL_NO_ERROR) - { - GLint errorpos; - - glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &errorpos); - printf("errorpos: %d\n", errorpos); - printf("%s\n", (char *)glGetString(GL_PROGRAM_ERROR_STRING_ARB)); - } -} - -static void Display( void ) -{ - glClearColor(0.3, 0.3, 0.3, 1); - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - glEnable(GL_VERTEX_PROGRAM_NV); - - glBegin(GL_TRIANGLES); - glColor3f(0,0,.7); - glVertex3f( 0.9, -0.9, -0.0); - glColor3f(.8,0,0); - glVertex3f( 0.9, 0.9, -0.0); - glColor3f(0,.9,0); - glVertex3f(-0.9, 0.0, -0.0); - glEnd(); - - - glFlush(); -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - /*glTranslatef( 0.0, 0.0, -15.0 );*/ -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 250, 250 ); - glutInitDisplayMode( GLUT_DEPTH | GLUT_RGB | GLUT_SINGLE ); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/trivial/vp-unfilled.c b/progs/trivial/vp-unfilled.c deleted file mode 100644 index fe2de674ea..0000000000 --- a/progs/trivial/vp-unfilled.c +++ /dev/null @@ -1,105 +0,0 @@ -/* Test glGenProgramsNV(), glIsProgramNV(), glLoadProgramNV() */ - -#include <assert.h> -#include <string.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <GL/glew.h> -#include <GL/glut.h> - -static void Init( void ) -{ - GLint errno; - GLuint prognum; - - static const char *prog1 = - "!!ARBvp1.0\n" - "MOV result.color, vertex.color;\n" - "MOV result.position, vertex.position;\n" - "END\n"; - - glGenProgramsARB(1, &prognum); - - glBindProgramARB(GL_VERTEX_PROGRAM_ARB, prognum); - glProgramStringARB(GL_VERTEX_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, - strlen(prog1), (const GLubyte *) prog1); - - assert(glIsProgramARB(prognum)); - errno = glGetError(); - printf("glGetError = %d\n", errno); - if (errno != GL_NO_ERROR) - { - GLint errorpos; - - glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &errorpos); - printf("errorpos: %d\n", errorpos); - printf("%s\n", (char *)glGetString(GL_PROGRAM_ERROR_STRING_ARB)); - } -} - -static void Display( void ) -{ - glClearColor(0.3, 0.3, 0.3, 1); - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - glPolygonMode(GL_FRONT, GL_LINE); - glPolygonMode(GL_BACK, GL_POINT); - - glEnable(GL_VERTEX_PROGRAM_NV); - - glBegin(GL_TRIANGLES); - glColor3f(0,0,1); - glVertex3f( 0.9, -0.9, 0.0); - glColor3f(0,1,0); - glVertex3f( 0.9, 0.9, 0.0); - glColor3f(1,0,0); - glVertex3f(-0.9, 0.0, 0.0); - glEnd(); - - - glFlush(); -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - /*glTranslatef( 0.0, 0.0, -15.0 );*/ -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 250, 250 ); - glutInitDisplayMode( GLUT_RGB | GLUT_SINGLE | GLUT_DEPTH ); - glutCreateWindow(argv[0]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - Init(); - glutMainLoop(); - return 0; -} diff --git a/progs/vp/.gitignore b/progs/vp/.gitignore deleted file mode 100644 index a5ff993525..0000000000 --- a/progs/vp/.gitignore +++ /dev/null @@ -1 +0,0 @@ -vp-tris diff --git a/progs/vp/Makefile b/progs/vp/Makefile deleted file mode 100644 index 58a0dacb22..0000000000 --- a/progs/vp/Makefile +++ /dev/null @@ -1,53 +0,0 @@ -# progs/tests/Makefile - - -# These programs aren't intended to be included with the normal distro. -# They're not too interesting but they're good for testing. - -TOP = ../.. -include $(TOP)/configs/current - - -LIBS = -L$(TOP)/$(LIB_DIR) -l$(GLUT_LIB) -l$(GLEW_LIB) -l$(GLU_LIB) -l$(GL_LIB) $(APP_LIB_DEPS) - -SOURCES = \ - vp-tris.c - - - -PROGS = $(SOURCES:%.c=%) - -INCLUDES = -I. -I$(TOP)/include -I../samples - - -##### RULES ##### - -.SUFFIXES: -.SUFFIXES: .c - -.c: - $(APP_CC) $(INCLUDES) $(CFLAGS) $(LDFLAGS) $< $(LIBS) -o $@ - -.c.o: - $(APP_CC) -c $(INCLUDES) $(CFLAGS) $(DEFINES) $< -o $@ - -.S.o: - $(APP_CC) -c $(INCLUDES) $(CFLAGS) $(DEFINES) $< -o $@ - - -##### TARGETS ##### - -default: $(PROGS) - -clean: - -rm -f $(PROGS) - -rm -f *.o - -rm -f getproclist.h - - - - - -# Emacs tags -tags: - etags `find . -name \*.[ch]` `find ../include` diff --git a/progs/vp/SConscript b/progs/vp/SConscript deleted file mode 100644 index 640c5dd847..0000000000 --- a/progs/vp/SConscript +++ /dev/null @@ -1,13 +0,0 @@ -Import('env') - -if not env['GLUT']: - Return() - -env = env.Clone() - -env.Prepend(LIBS = ['$GLUT_LIB']) - -env.Program( - target = 'vp-tris', - source = ['vp-tris.c'], - ) diff --git a/progs/vp/abs.txt b/progs/vp/abs.txt deleted file mode 100644 index cd00952e34..0000000000 --- a/progs/vp/abs.txt +++ /dev/null @@ -1,7 +0,0 @@ -!!ARBvp1.0 -TEMP R0; -SUB R0, {0.5}.x, vertex.color; -ABS result.color, R0; -MOV result.position, vertex.position; -END - diff --git a/progs/vp/add.txt b/progs/vp/add.txt deleted file mode 100644 index 4094cd448d..0000000000 --- a/progs/vp/add.txt +++ /dev/null @@ -1,6 +0,0 @@ -!!ARBvp1.0 -TEMP R0; -ADD R0, vertex.color, vertex.color; -ADD result.color, R0, R0; -MOV result.position, vertex.position; -END diff --git a/progs/vp/addimm.txt b/progs/vp/addimm.txt deleted file mode 100644 index f5796d7810..0000000000 --- a/progs/vp/addimm.txt +++ /dev/null @@ -1,5 +0,0 @@ -!!ARBvp1.0 -TEMP R0; -ADD result.color, vertex.color, {.5}.x; -MOV result.position, vertex.position; -END diff --git a/progs/vp/arl-static.txt b/progs/vp/arl-static.txt deleted file mode 100644 index 83aebf689e..0000000000 --- a/progs/vp/arl-static.txt +++ /dev/null @@ -1,7 +0,0 @@ -!!ARBvp1.0 -PARAM arr[7] = { {.0,.1,.2,.3}, {.4,.5,.6,.7}, {.8,.9,.10,.1}, {.12,.3,.4,.14}, {.5,.8,.1,.9}, {.2,0,.4,.1}, {.6,.1,.8,.9}}; -ADDRESS addr; -ARL addr.x, {3}.x; -MOV result.color, arr[addr.x]; -MOV result.position, vertex.position; -END diff --git a/progs/vp/arl-unused.txt b/progs/vp/arl-unused.txt deleted file mode 100644 index c2afe3c092..0000000000 --- a/progs/vp/arl-unused.txt +++ /dev/null @@ -1,7 +0,0 @@ -!!ARBvp1.0 -PARAM arr[7] = { {.0,.1,.2,.3}, {.4,.5,.6,.7}, {.8,.9,.10,.1}, {.12,.3,.4,.14}, {.5,.8,.1,.9}, {.2,0,.4,.1}, {.6,.1,.8,.9}}; -ADDRESS addr; -ARL addr.x, {3}.x; # not actually used -MOV result.color, arr[3]; -MOV result.position, vertex.position; -END diff --git a/progs/vp/arl.txt b/progs/vp/arl.txt deleted file mode 100644 index a262b0149c..0000000000 --- a/progs/vp/arl.txt +++ /dev/null @@ -1,9 +0,0 @@ -!!ARBvp1.0 -PARAM arr[5] = { {0,1,2,3}, {4,5,6,7}, {8,9,10,11}, {12,13,14,14}, {16,17,18,19} }; -ADDRESS addr; -TEMP R0; -MAD R0, {5.0}.x, vertex.color, {2.0}.x; -ARL addr.x, R0.x; -MUL result.color, arr[addr.x-2], {.07}.x; -MOV result.position, vertex.position; -END diff --git a/progs/vp/dp3.txt b/progs/vp/dp3.txt deleted file mode 100644 index 8336bd3dd8..0000000000 --- a/progs/vp/dp3.txt +++ /dev/null @@ -1,5 +0,0 @@ -!!ARBvp1.0 -DP3 result.color, vertex.color, vertex.color; -MOV result.position, vertex.position; -END - diff --git a/progs/vp/dp4.txt b/progs/vp/dp4.txt deleted file mode 100644 index 70505a494c..0000000000 --- a/progs/vp/dp4.txt +++ /dev/null @@ -1,5 +0,0 @@ -!!ARBvp1.0 -DP4 result.color, vertex.color.xxxx, vertex.color; -MOV result.position, vertex.position; -END - diff --git a/progs/vp/dph.txt b/progs/vp/dph.txt deleted file mode 100644 index c7cab1384d..0000000000 --- a/progs/vp/dph.txt +++ /dev/null @@ -1,5 +0,0 @@ -!!ARBvp1.0 -DPH result.color, vertex.color, vertex.color; -MOV result.position, vertex.position; -END - diff --git a/progs/vp/dst.txt b/progs/vp/dst.txt deleted file mode 100644 index 03613c0eec..0000000000 --- a/progs/vp/dst.txt +++ /dev/null @@ -1,5 +0,0 @@ -!!ARBvp1.0 -DST result.color, vertex.color, vertex.color; -MOV result.position, vertex.position; -END - diff --git a/progs/vp/ex2.txt b/progs/vp/ex2.txt deleted file mode 100644 index bbef67bbb8..0000000000 --- a/progs/vp/ex2.txt +++ /dev/null @@ -1,6 +0,0 @@ -!!ARBvp1.0 -TEMP R0; -EX2 R0, vertex.color.x; -SUB result.color, R0, {1.0}.x; -MOV result.position, vertex.position; -END diff --git a/progs/vp/exp-no-w.txt b/progs/vp/exp-no-w.txt deleted file mode 100644 index 98ed4b7a98..0000000000 --- a/progs/vp/exp-no-w.txt +++ /dev/null @@ -1,6 +0,0 @@ -!!ARBvp1.0 -TEMP R0; -EXP R0, vertex.color.x; -SUB result.color, R0.z, {1.0}.x; -MOV result.position, vertex.position; -END diff --git a/progs/vp/exp.txt b/progs/vp/exp.txt deleted file mode 100644 index 53ce71db96..0000000000 --- a/progs/vp/exp.txt +++ /dev/null @@ -1,6 +0,0 @@ -!!ARBvp1.0 -TEMP R0; -EXP R0, vertex.color.x; -SUB result.color, R0.z, R0.w; -MOV result.position, vertex.position; -END diff --git a/progs/vp/flr.txt b/progs/vp/flr.txt deleted file mode 100644 index c33280da97..0000000000 --- a/progs/vp/flr.txt +++ /dev/null @@ -1,6 +0,0 @@ -!!ARBvp1.0 -TEMP R0; -ADD R0, vertex.color, {0.5}.x; -FLR result.color, R0; -MOV result.position, vertex.position; -END diff --git a/progs/vp/frc.txt b/progs/vp/frc.txt deleted file mode 100644 index d8e72b60cc..0000000000 --- a/progs/vp/frc.txt +++ /dev/null @@ -1,6 +0,0 @@ -!!ARBvp1.0 -TEMP R0; -MUL R0, vertex.color, {3.0}.x; -FRC result.color, R0; -MOV result.position, vertex.position; -END diff --git a/progs/vp/lg2.txt b/progs/vp/lg2.txt deleted file mode 100644 index 2f59b993a4..0000000000 --- a/progs/vp/lg2.txt +++ /dev/null @@ -1,6 +0,0 @@ -!!ARBvp1.0 -TEMP R0; -MUL R0, vertex.color, {4.0}.x; -LG2 result.color, R0.x; -MOV result.position, vertex.position; -END diff --git a/progs/vp/lit.txt b/progs/vp/lit.txt deleted file mode 100644 index 65705b4170..0000000000 --- a/progs/vp/lit.txt +++ /dev/null @@ -1,6 +0,0 @@ -!!ARBvp1.0 -TEMP R0; -SUB R0, {0.5}.x, vertex.color; -LIT result.color, R0; -MOV result.position, vertex.position; -END diff --git a/progs/vp/log.txt b/progs/vp/log.txt deleted file mode 100644 index 6b4e94ed0e..0000000000 --- a/progs/vp/log.txt +++ /dev/null @@ -1,7 +0,0 @@ -!!ARBvp1.0 -TEMP R0; -ADD R0, vertex.color, vertex.color; -ADD R0, R0, R0; -LOG result.color, R0.x; -MOV result.position, vertex.position; -END diff --git a/progs/vp/mad.txt b/progs/vp/mad.txt deleted file mode 100644 index 0c9ed6c8b7..0000000000 --- a/progs/vp/mad.txt +++ /dev/null @@ -1,5 +0,0 @@ -!!ARBvp1.0 -MAD result.color, vertex.color.z, {1,0,0,1}, vertex.color; -MOV result.position, vertex.position; -END - diff --git a/progs/vp/max.txt b/progs/vp/max.txt deleted file mode 100644 index 6747ca5727..0000000000 --- a/progs/vp/max.txt +++ /dev/null @@ -1,5 +0,0 @@ -!!ARBvp1.0 -MAX result.color, {0.5}.x, vertex.color; -MOV result.position, vertex.position; -END - diff --git a/progs/vp/min.txt b/progs/vp/min.txt deleted file mode 100644 index 2adc872ed9..0000000000 --- a/progs/vp/min.txt +++ /dev/null @@ -1,5 +0,0 @@ -!!ARBvp1.0 -MIN result.color, {0.5}.x, vertex.color; -MOV result.position, vertex.position; -END - diff --git a/progs/vp/mov.txt b/progs/vp/mov.txt deleted file mode 100644 index 9ce1a45306..0000000000 --- a/progs/vp/mov.txt +++ /dev/null @@ -1,5 +0,0 @@ -!!ARBvp1.0 -MOV result.color, vertex.color; -MOV result.position, vertex.position; -END - diff --git a/progs/vp/msk.txt b/progs/vp/msk.txt deleted file mode 100644 index 9e925aca11..0000000000 --- a/progs/vp/msk.txt +++ /dev/null @@ -1,7 +0,0 @@ -!!ARBvp1.0 -TEMP R0; -MOV R0.xz, vertex.color; -MOV R0.yw, {0.5}.x; -MOV result.color, R0; -MOV result.position, vertex.position; -END diff --git a/progs/vp/mul.txt b/progs/vp/mul.txt deleted file mode 100644 index e479cdb854..0000000000 --- a/progs/vp/mul.txt +++ /dev/null @@ -1,5 +0,0 @@ -!!ARBvp1.0 -MUL result.color, vertex.color, vertex.color; -MOV result.position, vertex.position; -END - diff --git a/progs/vp/pow.txt b/progs/vp/pow.txt deleted file mode 100644 index 512412997d..0000000000 --- a/progs/vp/pow.txt +++ /dev/null @@ -1,5 +0,0 @@ -!!ARBvp1.0 -POW result.color, vertex.color.x, vertex.color.y; -MOV result.position, vertex.position; -END - diff --git a/progs/vp/psiz-imm.txt b/progs/vp/psiz-imm.txt deleted file mode 100644 index 18de2498d6..0000000000 --- a/progs/vp/psiz-imm.txt +++ /dev/null @@ -1,5 +0,0 @@ -!!ARBvp1.0 -MOV result.color, vertex.color; -MOV result.pointsize, {2.0, 0, 0, 1}; -MOV result.position, vertex.position; -END diff --git a/progs/vp/psiz-mul-clamp.txt b/progs/vp/psiz-mul-clamp.txt deleted file mode 100644 index 284c032d79..0000000000 --- a/progs/vp/psiz-mul-clamp.txt +++ /dev/null @@ -1,9 +0,0 @@ -!!ARBvp1.0 -TEMP R0; -MOV result.color, vertex.color; -MUL R0.x, vertex.color.x, {10.0}.x; -MAX R0.x, R0.x, {2.0}.x; -MIN result.pointsize.x, R0.x, {4.0}.x; -MOV result.position, vertex.position; -END - diff --git a/progs/vp/psiz-mul.txt b/progs/vp/psiz-mul.txt deleted file mode 100644 index a74df66de2..0000000000 --- a/progs/vp/psiz-mul.txt +++ /dev/null @@ -1,6 +0,0 @@ -!!ARBvp1.0 -MOV result.color, vertex.color; -MUL result.pointsize, vertex.color.x, {10.0}.x; -MOV result.position, vertex.position; -END - diff --git a/progs/vp/psiz-param-clamp.txt b/progs/vp/psiz-param-clamp.txt deleted file mode 100644 index 7f83fc4516..0000000000 --- a/progs/vp/psiz-param-clamp.txt +++ /dev/null @@ -1,10 +0,0 @@ -!!ARBvp1.0 -TEMP R0; -TEMP R1; -MOV result.color, vertex.color; -MUL R0.x, vertex.color.x, {10.0}.x; -MAX R0.x, R0.x, {2.0}.x; -MIN result.pointsize.x, R0.x, {4.0}.x; -MOV result.position, vertex.position; -END - diff --git a/progs/vp/rcp.txt b/progs/vp/rcp.txt deleted file mode 100644 index e16292bd00..0000000000 --- a/progs/vp/rcp.txt +++ /dev/null @@ -1,7 +0,0 @@ -!!ARBvp1.0 -TEMP R0; -ADD R0, vertex.color.x, vertex.color.x; -RCP result.color, R0.x; -MOV result.position, vertex.position; -END - diff --git a/progs/vp/rsq.txt b/progs/vp/rsq.txt deleted file mode 100644 index 3e3f3251ee..0000000000 --- a/progs/vp/rsq.txt +++ /dev/null @@ -1,7 +0,0 @@ -!!ARBvp1.0 -TEMP R0; -MUL R0, vertex.color, {3.0}.x; -RSQ result.color, R0.x; -MOV result.position, vertex.position; -END - diff --git a/progs/vp/run.sh b/progs/vp/run.sh deleted file mode 100755 index fdd43d4a52..0000000000 --- a/progs/vp/run.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh - -for i in *.txt ; do -echo $i -./vp-tris $i -done - diff --git a/progs/vp/sge.txt b/progs/vp/sge.txt deleted file mode 100644 index 3fa82e5d5e..0000000000 --- a/progs/vp/sge.txt +++ /dev/null @@ -1,5 +0,0 @@ -!!ARBvp1.0 -SGE result.color, {0.5}.x, vertex.color; -MOV result.position, vertex.position; -END - diff --git a/progs/vp/slt.txt b/progs/vp/slt.txt deleted file mode 100644 index 6bf8ffa775..0000000000 --- a/progs/vp/slt.txt +++ /dev/null @@ -1,5 +0,0 @@ -!!ARBvp1.0 -SLT result.color, {0.5}.x, vertex.color; -MOV result.position, vertex.position; -END - diff --git a/progs/vp/sub.txt b/progs/vp/sub.txt deleted file mode 100644 index a58ab101bc..0000000000 --- a/progs/vp/sub.txt +++ /dev/null @@ -1,5 +0,0 @@ -!!ARBvp1.0 -SUB result.color, vertex.color.yzxw, vertex.color; -MOV result.position, vertex.position; -END - diff --git a/progs/vp/swz.txt b/progs/vp/swz.txt deleted file mode 100644 index 92c58089b1..0000000000 --- a/progs/vp/swz.txt +++ /dev/null @@ -1,5 +0,0 @@ -!!ARBvp1.0 -MOV result.color, vertex.color.xxzx; -MOV result.position, vertex.position; -END - diff --git a/progs/vp/swz2.txt b/progs/vp/swz2.txt deleted file mode 100644 index 84c78db49f..0000000000 --- a/progs/vp/swz2.txt +++ /dev/null @@ -1,5 +0,0 @@ -!!ARBvp1.0 -SWZ result.color, vertex.color, 1,x,y,z; -MOV result.position, vertex.position; -END - diff --git a/progs/vp/vp-tris.c b/progs/vp/vp-tris.c deleted file mode 100644 index 09236c296f..0000000000 --- a/progs/vp/vp-tris.c +++ /dev/null @@ -1,333 +0,0 @@ -/* Test glGenProgramsNV(), glIsProgramNV(), glLoadProgramNV() */ - -#include <assert.h> -#include <string.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> - -#ifndef WIN32 -#include <unistd.h> -#include <signal.h> -#endif - -#include <GL/glew.h> -#include <GL/glut.h> - -static const char *filename = NULL; -static GLuint nr_steps = 4; -static GLuint prim = GL_TRIANGLES; -static GLfloat psz = 1.0; -static GLboolean pointsmooth = 0; -static GLboolean program_point_size = 0; - -static void usage( char *name ) -{ - fprintf( stderr, "usage: %s [ options ] shader_filename\n", name ); - fprintf( stderr, "\n" ); - fprintf( stderr, "options:\n" ); - fprintf( stderr, " -f flat shaded\n" ); - fprintf( stderr, " -nNr subdivision steps\n" ); - fprintf( stderr, " -fps show frames per second\n" ); -} - -unsigned show_fps = 0; -unsigned int frame_cnt = 0; - -#ifndef WIN32 - -void alarmhandler(int); - -void alarmhandler (int sig) -{ - if (sig == SIGALRM) { - printf("%d frames in 5.0 seconds = %.3f FPS\n", frame_cnt, - frame_cnt / 5.0); - - frame_cnt = 0; - } - signal(SIGALRM, alarmhandler); - alarm(5); -} - -#endif - -static void args(int argc, char *argv[]) -{ - GLint i; - - for (i = 1; i < argc; i++) { - if (strncmp(argv[i], "-n", 2) == 0) { - nr_steps = atoi((argv[i]) + 2); - } - else if (strcmp(argv[i], "-f") == 0) { - glShadeModel(GL_FLAT); - } - else if (strcmp(argv[i], "-fps") == 0) { - show_fps = 1; - } - else if (i == argc - 1) { - filename = argv[i]; - } - else { - usage(argv[0]); - exit(1); - } - } - - if (!filename) { - usage(argv[0]); - exit(1); - } -} - - - -static void Init( void ) -{ - GLint errno; - GLuint prognum; - char buf[4096]; - GLuint sz; - FILE *f; - - if ((f = fopen(filename, "r")) == NULL) { - fprintf(stderr, "couldn't open %s\n", filename); - exit(1); - } - - sz = (GLuint) fread(buf, 1, sizeof(buf) - 1, f); - buf[sizeof(buf) - 1] = '\0'; - if (!feof(f)) { - fprintf(stderr, "file too long\n"); - fclose(f); - exit(1); - } - - fclose(f); - fprintf(stderr, "%.*s\n", sz, buf); - - if (strncmp( buf, "!!VP", 4 ) == 0) { - glEnable( GL_VERTEX_PROGRAM_NV ); - glGenProgramsNV( 1, &prognum ); - glBindProgramNV( GL_VERTEX_PROGRAM_NV, prognum ); - glLoadProgramNV( GL_VERTEX_PROGRAM_NV, prognum, sz, (const GLubyte *) buf ); - assert( glIsProgramNV( prognum ) ); - } - else { - glEnable(GL_VERTEX_PROGRAM_ARB); - - glGenProgramsARB(1, &prognum); - - glBindProgramARB(GL_VERTEX_PROGRAM_ARB, prognum); - glProgramStringARB(GL_VERTEX_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, - sz, (const GLubyte *) buf); - if (glGetError()) { - printf("Program failed to compile:\n%s\n", buf); - printf("Error: %s\n", - (char *) glGetString(GL_PROGRAM_ERROR_STRING_ARB)); - exit(1); - } - assert(glIsProgramARB(prognum)); - } - - errno = glGetError(); - printf("glGetError = %d\n", errno); - if (errno != GL_NO_ERROR) - { - GLint errorpos; - - glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &errorpos); - printf("errorpos: %d\n", errorpos); - printf("%s\n", (char *)glGetString(GL_PROGRAM_ERROR_STRING_ARB)); - } - - { - const float Ambient[4] = { 0.0, 1.0, 0.0, 0.0 }; - const float Diffuse[4] = { 1.0, 0.0, 0.0, 0.0 }; - const float Specular[4] = { 0.0, 0.0, 1.0, 0.0 }; - const float Emission[4] = { 0.0, 0.0, 0.0, 1.0 }; - glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, Ambient); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, Diffuse); - glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, Specular); - glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, Emission); - } -} - - -union vert { - struct { - GLfloat color[3]; - GLfloat pos[3]; - } v; - GLfloat f[6]; -}; - -static void make_midpoint( union vert *out, - const union vert *v0, - const union vert *v1) -{ - int i; - for (i = 0; i < 6; i++) - out->f[i] = v0->f[i] + .5 * (v1->f[i] - v0->f[i]); -} - -static void subdiv( union vert *v0, - union vert *v1, - union vert *v2, - GLuint depth ) -{ - if (depth == 0) { - glColor3fv(v0->v.color); - glVertex3fv(v0->v.pos); - glColor3fv(v1->v.color); - glVertex3fv(v1->v.pos); - glColor3fv(v2->v.color); - glVertex3fv(v2->v.pos); - } - else { - union vert m[3]; - - make_midpoint(&m[0], v0, v1); - make_midpoint(&m[1], v1, v2); - make_midpoint(&m[2], v2, v0); - - subdiv(&m[0], &m[2], v0, depth-1); - subdiv(&m[1], &m[0], v1, depth-1); - subdiv(&m[2], &m[1], v2, depth-1); - subdiv(&m[0], &m[1], &m[2], depth-1); - } -} - -static void enable( GLenum value, GLboolean flag ) -{ - if (flag) - glEnable(value); - else - glDisable(value); -} - -/** Assignment */ -#define ASSIGN_3V( V, V0, V1, V2 ) \ -do { \ - V[0] = V0; \ - V[1] = V1; \ - V[2] = V2; \ -} while(0) - -static void Display( void ) -{ - glClearColor(0.3, 0.3, 0.3, 1); - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - glPointSize(psz); - - enable( GL_POINT_SMOOTH, pointsmooth ); - enable( GL_VERTEX_PROGRAM_POINT_SIZE_ARB, program_point_size ); - - glBegin(prim); - - - { - union vert v[3]; - - ASSIGN_3V(v[0].v.color, 0,0,1); - ASSIGN_3V(v[0].v.pos, 0.9, -0.9, 0.0); - ASSIGN_3V(v[1].v.color, 1,0,0); - ASSIGN_3V(v[1].v.pos, 0.9, 0.9, 0.0); - ASSIGN_3V(v[2].v.color, 0,1,0); - ASSIGN_3V(v[2].v.pos, -0.9, 0, 0.0); - - subdiv(&v[0], &v[1], &v[2], nr_steps); - } - - glEnd(); - - - glFlush(); - if (show_fps) { - ++frame_cnt; - glutPostRedisplay(); - } -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - /*glTranslatef( 0.0, 0.0, -15.0 );*/ -} - - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 'p': - prim = GL_POINTS; - break; - case 't': - prim = GL_TRIANGLES; - break; - case 's': - psz += .5; - break; - case 'S': - if (psz > .5) - psz -= .5; - break; - case 'm': - pointsmooth = !pointsmooth; - break; - case 'z': - program_point_size = !program_point_size; - break; - case '+': - nr_steps++; - break; - case '-': - if (nr_steps) - nr_steps--; - break; - case ' ': - psz = 1.0; - prim = GL_TRIANGLES; - nr_steps = 4; - break; - case 27: - exit(0); - break; - } - glutPostRedisplay(); -} - - - - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 250, 250 ); - glutInitDisplayMode( GLUT_RGB | GLUT_SINGLE | GLUT_DEPTH ); - glutCreateWindow(argv[argc-1]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - args( argc, argv ); - Init(); -#ifndef WIN32 - if (show_fps) { - signal(SIGALRM, alarmhandler); - alarm(5); - } -#endif - glutMainLoop(); - return 0; -} diff --git a/progs/vp/windows/vp2003.sln b/progs/vp/windows/vp2003.sln deleted file mode 100644 index 76de5cfd7f..0000000000 --- a/progs/vp/windows/vp2003.sln +++ /dev/null @@ -1,21 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 8.00 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vp2003", "vp2003.vcproj", "{E1C70416-98E7-4282-B6B2-6C9CF90B12C0}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Global - GlobalSection(SolutionConfiguration) = preSolution - Debug = Debug - Release = Release - EndGlobalSection - GlobalSection(ProjectConfiguration) = postSolution - {E1C70416-98E7-4282-B6B2-6C9CF90B12C0}.Debug.ActiveCfg = Debug|Win32 - {E1C70416-98E7-4282-B6B2-6C9CF90B12C0}.Debug.Build.0 = Debug|Win32 - {E1C70416-98E7-4282-B6B2-6C9CF90B12C0}.Release.ActiveCfg = Release|Win32 - {E1C70416-98E7-4282-B6B2-6C9CF90B12C0}.Release.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - EndGlobalSection - GlobalSection(ExtensibilityAddIns) = postSolution - EndGlobalSection -EndGlobal diff --git a/progs/vp/windows/vp2003.vcproj b/progs/vp/windows/vp2003.vcproj deleted file mode 100644 index adca2c5073..0000000000 --- a/progs/vp/windows/vp2003.vcproj +++ /dev/null @@ -1,121 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="7.10" - Name="vp2003" - ProjectGUID="{E1C70416-98E7-4282-B6B2-6C9CF90B12C0}" - Keyword="Win32Proj"> - <Platforms> - <Platform - Name="Win32"/> - </Platforms> - <Configurations> - <Configuration - Name="Debug|Win32" - OutputDirectory="Debug" - IntermediateDirectory="Debug" - ConfigurationType="1" - CharacterSet="2"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE" - MinimalRebuild="TRUE" - BasicRuntimeChecks="3" - RuntimeLibrary="5" - UsePrecompiledHeader="0" - WarningLevel="3" - Detect64BitPortabilityProblems="TRUE" - DebugInformationFormat="4"/> - <Tool - Name="VCCustomBuildTool"/> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="glut32.lib" - OutputFile="$(OutDir)/vp2003.exe" - LinkIncremental="2" - GenerateDebugInformation="TRUE" - ProgramDatabaseFile="$(OutDir)/vp2003.pdb" - SubSystem="1" - TargetMachine="1"/> - <Tool - Name="VCMIDLTool"/> - <Tool - Name="VCPostBuildEventTool"/> - <Tool - Name="VCPreBuildEventTool"/> - <Tool - Name="VCPreLinkEventTool"/> - <Tool - Name="VCResourceCompilerTool"/> - <Tool - Name="VCWebServiceProxyGeneratorTool"/> - <Tool - Name="VCXMLDataGeneratorTool"/> - <Tool - Name="VCWebDeploymentTool"/> - <Tool - Name="VCManagedWrapperGeneratorTool"/> - <Tool - Name="VCAuxiliaryManagedWrapperGeneratorTool"/> - </Configuration> - <Configuration - Name="Release|Win32" - OutputDirectory="Release" - IntermediateDirectory="Release" - ConfigurationType="1" - CharacterSet="2"> - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" - RuntimeLibrary="4" - UsePrecompiledHeader="0" - WarningLevel="3" - Detect64BitPortabilityProblems="TRUE" - DebugInformationFormat="3"/> - <Tool - Name="VCCustomBuildTool"/> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="glut32.lib" - OutputFile="$(OutDir)/vp2003.exe" - LinkIncremental="1" - GenerateDebugInformation="TRUE" - SubSystem="1" - OptimizeReferences="2" - EnableCOMDATFolding="2" - TargetMachine="1"/> - <Tool - Name="VCMIDLTool"/> - <Tool - Name="VCPostBuildEventTool"/> - <Tool - Name="VCPreBuildEventTool"/> - <Tool - Name="VCPreLinkEventTool"/> - <Tool - Name="VCResourceCompilerTool"/> - <Tool - Name="VCWebServiceProxyGeneratorTool"/> - <Tool - Name="VCXMLDataGeneratorTool"/> - <Tool - Name="VCWebDeploymentTool"/> - <Tool - Name="VCManagedWrapperGeneratorTool"/> - <Tool - Name="VCAuxiliaryManagedWrapperGeneratorTool"/> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <File - RelativePath="..\vp-tris.c"> - </File> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/progs/vp/xform.txt b/progs/vp/xform.txt deleted file mode 100644 index d1548f1f10..0000000000 --- a/progs/vp/xform.txt +++ /dev/null @@ -1,11 +0,0 @@ -!!ARBvp1.0 -PARAM Emission = state.material.emission; -PARAM Ambient = state.material.ambient; -PARAM Diffuse = state.material.diffuse; -PARAM Specular = state.material.specular; -DP4 result.position.x, Ambient, vertex.position; -DP4 result.position.y, Diffuse, vertex.position; -DP4 result.position.z, Specular, vertex.position; -DP4 result.position.w, Emission, vertex.position; -MOV result.color, vertex.color; -END diff --git a/progs/vp/xpd.txt b/progs/vp/xpd.txt deleted file mode 100644 index b8818ebc60..0000000000 --- a/progs/vp/xpd.txt +++ /dev/null @@ -1,5 +0,0 @@ -!!ARBvp1.0 -XPD result.color, vertex.color, {2,2,2,0}; -MOV result.position, vertex.position; -END - diff --git a/progs/vpglsl/.gitignore b/progs/vpglsl/.gitignore deleted file mode 100644 index a5ff993525..0000000000 --- a/progs/vpglsl/.gitignore +++ /dev/null @@ -1 +0,0 @@ -vp-tris diff --git a/progs/vpglsl/Makefile b/progs/vpglsl/Makefile deleted file mode 100644 index 3982aca565..0000000000 --- a/progs/vpglsl/Makefile +++ /dev/null @@ -1,52 +0,0 @@ -# progs/tests/Makefile - - -# These programs aren't intended to be included with the normal distro. -# They're not too interesting but they're good for testing. - -TOP = ../.. -include $(TOP)/configs/current - -LIBS = -L$(TOP)/$(LIB_DIR) -l$(GLUT_LIB) -l$(GLEW_LIB) -l$(GLU_LIB) -l$(GL_LIB) $(APP_LIB_DEPS) - -SOURCES = \ - vp-tris.c - - - -PROGS = $(SOURCES:%.c=%) - -INCLUDES = -I. -I$(TOP)/include -I../samples - - -##### RULES ##### - -.SUFFIXES: -.SUFFIXES: .c - -.c: - $(CC) $(INCLUDES) $(CFLAGS) $< $(LIBS) -o $@ - -.c.o: - $(CC) -c $(INCLUDES) $(CFLAGS) $(DEFINES) $< -o $@ - -.S.o: - $(CC) -c $(INCLUDES) $(CFLAGS) $(DEFINES) $< -o $@ - - -##### TARGETS ##### - -default: $(PROGS) - -clean: - rm -f $(PROGS) - rm -f *.o - rm -f getproclist.h - - - - - -# Emacs tags -tags: - etags `find . -name \*.[ch]` `find ../include` diff --git a/progs/vpglsl/SConscript b/progs/vpglsl/SConscript deleted file mode 100644 index 640c5dd847..0000000000 --- a/progs/vpglsl/SConscript +++ /dev/null @@ -1,13 +0,0 @@ -Import('env') - -if not env['GLUT']: - Return() - -env = env.Clone() - -env.Prepend(LIBS = ['$GLUT_LIB']) - -env.Program( - target = 'vp-tris', - source = ['vp-tris.c'], - ) diff --git a/progs/vpglsl/for.glsl b/progs/vpglsl/for.glsl deleted file mode 100644 index 45d6845dac..0000000000 --- a/progs/vpglsl/for.glsl +++ /dev/null @@ -1,7 +0,0 @@ - -void main() { - gl_Position = gl_Vertex; - gl_FrontColor = vec4(0); - for (int i = 0; i < 4; ++i) - gl_FrontColor += gl_Color; -} diff --git a/progs/vpglsl/if.glsl b/progs/vpglsl/if.glsl deleted file mode 100644 index 174f69c19c..0000000000 --- a/progs/vpglsl/if.glsl +++ /dev/null @@ -1,7 +0,0 @@ - -void main() { - gl_FrontColor = gl_Color; - gl_Position = gl_Vertex; - if (gl_Position.x < 0.5) - gl_FrontColor = vec4(1.0, 0.0, 0.0, 1.0); -} diff --git a/progs/vpglsl/ifelse.glsl b/progs/vpglsl/ifelse.glsl deleted file mode 100644 index 645b2117a1..0000000000 --- a/progs/vpglsl/ifelse.glsl +++ /dev/null @@ -1,8 +0,0 @@ - -void main() { - gl_Position = gl_Vertex; - if (gl_Position.x < 0.5) - gl_FrontColor = vec4(1.0, 0.0, 0.0, 1.0); - else - gl_FrontColor = gl_Color; -} diff --git a/progs/vpglsl/mov.glsl b/progs/vpglsl/mov.glsl deleted file mode 100644 index 63b16f4754..0000000000 --- a/progs/vpglsl/mov.glsl +++ /dev/null @@ -1,5 +0,0 @@ - -void main() { - gl_FrontColor = gl_Color; - gl_Position = gl_Vertex; -} diff --git a/progs/vpglsl/nestedifs.glsl b/progs/vpglsl/nestedifs.glsl deleted file mode 100644 index abb235cd65..0000000000 --- a/progs/vpglsl/nestedifs.glsl +++ /dev/null @@ -1,13 +0,0 @@ - -void main() { - gl_Position = gl_Vertex; - if (gl_Position.x < 0.5) { - if (gl_Position.y < 0.20) { - gl_FrontColor = vec4(1.0, 0.0, 0.0, 1.0); - } else { - gl_FrontColor = vec4(0.0, 1.0, 0.0, 1.0); - } - gl_FrontColor.y = 1.0; - } else - gl_FrontColor = gl_Color; -} diff --git a/progs/vpglsl/nestedswizzle.glsl b/progs/vpglsl/nestedswizzle.glsl deleted file mode 100644 index a3adb3dfeb..0000000000 --- a/progs/vpglsl/nestedswizzle.glsl +++ /dev/null @@ -1,9 +0,0 @@ - -void main() { - gl_Position = gl_Vertex; - gl_FrontColor = gl_Color; - if (gl_Position.x < 0.5) { - gl_FrontColor.y = 1.0; - } - gl_FrontColor.xzw = vec3(0, 0, 1); -} diff --git a/progs/vpglsl/off2f.glsl b/progs/vpglsl/off2f.glsl deleted file mode 100644 index e06cb42a0e..0000000000 --- a/progs/vpglsl/off2f.glsl +++ /dev/null @@ -1,18 +0,0 @@ -const int KernelSize = 8; -uniform vec2 Offset2f[KernelSize]; -uniform vec4 KernelValue4f[KernelSize]; - -void main(void) -{ - int i; - vec4 sum = vec4(0.0); - vec4 tmp = gl_Color; - vec2 rg, ba; - gl_Position = gl_Vertex; - - rg = Offset2f[4]; - ba = Offset2f[5]; - - - gl_FrontColor = KernelValue4f[0] * vec4(rg, ba); -} diff --git a/progs/vpglsl/psiz-imm.glsl b/progs/vpglsl/psiz-imm.glsl deleted file mode 100644 index 101d314d58..0000000000 --- a/progs/vpglsl/psiz-imm.glsl +++ /dev/null @@ -1,6 +0,0 @@ - -void main() { - gl_FrontColor = gl_Color; - gl_PointSize = 2.0; - gl_Position = gl_Vertex; -} diff --git a/progs/vpglsl/psiz-mul.glsl b/progs/vpglsl/psiz-mul.glsl deleted file mode 100644 index d2a90d8578..0000000000 --- a/progs/vpglsl/psiz-mul.glsl +++ /dev/null @@ -1,6 +0,0 @@ - -void main() { - gl_FrontColor = gl_Color; - gl_PointSize = 10.0 * gl_Color.x; - gl_Position = gl_Vertex; -} diff --git a/progs/vpglsl/varfor1f.glsl b/progs/vpglsl/varfor1f.glsl deleted file mode 100644 index 9c3e8f2a23..0000000000 --- a/progs/vpglsl/varfor1f.glsl +++ /dev/null @@ -1,22 +0,0 @@ -const int KernelSize = 16; -uniform float KernelValue1f[KernelSize]; - -void main(void) -{ - int i; - vec4 sum = vec4(0.0); - vec4 tmp = gl_Color; - gl_Position = gl_Vertex; - - for (i = 0; i < KernelSize; ++i) { - float x, y, z, w; - - x = KernelValue1f[i]; ++i; - y = KernelValue1f[i]; ++i; - z = KernelValue1f[i]; ++i; - w = KernelValue1f[i]; - - sum += tmp * vec4(x, y, z, w); - } - gl_FrontColor = sum; -} diff --git a/progs/vpglsl/varfor2f.glsl b/progs/vpglsl/varfor2f.glsl deleted file mode 100644 index d98a110045..0000000000 --- a/progs/vpglsl/varfor2f.glsl +++ /dev/null @@ -1,24 +0,0 @@ -const int KernelSize = 9; -uniform vec2 KernelValue2f[KernelSize]; - -void main(void) -{ - int i; - vec4 sum = vec4(0.0); - vec4 tmp = gl_Color; - gl_Position = gl_Vertex; - - for (i = 0; i < KernelSize; ++i) { - vec2 rg, ba; - - rg = KernelValue2f[i]; - ++i; - if (i < KernelSize) - ba = KernelValue2f[i]; - else - ba = vec2(0, 0); - - sum += tmp * vec4(rg, ba); - } - gl_FrontColor = sum; -} diff --git a/progs/vpglsl/varfor4f.glsl b/progs/vpglsl/varfor4f.glsl deleted file mode 100644 index c70ba0356f..0000000000 --- a/progs/vpglsl/varfor4f.glsl +++ /dev/null @@ -1,19 +0,0 @@ -const int KernelSize = 4; -uniform vec4 KernelValue4f[KernelSize]; - -void main(void) -{ - int i; - vec4 sum = vec4(0.0); - vec4 tmp = gl_Color; - gl_Position = gl_Vertex; - - for (i = 0; i < KernelSize; ++i) { - vec4 rgba; - - rgba = KernelValue4f[i]; - - sum += tmp * rgba; - } - gl_FrontColor = sum; -} diff --git a/progs/vpglsl/vp-tris.c b/progs/vpglsl/vp-tris.c deleted file mode 100644 index 6a1fa3d3bf..0000000000 --- a/progs/vpglsl/vp-tris.c +++ /dev/null @@ -1,363 +0,0 @@ - -#include <assert.h> -#include <string.h> -#include <stdio.h> -#include <stdlib.h> -#include <math.h> - -#include <GL/glew.h> -#include <GL/glut.h> - -static const char *filename = NULL; -static GLuint nr_steps = 4; -static GLuint prim = GL_TRIANGLES; -static GLfloat psz = 1.0; -static GLboolean pointsmooth = 0; -static GLboolean program_point_size = 0; - -static GLuint fragShader; -static GLuint vertShader; -static GLuint program; - -static void usage( char *name ) -{ - fprintf( stderr, "usage: %s [ options ] shader_filename\n", name ); - fprintf( stderr, "\n" ); - fprintf( stderr, "options:\n" ); - fprintf( stderr, " -f flat shaded\n" ); - fprintf( stderr, " -nNr subdivision steps\n" ); -} - - -static void load_and_compile_shader(GLuint shader, const char *text) -{ - GLint stat; - - glShaderSource(shader, 1, (const GLchar **) &text, NULL); - - glCompileShader(shader); - - glGetShaderiv(shader, GL_COMPILE_STATUS, &stat); - if (!stat) { - GLchar log[1000]; - GLsizei len; - glGetShaderInfoLog(shader, 1000, &len, log); - fprintf(stderr, "vp-tris: problem compiling shader:\n%s\n", log); - exit(1); - } -} - -static void read_shader(GLuint shader, const char *filename) -{ - const int max = 100*1000; - int n; - char *buffer = (char*) malloc(max); - FILE *f = fopen(filename, "r"); - if (!f) { - fprintf(stderr, "vp-tris: Unable to open shader file %s\n", filename); - exit(1); - } - - n = fread(buffer, 1, max, f); - printf("vp-tris: read %d bytes from shader file %s\n", n, filename); - if (n > 0) { - buffer[n] = 0; - load_and_compile_shader(shader, buffer); - } - - fclose(f); - free(buffer); -} - -static void check_link(GLuint prog) -{ - GLint stat; - glGetProgramiv(prog, GL_LINK_STATUS, &stat); - if (!stat) { - GLchar log[1000]; - GLsizei len; - glGetProgramInfoLog(prog, 1000, &len, log); - fprintf(stderr, "Linker error:\n%s\n", log); - } -} - -static void setup_uniforms() -{ - { - GLint loc1f = glGetUniformLocationARB(program, "Offset1f"); - GLint loc2f = glGetUniformLocationARB(program, "Offset2f"); - GLint loc4f = glGetUniformLocationARB(program, "Offset4f"); - GLfloat vecKer[] = - { 1.0, 0.0, 0.0, 1.0, - 0.0, 1.0, 0.0, 1.0, - 1.0, 0.0, 0.0, 1.0, - 0.0, 0.0, 0.0, 1.0 - }; - if (loc1f >= 0) - glUniform1fv(loc1f, 16, vecKer); - - if (loc2f >= 0) - glUniform2fv(loc2f, 8, vecKer); - - if (loc4f >= 0) - glUniform4fv(loc4f, 4, vecKer); - - } - - { - GLint loc1f = glGetUniformLocationARB(program, "KernelValue1f"); - GLint loc2f = glGetUniformLocationARB(program, "KernelValue2f"); - GLint loc4f = glGetUniformLocationARB(program, "KernelValue4f"); - GLfloat vecKer[] = - { 1.0, 0.0, 0.0, 0.25, - 0.0, 1.0, 0.0, 0.25, - 0.0, 0.0, 1.0, 0.25, - 0.0, 0.0, 0.0, 0.25, - 0.5, 0.0, 0.0, 0.35, - 0.0, 0.5, 0.0, 0.35, - 0.0, 0.0, 0.5, 0.35, - 0.0, 0.0, 0.0, 0.35 - }; - if (loc1f >= 0) - glUniform1fv(loc1f, 16, vecKer); - - if (loc2f >= 0) - glUniform2fv(loc2f, 8, vecKer); - - if (loc4f >= 0) - glUniform4fv(loc4f, 4, vecKer); - } -} - -static void prepare_shaders() -{ - static const char *fragShaderText = - "void main() {\n" - " gl_FragColor = gl_Color;\n" - "}\n"; - static const char *vertShaderText = - "void main() {\n" - " gl_FrontColor = gl_Color;\n" - " gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;\n" - "}\n"; - fragShader = glCreateShader(GL_FRAGMENT_SHADER); - load_and_compile_shader(fragShader, fragShaderText); - - - vertShader = glCreateShader(GL_VERTEX_SHADER); - if (filename) - read_shader(vertShader, filename); - else - load_and_compile_shader(vertShader, vertShaderText); - - program = glCreateProgram(); - glAttachShader(program, fragShader); - glAttachShader(program, vertShader); - glLinkProgram(program); - check_link(program); - glUseProgram(program); - - setup_uniforms(); -} - -static void args(int argc, char *argv[]) -{ - GLint i; - - for (i = 1; i < argc; i++) { - if (strncmp(argv[i], "-n", 2) == 0) { - nr_steps = atoi((argv[i]) + 2); - } - else if (strcmp(argv[i], "-f") == 0) { - glShadeModel(GL_FLAT); - } - else if (i == argc - 1) { - filename = argv[i]; - } - else { - usage(argv[0]); - exit(1); - } - } - - if (!filename) { - usage(argv[0]); - exit(1); - } -} - - - - -union vert { - struct { - GLfloat color[3]; - GLfloat pos[3]; - } v; - GLfloat f[6]; -}; - -static void make_midpoint( union vert *out, - const union vert *v0, - const union vert *v1) -{ - int i; - for (i = 0; i < 6; i++) - out->f[i] = v0->f[i] + .5 * (v1->f[i] - v0->f[i]); -} - -static void subdiv( union vert *v0, - union vert *v1, - union vert *v2, - GLuint depth ) -{ - if (depth == 0) { - glColor3fv(v0->v.color); - glVertex3fv(v0->v.pos); - glColor3fv(v1->v.color); - glVertex3fv(v1->v.pos); - glColor3fv(v2->v.color); - glVertex3fv(v2->v.pos); - } - else { - union vert m[3]; - - make_midpoint(&m[0], v0, v1); - make_midpoint(&m[1], v1, v2); - make_midpoint(&m[2], v2, v0); - - subdiv(&m[0], &m[2], v0, depth-1); - subdiv(&m[1], &m[0], v1, depth-1); - subdiv(&m[2], &m[1], v2, depth-1); - subdiv(&m[0], &m[1], &m[2], depth-1); - } -} - -static void enable( GLenum value, GLboolean flag ) -{ - if (flag) - glEnable(value); - else - glDisable(value); -} - -/** Assignment */ -#define ASSIGN_3V( V, V0, V1, V2 ) \ -do { \ - V[0] = V0; \ - V[1] = V1; \ - V[2] = V2; \ -} while(0) - -static void Display( void ) -{ - glClearColor(0.3, 0.3, 0.3, 1); - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - glPointSize(psz); - - glUseProgram(program); - enable( GL_POINT_SMOOTH, pointsmooth ); - enable( GL_VERTEX_PROGRAM_POINT_SIZE_ARB, program_point_size ); - - glBegin(prim); - - - { - union vert v[3]; - - ASSIGN_3V(v[0].v.color, 0,0,1); - ASSIGN_3V(v[0].v.pos, 0.9, -0.9, 0.0); - ASSIGN_3V(v[1].v.color, 1,0,0); - ASSIGN_3V(v[1].v.pos, 0.9, 0.9, 0.0); - ASSIGN_3V(v[2].v.color, 0,1,0); - ASSIGN_3V(v[2].v.pos, -0.9, 0, 0.0); - - subdiv(&v[0], &v[1], &v[2], nr_steps); - } - - glEnd(); - - - glFlush(); -} - - -static void Reshape( int width, int height ) -{ - glViewport( 0, 0, width, height ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - /*glTranslatef( 0.0, 0.0, -15.0 );*/ -} - - -static void CleanUp(void) -{ - glDeleteShader(fragShader); - glDeleteShader(vertShader); - glDeleteProgram(program); -} - -static void Key( unsigned char key, int x, int y ) -{ - (void) x; - (void) y; - switch (key) { - case 'p': - prim = GL_POINTS; - break; - case 't': - prim = GL_TRIANGLES; - break; - case 's': - psz += .5; - break; - case 'S': - if (psz > .5) - psz -= .5; - break; - case 'm': - pointsmooth = !pointsmooth; - break; - case 'z': - program_point_size = !program_point_size; - break; - case '+': - nr_steps++; - break; - case '-': - if (nr_steps) - nr_steps--; - break; - case ' ': - psz = 1.0; - prim = GL_TRIANGLES; - nr_steps = 4; - break; - case 27: - CleanUp(); - exit(0); - break; - } - glutPostRedisplay(); -} - -int main( int argc, char *argv[] ) -{ - glutInit( &argc, argv ); - glutInitWindowPosition( 0, 0 ); - glutInitWindowSize( 250, 250 ); - glutInitDisplayMode( GLUT_RGB | GLUT_SINGLE | GLUT_DEPTH ); - glutCreateWindow(argv[argc-1]); - glewInit(); - glutReshapeFunc( Reshape ); - glutKeyboardFunc( Key ); - glutDisplayFunc( Display ); - args( argc, argv ); - prepare_shaders(); - glutMainLoop(); - return 0; -} diff --git a/progs/wgl/SConscript b/progs/wgl/SConscript deleted file mode 100644 index 31f61676de..0000000000 --- a/progs/wgl/SConscript +++ /dev/null @@ -1,25 +0,0 @@ -Import('*') - -if env['platform'] != 'windows': - Return() - -env = env.Clone() - -env.Append(LIBS = [ - 'kernel32', - 'user32', - 'gdi32', -]) - -progs = [ - 'sharedtex_mt', - 'wglthreads', -] - -for prog in progs: - env.Program( - target = prog, - source = prog + '/' + prog + '.c', - ) - -env.Program('wglinfo', ['wglinfo.c']) diff --git a/progs/wgl/sharedtex_mt/sharedtex_mt.c b/progs/wgl/sharedtex_mt/sharedtex_mt.c deleted file mode 100644 index 779e15001d..0000000000 --- a/progs/wgl/sharedtex_mt/sharedtex_mt.c +++ /dev/null @@ -1,565 +0,0 @@ -/* - * Test sharing of display lists and texture objects between GLX contests. - * Brian Paul - * Summer 2000 - * - * - * Copyright (C) 2000 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * - * Modified 2009 for multithreading by Thomas Hellstrom. - * - * Port to windows by Michal Krol. - */ - - -#include <windows.h> -#include <GL/gl.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#pragma comment(lib, "opengl32.lib") - -struct thread_init_arg { - int id; -}; - -struct window { - CRITICAL_SECTION drawMutex; - HDC hDC; - HWND Win; - HGLRC Context; - float Angle; - int Id; - HGLRC sharedContext; - HANDLE hEventInitialised; -}; - - -#define MAX_WINDOWS 20 -static struct window Windows[MAX_WINDOWS]; -static int NumWindows = 0; -static HANDLE terminate = NULL; -static HGLRC gCtx = NULL; -static HDC gHDC = NULL; -static GLuint Textures[3]; - - - -static void -Error(const char *msg) -{ - fprintf(stderr, "Error - %s\n", msg); - exit(1); -} - -static void -Resize(struct window *h, unsigned int width, unsigned int height); - -static LRESULT CALLBACK -WndProc(HWND hWnd, - UINT uMsg, - WPARAM wParam, - LPARAM lParam ) -{ - switch (uMsg) { - case WM_KEYDOWN: - SetEvent(terminate); - break; - case WM_SIZE: - { - LONG index = GetWindowLong(hWnd, GWL_USERDATA); - - if (index >= 0 && index < MAX_WINDOWS) { - RECT r; - - GetClientRect(hWnd, &r); - Resize(&Windows[index], r.right, r.bottom); - } - } - break; - case WM_CREATE: - { - CREATESTRUCT *pcs = (CREATESTRUCT *) lParam; - - SetWindowLong(hWnd, GWL_USERDATA, (LONG) pcs->lpCreateParams); - } - break; - case WM_DESTROY: - PostQuitMessage(0); - break; - default: - return DefWindowProc(hWnd, uMsg, wParam, lParam); - } - - return 0; -} - -static int -initMainthread(void) -{ - WNDCLASS wc = {0}; - HWND win; - PIXELFORMATDESCRIPTOR pfd = {0}; - int visinfo; - - wc.lpfnWndProc = WndProc; - wc.lpszClassName = "sharedtex_mt.hidden"; - wc.style = CS_OWNDC | CS_HREDRAW | CS_VREDRAW; - RegisterClass(&wc); - - win = CreateWindowEx(0, - wc.lpszClassName, - "sharedtex_mt.hidden", - WS_CLIPSIBLINGS | WS_CLIPCHILDREN, - CW_USEDEFAULT, - CW_USEDEFAULT, - CW_USEDEFAULT, - CW_USEDEFAULT, - NULL, - NULL, - wc.hInstance, - (LPVOID) -1); - if (!win) { - Error("Couldn't create window"); - } - - gHDC = GetDC(win); - if (!gHDC) { - Error("Couldn't obtain HDC"); - } - - pfd.cColorBits = 24; - pfd.cDepthBits = 24; - pfd.dwFlags = PFD_DOUBLEBUFFER | PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL; - pfd.iLayerType = PFD_MAIN_PLANE; - pfd.iPixelType = PFD_TYPE_RGBA; - pfd.nSize = sizeof(pfd); - pfd.nVersion = 1; - - visinfo = ChoosePixelFormat(gHDC, &pfd); - if (!visinfo) { - Error("Unable to find RGB, Z, double-buffered visual"); - } - - SetPixelFormat(gHDC, visinfo, &pfd); - gCtx = wglCreateContext(gHDC); - if (!gCtx) { - Error("Couldn't create WGL context"); - } - - return 0; -} - -static struct window * -AddWindow(int xpos, int ypos, HGLRC sCtx) -{ - struct window *win = &Windows[NumWindows]; - WNDCLASS wc = {0}; - int width = 300, height = 300; - - if (NumWindows >= MAX_WINDOWS) - return NULL; - - memset(win, 0, sizeof(*win)); - InitializeCriticalSection(&win->drawMutex); - win->Angle = 0.0; - win->Id = NumWindows++; - - wc.hbrBackground = (HBRUSH) (COLOR_BTNFACE + 1); - wc.hCursor = LoadCursor(NULL, IDC_ARROW); - wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); - wc.lpfnWndProc = WndProc; - wc.lpszClassName = "sharedtex_mt"; - wc.style = CS_OWNDC | CS_HREDRAW | CS_VREDRAW; - RegisterClass(&wc); - - win->Win = CreateWindowEx(0, - wc.lpszClassName, - "sharedtex_mt", - WS_SIZEBOX | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, - xpos, - ypos, - width, - height, - NULL, - NULL, - wc.hInstance, - (LPVOID) win->Id); - if (!win->Win) { - Error("Couldn't create window"); - } - - win->sharedContext = sCtx; - - ShowWindow(win->Win, SW_SHOW); - - return win; -} - - -static void -InitGLstuff(void) -{ - glGenTextures(3, Textures); - - /* setup first texture object */ - { - GLubyte image[16][16][4]; - GLint i, j; - glBindTexture(GL_TEXTURE_2D, Textures[0]); - - /* red/white checkerboard */ - for (i = 0; i < 16; i++) { - for (j = 0; j < 16; j++) { - if ((i ^ j) & 1) { - image[i][j][0] = 255; - image[i][j][1] = 255; - image[i][j][2] = 255; - image[i][j][3] = 255; - } - else { - image[i][j][0] = 255; - image[i][j][1] = 0; - image[i][j][2] = 0; - image[i][j][3] = 255; - } - } - } - - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 16, 16, 0, GL_RGBA, - GL_UNSIGNED_BYTE, image); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - } - - /* setup second texture object */ - { - GLubyte image[8][8][3]; - GLint i, j; - glBindTexture(GL_TEXTURE_2D, Textures[1]); - - /* green/yellow checkerboard */ - for (i = 0; i < 8; i++) { - for (j = 0; j < 8; j++) { - if ((i ^ j) & 1) { - image[i][j][0] = 0; - image[i][j][1] = 255; - image[i][j][2] = 0; - } - else { - image[i][j][0] = 255; - image[i][j][1] = 255; - image[i][j][2] = 0; - } - } - } - - glPixelStorei(GL_UNPACK_ALIGNMENT, 2); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 8, 8, 0, GL_RGB, - GL_UNSIGNED_BYTE, image); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - } - - /* setup second texture object */ - { - GLubyte image[4][4][3]; - GLint i, j; - glBindTexture(GL_TEXTURE_2D, Textures[2]); - - /* blue/gray checkerboard */ - for (i = 0; i < 4; i++) { - for (j = 0; j < 4; j++) { - if ((i ^ j) & 1) { - image[i][j][0] = 0; - image[i][j][1] = 0; - image[i][j][2] = 255; - } - else { - image[i][j][0] = 200; - image[i][j][1] = 200; - image[i][j][2] = 200; - } - } - } - - glPixelStorei(GL_UNPACK_ALIGNMENT, 2); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 4, 4, 0, GL_RGB, - GL_UNSIGNED_BYTE, image); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - } - - /* Now make the cube object display list */ - - printf("GL_RENDERER: %s\n", (char *) glGetString(GL_RENDERER)); - printf("GL_VERSION: %s\n", (char *) glGetString(GL_VERSION)); - printf("GL_VENDOR: %s\n", (char *) glGetString(GL_VENDOR)); -} - -static void -Redraw(struct window *h) -{ - EnterCriticalSection(&h->drawMutex); - if (!wglMakeCurrent(h->hDC, h->Context)) { - LeaveCriticalSection(&h->drawMutex); - Error("wglMakeCurrent failed in Redraw"); - return; - } - - h->Angle += 1.0; - - glShadeModel(GL_FLAT); - glClearColor(0.25, 0.25, 0.25, 1.0); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glEnable(GL_TEXTURE_2D); - glEnable(GL_DEPTH_TEST); - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - - glColor3f(1, 1, 1); - - glPushMatrix(); - if (h->Id == 0) - glRotatef(h->Angle, 0, 1, -1); - else if (h->Id == 1) - glRotatef(-(h->Angle), 0, 1, -1); - else if (h->Id == 2) - glRotatef(h->Angle, 0, 1, 1); - else if (h->Id == 3) - glRotatef(-(h->Angle), 0, 1, 1); - glBindTexture(GL_TEXTURE_2D, Textures[0]); - glBegin(GL_POLYGON); - glTexCoord2f(0, 0); glVertex3f(-1, -1, -1); - glTexCoord2f(1, 0); glVertex3f(-1, 1, -1); - glTexCoord2f(1, 1); glVertex3f(-1, 1, 1); - glTexCoord2f(0, 1); glVertex3f(-1, -1, 1); - glEnd(); - glBegin(GL_POLYGON); - glTexCoord2f(0, 0); glVertex3f(1, -1, -1); - glTexCoord2f(1, 0); glVertex3f(1, 1, -1); - glTexCoord2f(1, 1); glVertex3f(1, 1, 1); - glTexCoord2f(0, 1); glVertex3f(1, -1, 1); - glEnd(); - - glBindTexture(GL_TEXTURE_2D, Textures[1]); - glBegin(GL_POLYGON); - glTexCoord2f(0, 0); glVertex3f(-1, -1, -1); - glTexCoord2f(1, 0); glVertex3f( 1, -1, -1); - glTexCoord2f(1, 1); glVertex3f( 1, -1, 1); - glTexCoord2f(0, 1); glVertex3f(-1, -1, 1); - glEnd(); - glBegin(GL_POLYGON); - glTexCoord2f(0, 0); glVertex3f(-1, 1, -1); - glTexCoord2f(1, 0); glVertex3f( 1, 1, -1); - glTexCoord2f(1, 1); glVertex3f( 1, 1, 1); - glTexCoord2f(0, 1); glVertex3f(-1, 1, 1); - glEnd(); - - glBindTexture(GL_TEXTURE_2D, Textures[2]); - glBegin(GL_POLYGON); - glTexCoord2f(0, 0); glVertex3f(-1, -1, -1); - glTexCoord2f(1, 0); glVertex3f( 1, -1, -1); - glTexCoord2f(1, 1); glVertex3f( 1, 1, -1); - glTexCoord2f(0, 1); glVertex3f(-1, 1, -1); - glEnd(); - glBegin(GL_POLYGON); - glTexCoord2f(0, 0); glVertex3f(-1, -1, 1); - glTexCoord2f(1, 0); glVertex3f( 1, -1, 1); - glTexCoord2f(1, 1); glVertex3f( 1, 1, 1); - glTexCoord2f(0, 1); glVertex3f(-1, 1, 1); - glEnd(); - - glPopMatrix(); - - SwapBuffers(h->hDC); - - if (!wglMakeCurrent(NULL, NULL)) { - Error("wglMakeCurrent failed in Redraw"); - } - LeaveCriticalSection(&h->drawMutex); -} - -static DWORD WINAPI -threadRunner (void *arg) -{ - struct thread_init_arg *tia = (struct thread_init_arg *) arg; - struct window *win; - PIXELFORMATDESCRIPTOR pfd = {0}; - int visinfo; - - win = &Windows[tia->id]; - - win->hDC = GetDC(win->Win); - if (!win->hDC) { - Error("Couldn't obtain HDC"); - } - - /* Wait for the previous thread */ - if(tia->id > 0) - WaitForSingleObject(Windows[tia->id - 1].hEventInitialised, INFINITE); - - pfd.cColorBits = 24; - pfd.cDepthBits = 24; - pfd.dwFlags = PFD_DOUBLEBUFFER | PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL; - pfd.iLayerType = PFD_MAIN_PLANE; - pfd.iPixelType = PFD_TYPE_RGBA; - pfd.nSize = sizeof(pfd); - pfd.nVersion = 1; - - visinfo = ChoosePixelFormat(win->hDC, &pfd); - if (!visinfo) { - Error("Unable to find RGB, Z, double-buffered visual"); - } - - SetPixelFormat(win->hDC, visinfo, &pfd); - win->Context = wglCreateContext(win->hDC); - if (!win->Context) { - Error("Couldn't create WGL context"); - } - - if (win->sharedContext) { - if(!wglShareLists(win->sharedContext, win->Context)) - Error("Couldn't share WGL context lists"); - } - - SetEvent(win->hEventInitialised); - - /* Wait for all threads to initialize otherwise wglShareLists will fail */ - if(tia->id < NumWindows - 1) - WaitForSingleObject(Windows[NumWindows - 1].hEventInitialised, INFINITE); - - SendMessage(win->Win, WM_SIZE, 0, 0); - - while (1) { - MSG msg; - - /* wait 1 ms for signal either to exit or process messages */ - switch (MsgWaitForMultipleObjects(1, &terminate, FALSE, 1, QS_ALLINPUT)) { - case WAIT_OBJECT_0: - SendMessage(win->Win, WM_CLOSE, 0, 0); - break; - case WAIT_OBJECT_0 + 1: - break; - } - - while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { - if (msg.message == WM_QUIT) { - return 0; - } - TranslateMessage(&msg); - DispatchMessage(&msg); - } - - Redraw(win); - } - - return 0; -} - -static void -Resize(struct window *h, unsigned int width, unsigned int height) -{ - if (!h->Context) - return; - - EnterCriticalSection(&h->drawMutex); - - if (!wglMakeCurrent(h->hDC, h->Context)) { - LeaveCriticalSection(&h->drawMutex); - Error("wglMakeCurrent failed in Resize()"); - return; - } - - glViewport(0, 0, width, height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-1, 1, -1, 1, 2, 10); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0, 0, -4.5); - if (!wglMakeCurrent(NULL, NULL)) { - Error("wglMakeCurrent failed in Resize()"); - } - LeaveCriticalSection(&h->drawMutex); -} - -int -main(int argc, char *argv[]) -{ - struct thread_init_arg tia[MAX_WINDOWS]; - struct window *h[MAX_WINDOWS]; - HANDLE threads[MAX_WINDOWS]; - int i; - - terminate = CreateEvent(NULL, TRUE, FALSE, NULL); - - if (initMainthread()) - return -1; - - /* four windows and contexts sharing display lists and texture objects */ - h[0] = AddWindow( 10, 10, gCtx); - h[1] = AddWindow(330, 10, gCtx); - h[2] = AddWindow( 10, 350, gCtx); - h[3] = AddWindow(330, 350, gCtx); - - for (i = 0; i < NumWindows; i++) { - Windows[i].hEventInitialised = CreateEvent(NULL, TRUE, FALSE, NULL); - } - - for (i = 0; i < NumWindows; i++) { - DWORD id; - - tia[i].id = i; - threads[i] = CreateThread(NULL, 0, threadRunner, &tia[i], 0, &id); - - WaitForSingleObject(Windows[i].hEventInitialised, INFINITE); - } - - if (!wglMakeCurrent(gHDC, gCtx)) { - Error("wglMakeCurrent failed for init thread."); - return -1; - } - - InitGLstuff(); - - while (1) { - MSG msg; - - /* wait 1 ms for signal either to exit or process messages */ - switch (MsgWaitForMultipleObjects(NumWindows, threads, TRUE, 1, QS_ALLINPUT)) { - case WAIT_OBJECT_0: - return 0; - } - - while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { - if (msg.message == WM_QUIT) { - return 0; - } - TranslateMessage(&msg); - DispatchMessage(&msg); - } - } - - return 0; -} diff --git a/progs/wgl/wglinfo.c b/progs/wgl/wglinfo.c deleted file mode 100644 index 864372c2f9..0000000000 --- a/progs/wgl/wglinfo.c +++ /dev/null @@ -1,736 +0,0 @@ -/* - * Copyright (C) 2009 VMware, Inc. - * Copyright (C) 1999-2006 Brian Paul - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - - -/* - * This program is a work-alike of the GLX glxinfo program. - * Command line options: - * -t print wide table - * -v print verbose information - * -b only print ID of "best" visual on screen 0 - * -l print interesting OpenGL limits (added 5 Sep 2002) - */ - -#include <windows.h> - -#include <GL/gl.h> -#include <GL/glext.h> -#include <GL/wglext.h> -#include <stdio.h> -#include <string.h> -#include <stdlib.h> - - -typedef enum -{ - Normal, - Wide, - Verbose -} InfoMode; - - -/* - * Print a list of extensions, with word-wrapping. - */ -static void -print_extension_list(const char *ext) -{ - const char *indentString = " "; - const int indent = 4; - const int max = 79; - int width, i, j; - - if (!ext || !ext[0]) - return; - - width = indent; - printf(indentString); - i = j = 0; - while (1) { - if (ext[j] == ' ' || ext[j] == 0) { - /* found end of an extension name */ - const int len = j - i; - if (width + len > max) { - /* start a new line */ - printf("\n"); - width = indent; - printf(indentString); - } - /* print the extension name between ext[i] and ext[j] */ - while (i < j) { - printf("%c", ext[i]); - i++; - } - /* either we're all done, or we'll continue with next extension */ - width += len + 1; - if (ext[j] == 0) { - break; - } - else { - i++; - j++; - if (ext[j] == 0) - break; - printf(", "); - width += 2; - } - } - j++; - } - printf("\n"); -} - - -/** - * Print interesting limits for vertex/fragment programs. - */ -static void -print_program_limits(GLenum target) -{ -#if defined(GL_ARB_vertex_program) || defined(GL_ARB_fragment_program) - struct token_name { - GLenum token; - const char *name; - }; - static const struct token_name limits[] = { - { GL_MAX_PROGRAM_INSTRUCTIONS_ARB, "GL_MAX_PROGRAM_INSTRUCTIONS_ARB" }, - { GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB, "GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB" }, - { GL_MAX_PROGRAM_TEMPORARIES_ARB, "GL_MAX_PROGRAM_TEMPORARIES_ARB" }, - { GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB, "GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB" }, - { GL_MAX_PROGRAM_PARAMETERS_ARB, "GL_MAX_PROGRAM_PARAMETERS_ARB" }, - { GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB, "GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB" }, - { GL_MAX_PROGRAM_ATTRIBS_ARB, "GL_MAX_PROGRAM_ATTRIBS_ARB" }, - { GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB, "GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB" }, - { GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB, "GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB" }, - { GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB, "GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB" }, - { GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB, "GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB" }, - { GL_MAX_PROGRAM_ENV_PARAMETERS_ARB, "GL_MAX_PROGRAM_ENV_PARAMETERS_ARB" }, - { GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB, "GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB" }, - { GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB, "GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB" }, - { GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB, "GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB" }, - { GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB, "GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB" }, - { GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB, "GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB" }, - { GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB, "GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB" }, - { (GLenum) 0, NULL } - }; - PFNGLGETPROGRAMIVARBPROC GetProgramivARB_func = (PFNGLGETPROGRAMIVARBPROC) - wglGetProcAddress("glGetProgramivARB"); - GLint max[1]; - int i; - - if (target == GL_VERTEX_PROGRAM_ARB) { - printf(" GL_VERTEX_PROGRAM_ARB:\n"); - } - else if (target == GL_FRAGMENT_PROGRAM_ARB) { - printf(" GL_FRAGMENT_PROGRAM_ARB:\n"); - } - else { - return; /* something's wrong */ - } - - for (i = 0; limits[i].token; i++) { - GetProgramivARB_func(target, limits[i].token, max); - if (glGetError() == GL_NO_ERROR) { - printf(" %s = %d\n", limits[i].name, max[0]); - } - } -#endif /* GL_ARB_vertex_program / GL_ARB_fragment_program */ -} - - -/** - * Print interesting limits for vertex/fragment shaders. - */ -static void -print_shader_limits(GLenum target) -{ - struct token_name { - GLenum token; - const char *name; - }; -#if defined(GL_ARB_vertex_shader) - static const struct token_name vertex_limits[] = { - { GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB, "GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB" }, - { GL_MAX_VARYING_FLOATS_ARB, "GL_MAX_VARYING_FLOATS_ARB" }, - { GL_MAX_VERTEX_ATTRIBS_ARB, "GL_MAX_VERTEX_ATTRIBS_ARB" }, - { GL_MAX_TEXTURE_IMAGE_UNITS_ARB, "GL_MAX_TEXTURE_IMAGE_UNITS_ARB" }, - { GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB, "GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB" }, - { GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB, "GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB" }, - { GL_MAX_TEXTURE_COORDS_ARB, "GL_MAX_TEXTURE_COORDS_ARB" }, - { (GLenum) 0, NULL } - }; -#endif -#if defined(GL_ARB_fragment_shader) - static const struct token_name fragment_limits[] = { - { GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB, "GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB" }, - { GL_MAX_TEXTURE_COORDS_ARB, "GL_MAX_TEXTURE_COORDS_ARB" }, - { GL_MAX_TEXTURE_IMAGE_UNITS_ARB, "GL_MAX_TEXTURE_IMAGE_UNITS_ARB" }, - { (GLenum) 0, NULL } - }; -#endif - GLint max[1]; - int i; - -#if defined(GL_ARB_vertex_shader) - if (target == GL_VERTEX_SHADER_ARB) { - printf(" GL_VERTEX_SHADER_ARB:\n"); - for (i = 0; vertex_limits[i].token; i++) { - glGetIntegerv(vertex_limits[i].token, max); - if (glGetError() == GL_NO_ERROR) { - printf(" %s = %d\n", vertex_limits[i].name, max[0]); - } - } - } -#endif -#if defined(GL_ARB_fragment_shader) - if (target == GL_FRAGMENT_SHADER_ARB) { - printf(" GL_FRAGMENT_SHADER_ARB:\n"); - for (i = 0; fragment_limits[i].token; i++) { - glGetIntegerv(fragment_limits[i].token, max); - if (glGetError() == GL_NO_ERROR) { - printf(" %s = %d\n", fragment_limits[i].name, max[0]); - } - } - } -#endif -} - - -/** - * Print interesting OpenGL implementation limits. - */ -static void -print_limits(const char *extensions) -{ - struct token_name { - GLuint count; - GLenum token; - const char *name; - }; - static const struct token_name limits[] = { - { 1, GL_MAX_ATTRIB_STACK_DEPTH, "GL_MAX_ATTRIB_STACK_DEPTH" }, - { 1, GL_MAX_CLIENT_ATTRIB_STACK_DEPTH, "GL_MAX_CLIENT_ATTRIB_STACK_DEPTH" }, - { 1, GL_MAX_CLIP_PLANES, "GL_MAX_CLIP_PLANES" }, - { 1, GL_MAX_COLOR_MATRIX_STACK_DEPTH, "GL_MAX_COLOR_MATRIX_STACK_DEPTH" }, - { 1, GL_MAX_ELEMENTS_VERTICES, "GL_MAX_ELEMENTS_VERTICES" }, - { 1, GL_MAX_ELEMENTS_INDICES, "GL_MAX_ELEMENTS_INDICES" }, - { 1, GL_MAX_EVAL_ORDER, "GL_MAX_EVAL_ORDER" }, - { 1, GL_MAX_LIGHTS, "GL_MAX_LIGHTS" }, - { 1, GL_MAX_LIST_NESTING, "GL_MAX_LIST_NESTING" }, - { 1, GL_MAX_MODELVIEW_STACK_DEPTH, "GL_MAX_MODELVIEW_STACK_DEPTH" }, - { 1, GL_MAX_NAME_STACK_DEPTH, "GL_MAX_NAME_STACK_DEPTH" }, - { 1, GL_MAX_PIXEL_MAP_TABLE, "GL_MAX_PIXEL_MAP_TABLE" }, - { 1, GL_MAX_PROJECTION_STACK_DEPTH, "GL_MAX_PROJECTION_STACK_DEPTH" }, - { 1, GL_MAX_TEXTURE_STACK_DEPTH, "GL_MAX_TEXTURE_STACK_DEPTH" }, - { 1, GL_MAX_TEXTURE_SIZE, "GL_MAX_TEXTURE_SIZE" }, - { 1, GL_MAX_3D_TEXTURE_SIZE, "GL_MAX_3D_TEXTURE_SIZE" }, - { 2, GL_MAX_VIEWPORT_DIMS, "GL_MAX_VIEWPORT_DIMS" }, - { 2, GL_ALIASED_LINE_WIDTH_RANGE, "GL_ALIASED_LINE_WIDTH_RANGE" }, - { 2, GL_SMOOTH_LINE_WIDTH_RANGE, "GL_SMOOTH_LINE_WIDTH_RANGE" }, - { 2, GL_ALIASED_POINT_SIZE_RANGE, "GL_ALIASED_POINT_SIZE_RANGE" }, - { 2, GL_SMOOTH_POINT_SIZE_RANGE, "GL_SMOOTH_POINT_SIZE_RANGE" }, -#if defined(GL_ARB_texture_cube_map) - { 1, GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB, "GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB" }, -#endif -#if defined(GLX_NV_texture_rectangle) - { 1, GL_MAX_RECTANGLE_TEXTURE_SIZE_NV, "GL_MAX_RECTANGLE_TEXTURE_SIZE_NV" }, -#endif -#if defined(GL_ARB_texture_compression) - { 1, GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB, "GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB" }, -#endif -#if defined(GL_ARB_multitexture) - { 1, GL_MAX_TEXTURE_UNITS_ARB, "GL_MAX_TEXTURE_UNITS_ARB" }, -#endif -#if defined(GL_EXT_texture_lod_bias) - { 1, GL_MAX_TEXTURE_LOD_BIAS_EXT, "GL_MAX_TEXTURE_LOD_BIAS_EXT" }, -#endif -#if defined(GL_EXT_texture_filter_anisotropic) - { 1, GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, "GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT" }, -#endif -#if defined(GL_ARB_draw_buffers) - { 1, GL_MAX_DRAW_BUFFERS_ARB, "GL_MAX_DRAW_BUFFERS_ARB" }, -#endif - { 0, (GLenum) 0, NULL } - }; - GLint i, max[2]; - - printf("OpenGL limits:\n"); - for (i = 0; limits[i].count; i++) { - glGetIntegerv(limits[i].token, max); - if (glGetError() == GL_NO_ERROR) { - if (limits[i].count == 1) - printf(" %s = %d\n", limits[i].name, max[0]); - else /* XXX fix if we ever query something with more than 2 values */ - printf(" %s = %d, %d\n", limits[i].name, max[0], max[1]); - } - } - -#if defined(GL_EXT_convolution) - { - PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC glGetConvolutionParameterivEXT_func = - (PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC)wglGetProcAddress("glGetConvolutionParameterivEXT"); - if(glGetConvolutionParameterivEXT_func) { - /* these don't fit into the above mechanism, unfortunately */ - glGetConvolutionParameterivEXT_func(GL_CONVOLUTION_2D, GL_MAX_CONVOLUTION_WIDTH, max); - glGetConvolutionParameterivEXT_func(GL_CONVOLUTION_2D, GL_MAX_CONVOLUTION_HEIGHT, max+1); - if (glGetError() == GL_NONE) { - printf(" GL_MAX_CONVOLUTION_WIDTH/HEIGHT = %d, %d\n", max[0], max[1]); - } - } - } -#endif - -#if defined(GL_ARB_vertex_program) - if (strstr(extensions, "GL_ARB_vertex_program")) { - print_program_limits(GL_VERTEX_PROGRAM_ARB); - } -#endif -#if defined(GL_ARB_fragment_program) - if (strstr(extensions, "GL_ARB_fragment_program")) { - print_program_limits(GL_FRAGMENT_PROGRAM_ARB); - } -#endif -#if defined(GL_ARB_vertex_shader) - if (strstr(extensions, "GL_ARB_vertex_shader")) { - print_shader_limits(GL_VERTEX_SHADER_ARB); - } -#endif -#if defined(GL_ARB_fragment_shader) - if (strstr(extensions, "GL_ARB_fragment_shader")) { - print_shader_limits(GL_FRAGMENT_SHADER_ARB); - } -#endif -} - - -static LRESULT CALLBACK -WndProc(HWND hWnd, - UINT uMsg, - WPARAM wParam, - LPARAM lParam ) -{ - switch (uMsg) { - case WM_DESTROY: - PostQuitMessage(0); - break; - default: - return DefWindowProc(hWnd, uMsg, wParam, lParam); - } - - return 0; -} - - -static void -print_screen_info(HDC _hdc, GLboolean limits) -{ - WNDCLASS wc; - HWND win; - HGLRC ctx; - int visinfo; - HDC hdc; - PIXELFORMATDESCRIPTOR pfd; - - memset(&wc, 0, sizeof wc); - wc.hbrBackground = (HBRUSH) (COLOR_BTNFACE + 1); - wc.hCursor = LoadCursor(NULL, IDC_ARROW); - wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); - wc.lpfnWndProc = WndProc; - wc.lpszClassName = "wglinfo"; - wc.style = CS_OWNDC | CS_HREDRAW | CS_VREDRAW; - RegisterClass(&wc); - - win = CreateWindowEx(0, - wc.lpszClassName, - "wglinfo", - WS_CLIPSIBLINGS | WS_CLIPCHILDREN, - CW_USEDEFAULT, - CW_USEDEFAULT, - CW_USEDEFAULT, - CW_USEDEFAULT, - NULL, - NULL, - wc.hInstance, - NULL); - if (!win) { - fprintf(stderr, "Couldn't create window"); - return; - } - - hdc = GetDC(win); - if (!hdc) { - fprintf(stderr, "Couldn't obtain HDC"); - return; - } - - pfd.cColorBits = 3; - pfd.cRedBits = 1; - pfd.cGreenBits = 1; - pfd.cBlueBits = 1; - pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL; - pfd.iLayerType = PFD_MAIN_PLANE; - pfd.iPixelType = PFD_TYPE_RGBA; - pfd.nSize = sizeof(pfd); - pfd.nVersion = 1; - - visinfo = ChoosePixelFormat(hdc, &pfd); - if (!visinfo) { - pfd.dwFlags |= PFD_DOUBLEBUFFER; - visinfo = ChoosePixelFormat(hdc, &pfd); - } - - if (!visinfo) { - fprintf(stderr, "Error: couldn't find RGB WGL visual\n"); - return; - } - - SetPixelFormat(hdc, visinfo, &pfd); - ctx = wglCreateContext(hdc); - if (!ctx) { - fprintf(stderr, "Error: wglCreateContext failed\n"); - return; - } - - if (wglMakeCurrent(hdc, ctx)) { -#if defined(WGL_ARB_extensions_string) - PFNWGLGETEXTENSIONSSTRINGARBPROC wglGetExtensionsStringARB_func = - (PFNWGLGETEXTENSIONSSTRINGARBPROC)wglGetProcAddress("wglGetExtensionsStringARB"); -#endif - const char *glVendor = (const char *) glGetString(GL_VENDOR); - const char *glRenderer = (const char *) glGetString(GL_RENDERER); - const char *glVersion = (const char *) glGetString(GL_VERSION); - const char *glExtensions = (const char *) glGetString(GL_EXTENSIONS); - -#if defined(WGL_ARB_extensions_string) - if(wglGetExtensionsStringARB_func) { - const char *wglExtensions = wglGetExtensionsStringARB_func(hdc); - if(wglExtensions) { - printf("WGL extensions:\n"); - print_extension_list(wglExtensions); - } - } -#endif - printf("OpenGL vendor string: %s\n", glVendor); - printf("OpenGL renderer string: %s\n", glRenderer); - printf("OpenGL version string: %s\n", glVersion); -#ifdef GL_VERSION_2_0 - if (glVersion[0] >= '2' && glVersion[1] == '.') { - char *v = (char *) glGetString(GL_SHADING_LANGUAGE_VERSION); - printf("OpenGL shading language version string: %s\n", v); - } -#endif - - printf("OpenGL extensions:\n"); - print_extension_list(glExtensions); - if (limits) - print_limits(glExtensions); - } - else { - fprintf(stderr, "Error: wglMakeCurrent failed\n"); - } - - DestroyWindow(win); -} - - -static const char * -visual_render_type_name(BYTE iPixelType) -{ - switch (iPixelType) { - case PFD_TYPE_RGBA: - return "rgba"; - case PFD_TYPE_COLORINDEX: - return "ci"; - default: - return ""; - } -} - -static void -print_visual_attribs_verbose(int iPixelFormat, LPPIXELFORMATDESCRIPTOR ppfd) -{ - printf("Visual ID: %x generic=%d native=%d\n", - iPixelFormat, - ppfd->dwFlags & PFD_GENERIC_FORMAT ? 1 : 0, - ppfd->dwFlags & PFD_DRAW_TO_WINDOW ? 1 : 0); - printf(" bufferSize=%d level=%d renderType=%s doubleBuffer=%d stereo=%d\n", - 0 /* ppfd->bufferSize */, 0 /* ppfd->level */, - visual_render_type_name(ppfd->iPixelType), - ppfd->dwFlags & PFD_DOUBLEBUFFER ? 1 : 0, - ppfd->dwFlags & PFD_STEREO ? 1 : 0); - printf(" rgba: cRedBits=%d cGreenBits=%d cBlueBits=%d cAlphaBits=%d\n", - ppfd->cRedBits, ppfd->cGreenBits, - ppfd->cBlueBits, ppfd->cAlphaBits); - printf(" cAuxBuffers=%d cDepthBits=%d cStencilBits=%d\n", - ppfd->cAuxBuffers, ppfd->cDepthBits, ppfd->cStencilBits); - printf(" accum: cRedBits=%d cGreenBits=%d cBlueBits=%d cAlphaBits=%d\n", - ppfd->cAccumRedBits, ppfd->cAccumGreenBits, - ppfd->cAccumBlueBits, ppfd->cAccumAlphaBits); - printf(" multiSample=%d multiSampleBuffers=%d\n", - 0 /* ppfd->numSamples */, 0 /* ppfd->numMultisample */); -} - - -static void -print_visual_attribs_short_header(void) -{ - printf(" visual x bf lv rg d st colorbuffer ax dp st accumbuffer ms cav\n"); - printf(" id gen nat sp sz l ci b ro r g b a bf th cl r g b a ns b eat\n"); - printf("-----------------------------------------------------------------------\n"); -} - - -static void -print_visual_attribs_short(int iPixelFormat, LPPIXELFORMATDESCRIPTOR ppfd) -{ - char *caveat = "None"; - - printf("0x%02x %2d %2d %2d %2d %2d %c%c %c %c %2d %2d %2d %2d %2d %2d %2d", - iPixelFormat, - ppfd->dwFlags & PFD_GENERIC_FORMAT ? 1 : 0, - ppfd->dwFlags & PFD_DRAW_TO_WINDOW ? 1 : 0, - 0, - 0 /* ppfd->bufferSize */, - 0 /* ppfd->level */, - ppfd->iPixelType == PFD_TYPE_RGBA ? 'r' : ' ', - ppfd->iPixelType == PFD_TYPE_COLORINDEX ? 'c' : ' ', - ppfd->dwFlags & PFD_DOUBLEBUFFER ? 'y' : '.', - ppfd->dwFlags & PFD_STEREO ? 'y' : '.', - ppfd->cRedBits, ppfd->cGreenBits, - ppfd->cBlueBits, ppfd->cAlphaBits, - ppfd->cAuxBuffers, - ppfd->cDepthBits, - ppfd->cStencilBits - ); - - printf(" %2d %2d %2d %2d %2d %1d %s\n", - ppfd->cAccumRedBits, ppfd->cAccumGreenBits, - ppfd->cAccumBlueBits, ppfd->cAccumAlphaBits, - 0 /* ppfd->numSamples */, 0 /* ppfd->numMultisample */, - caveat - ); -} - - -static void -print_visual_attribs_long_header(void) -{ - printf("Vis Vis Visual Trans buff lev render DB ste r g b a aux dep ste accum buffers MS MS\n"); - printf(" ID Depth Type parent size el type reo sz sz sz sz buf th ncl r g b a num bufs\n"); - printf("----------------------------------------------------------------------------------------------------\n"); -} - - -static void -print_visual_attribs_long(int iPixelFormat, LPPIXELFORMATDESCRIPTOR ppfd) -{ - printf("0x%2x %2d %11d %2d %2d %2d %4s %3d %3d %3d %3d %3d %3d", - iPixelFormat, - ppfd->dwFlags & PFD_GENERIC_FORMAT ? 1 : 0, - ppfd->dwFlags & PFD_DRAW_TO_WINDOW ? 1 : 0, - 0, - 0 /* ppfd->bufferSize */, - 0 /* ppfd->level */, - visual_render_type_name(ppfd->iPixelType), - ppfd->dwFlags & PFD_DOUBLEBUFFER ? 1 : 0, - ppfd->dwFlags & PFD_STEREO ? 1 : 0, - ppfd->cRedBits, ppfd->cGreenBits, - ppfd->cBlueBits, ppfd->cAlphaBits - ); - - printf(" %3d %4d %2d %3d %3d %3d %3d %2d %2d\n", - ppfd->cAuxBuffers, - ppfd->cDepthBits, - ppfd->cStencilBits, - ppfd->cAccumRedBits, ppfd->cAccumGreenBits, - ppfd->cAccumBlueBits, ppfd->cAccumAlphaBits, - 0 /* ppfd->numSamples */, 0 /* ppfd->numMultisample */ - ); -} - - -static void -print_visual_info(HDC hdc, InfoMode mode) -{ - PIXELFORMATDESCRIPTOR pfd; - int numVisuals, numWglVisuals; - int i; - - numVisuals = DescribePixelFormat(hdc, 1, sizeof(PIXELFORMATDESCRIPTOR), NULL); - if (numVisuals == 0) - return; - - numWglVisuals = 0; - for (i = 0; i < numVisuals; i++) { - if(!DescribePixelFormat(hdc, i, sizeof(PIXELFORMATDESCRIPTOR), &pfd)) - continue; - - //if(!(pfd.dwFlags & PFD_SUPPORT_OPENGL)) - // continue; - - ++numWglVisuals; - } - - printf("%d WGL Visuals\n", numWglVisuals); - - if (mode == Normal) - print_visual_attribs_short_header(); - else if (mode == Wide) - print_visual_attribs_long_header(); - - for (i = 0; i < numVisuals; i++) { - if(!DescribePixelFormat(hdc, i, sizeof(PIXELFORMATDESCRIPTOR), &pfd)) - continue; - - //if(!(pfd.dwFlags & PFD_SUPPORT_OPENGL)) - // continue; - - if (mode == Verbose) - print_visual_attribs_verbose(i, &pfd); - else if (mode == Normal) - print_visual_attribs_short(i, &pfd); - else if (mode == Wide) - print_visual_attribs_long(i, &pfd); - } - printf("\n"); -} - - -/* - * Examine all visuals to find the so-called best one. - * We prefer deepest RGBA buffer with depth, stencil and accum - * that has no caveats. - */ -static int -find_best_visual(HDC hdc) -{ -#if 0 - XVisualInfo theTemplate; - XVisualInfo *visuals; - int numVisuals; - long mask; - int i; - struct visual_attribs bestVis; - - /* get list of all visuals on this screen */ - theTemplate.screen = scrnum; - mask = VisualScreenMask; - visuals = XGetVisualInfo(hdc, mask, &theTemplate, &numVisuals); - - /* init bestVis with first visual info */ - get_visual_attribs(hdc, &visuals[0], &bestVis); - - /* try to find a "better" visual */ - for (i = 1; i < numVisuals; i++) { - struct visual_attribs vis; - - get_visual_attribs(hdc, &visuals[i], &vis); - - /* always skip visuals with caveats */ - if (vis.visualCaveat != GLX_NONE_EXT) - continue; - - /* see if this vis is better than bestVis */ - if ((!bestVis.supportsGL && vis.supportsGL) || - (bestVis.visualCaveat != GLX_NONE_EXT) || - (bestVis.iPixelType != vis.iPixelType) || - (!bestVis.doubleBuffer && vis.doubleBuffer) || - (bestVis.cRedBits < vis.cRedBits) || - (bestVis.cGreenBits < vis.cGreenBits) || - (bestVis.cBlueBits < vis.cBlueBits) || - (bestVis.cAlphaBits < vis.cAlphaBits) || - (bestVis.cDepthBits < vis.cDepthBits) || - (bestVis.cStencilBits < vis.cStencilBits) || - (bestVis.cAccumRedBits < vis.cAccumRedBits)) { - /* found a better visual */ - bestVis = vis; - } - } - - return bestVis.id; -#else - return 0; -#endif -} - - -static void -usage(void) -{ - printf("Usage: glxinfo [-v] [-t] [-h] [-i] [-b] [-display <dname>]\n"); - printf("\t-v: Print visuals info in verbose form.\n"); - printf("\t-t: Print verbose table.\n"); - printf("\t-h: This information.\n"); - printf("\t-b: Find the 'best' visual and print it's number.\n"); - printf("\t-l: Print interesting OpenGL limits.\n"); -} - - -int -main(int argc, char *argv[]) -{ - HDC hdc; - InfoMode mode = Normal; - GLboolean findBest = GL_FALSE; - GLboolean limits = GL_FALSE; - int i; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-t") == 0) { - mode = Wide; - } - else if (strcmp(argv[i], "-v") == 0) { - mode = Verbose; - } - else if (strcmp(argv[i], "-b") == 0) { - findBest = GL_TRUE; - } - else if (strcmp(argv[i], "-l") == 0) { - limits = GL_TRUE; - } - else if (strcmp(argv[i], "-h") == 0) { - usage(); - return 0; - } - else { - printf("Unknown option `%s'\n", argv[i]); - usage(); - return 0; - } - } - - hdc = CreateDC(TEXT("DISPLAY"), NULL, NULL, NULL); - - if (findBest) { - int b; - b = find_best_visual(hdc); - printf("%d\n", b); - } - else { - print_screen_info(hdc, limits); - printf("\n"); - print_visual_info(hdc, mode); - } - - return 0; -} diff --git a/progs/wgl/wglthreads/wglthreads.c b/progs/wgl/wglthreads/wglthreads.c deleted file mode 100644 index 27dca10f2a..0000000000 --- a/progs/wgl/wglthreads/wglthreads.c +++ /dev/null @@ -1,636 +0,0 @@ -/* - * Copyright (C) 2000 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * - * Port to windows done by Michal Krol. - */ - - -/* - * This program tests WGL thread safety. - * Command line options: - * -h Print usage - * -l Enable application-side locking - * -n <num threads> Number of threads to create (default is 2) - * -t Use texture mapping - * -s Force single-threaded. - * - * Brian Paul 20 July 2000 - */ - - -/* - * Notes: - * - Each thread gets its own WGL context. - * - * - The WGL contexts share texture objects. - * - * - When 't' is pressed to update the texture image, the window/thread which - * has input focus is signalled to change the texture. The other threads - * should see the updated texture the next time they call glBindTexture. - */ - - -#include <assert.h> -#include <windows.h> -#include <GL/gl.h> -#include <math.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#pragma comment(lib, "opengl32.lib") - - -/* - * Each window/thread/context: - */ -struct winthread { - int Index; - HANDLE Thread; - HWND Win; - HDC hDC; - HGLRC Context; - float Angle; - int WinWidth, WinHeight; - GLboolean NewSize; - HANDLE hEventInitialised; - GLboolean Initialized; - GLboolean MakeNewTexture; - HANDLE hEventRedraw; -}; - - -#define MAX_WINTHREADS 100 -static struct winthread WinThreads[MAX_WINTHREADS]; -static int NumWinThreads = 2; -static HANDLE ExitEvent = NULL; - -static GLboolean Locking = 0; -static GLboolean Texture = GL_FALSE; -static GLboolean SingleThreaded = GL_FALSE; -static GLuint TexObj = 12; -static GLboolean Animate = GL_TRUE; - -static CRITICAL_SECTION Mutex; - - -static void -Error(const char *msg) -{ - fprintf(stderr, "Error: %s\n", msg); - exit(1); -} - - -static void -signal_redraw(void) -{ - int i; - - for (i = 0; i < NumWinThreads; i++) { - SetEvent(WinThreads[i].hEventRedraw); - } -} - - -static void -MakeNewTexture(struct winthread *wt) -{ -#define TEX_SIZE 128 - static float step = 0.0f; - GLfloat image[TEX_SIZE][TEX_SIZE][4]; - GLint width; - int i, j; - - for (j = 0; j < TEX_SIZE; j++) { - for (i = 0; i < TEX_SIZE; i++) { - float dt = 5.0f * (j - 0.5f * TEX_SIZE) / TEX_SIZE; - float ds = 5.0f * (i - 0.5f * TEX_SIZE) / TEX_SIZE; - float r = dt * dt + ds * ds + step; - image[j][i][0] = - image[j][i][1] = - image[j][i][2] = 0.75f + 0.25f * (float) cos(r); - image[j][i][3] = 1.0f; - } - } - - step += 0.5; - - glBindTexture(GL_TEXTURE_2D, TexObj); - - glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, &width); - if (width) { - assert(width == TEX_SIZE); - /* sub-tex replace */ - glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, TEX_SIZE, TEX_SIZE, - GL_RGBA, GL_FLOAT, image); - } - else { - /* create new */ - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, TEX_SIZE, TEX_SIZE, 0, - GL_RGBA, GL_FLOAT, image); - } -} - - - -/* draw a colored cube */ -static void -draw_object(void) -{ - glPushMatrix(); - glScalef(0.75f, 0.75f, 0.75f); - - glColor3f(1, 0, 0); - - if (Texture) { - glBindTexture(GL_TEXTURE_2D, TexObj); - glEnable(GL_TEXTURE_2D); - } - else { - glDisable(GL_TEXTURE_2D); - } - - glBegin(GL_QUADS); - - /* -X */ - glColor3f(0, 1, 1); - glTexCoord2f(0, 0); glVertex3f(-1, -1, -1); - glTexCoord2f(1, 0); glVertex3f(-1, 1, -1); - glTexCoord2f(1, 1); glVertex3f(-1, 1, 1); - glTexCoord2f(0, 1); glVertex3f(-1, -1, 1); - - /* +X */ - glColor3f(1, 0, 0); - glTexCoord2f(0, 0); glVertex3f(1, -1, -1); - glTexCoord2f(1, 0); glVertex3f(1, 1, -1); - glTexCoord2f(1, 1); glVertex3f(1, 1, 1); - glTexCoord2f(0, 1); glVertex3f(1, -1, 1); - - /* -Y */ - glColor3f(1, 0, 1); - glTexCoord2f(0, 0); glVertex3f(-1, -1, -1); - glTexCoord2f(1, 0); glVertex3f( 1, -1, -1); - glTexCoord2f(1, 1); glVertex3f( 1, -1, 1); - glTexCoord2f(0, 1); glVertex3f(-1, -1, 1); - - /* +Y */ - glColor3f(0, 1, 0); - glTexCoord2f(0, 0); glVertex3f(-1, 1, -1); - glTexCoord2f(1, 0); glVertex3f( 1, 1, -1); - glTexCoord2f(1, 1); glVertex3f( 1, 1, 1); - glTexCoord2f(0, 1); glVertex3f(-1, 1, 1); - - /* -Z */ - glColor3f(1, 1, 0); - glTexCoord2f(0, 0); glVertex3f(-1, -1, -1); - glTexCoord2f(1, 0); glVertex3f( 1, -1, -1); - glTexCoord2f(1, 1); glVertex3f( 1, 1, -1); - glTexCoord2f(0, 1); glVertex3f(-1, 1, -1); - - /* +Y */ - glColor3f(0, 0, 1); - glTexCoord2f(0, 0); glVertex3f(-1, -1, 1); - glTexCoord2f(1, 0); glVertex3f( 1, -1, 1); - glTexCoord2f(1, 1); glVertex3f( 1, 1, 1); - glTexCoord2f(0, 1); glVertex3f(-1, 1, 1); - - glEnd(); - - glPopMatrix(); -} - - -/* signal resize of given window */ -static void -resize(struct winthread *wt, int w, int h) -{ - wt->NewSize = GL_TRUE; - wt->WinWidth = w; - wt->WinHeight = h; - if (!Animate) - SetEvent(wt->hEventRedraw); -} - - -/* - * We have an instance of this for each thread. - */ -static void -draw_loop(struct winthread *wt) -{ - while (1) { - GLboolean draw = Animate; - MSG msg; - - if (Animate) { - /* wait 5 ms for signal either to exit or process messages */ - switch (MsgWaitForMultipleObjects(1, &ExitEvent, FALSE, 5, QS_ALLINPUT)) { - case WAIT_OBJECT_0: - SendMessage(wt->Win, WM_CLOSE, 0, 0); - break; - case WAIT_OBJECT_0 + 1: - break; - } - } - else { - HANDLE events[2]; - - events[0] = wt->hEventRedraw; - events[1] = ExitEvent; - - /* wait for signal either to draw, exit or process messages */ - switch (MsgWaitForMultipleObjects(2, events, FALSE, INFINITE, QS_ALLINPUT)) { - case WAIT_OBJECT_0: - draw = GL_TRUE; - break; - case WAIT_OBJECT_0 + 1: - SendMessage(wt->Win, WM_CLOSE, 0, 0); - break; - case WAIT_OBJECT_0 + 2: - break; - } - } - - while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { - if (msg.message == WM_QUIT) { - return; - } - TranslateMessage(&msg); - DispatchMessage(&msg); - } - - if (!draw) - continue; - - if (Locking) - EnterCriticalSection(&Mutex); - - wglMakeCurrent(wt->hDC, wt->Context); - - if (!wt->Initialized) { - printf("wglthreads: %d: GL_RENDERER = %s\n", wt->Index, - (char *) glGetString(GL_RENDERER)); - if (Texture /*&& wt->Index == 0*/) { - MakeNewTexture(wt); - } - wt->Initialized = GL_TRUE; - } - - if (Locking) - LeaveCriticalSection(&Mutex); - - glEnable(GL_DEPTH_TEST); - - if (wt->NewSize) { - GLfloat w = (float) wt->WinWidth / (float) wt->WinHeight; - glViewport(0, 0, wt->WinWidth, wt->WinHeight); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-w, w, -1.0, 1.0, 1.5, 10); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0, 0, -2.5); - wt->NewSize = GL_FALSE; - } - - if (wt->MakeNewTexture) { - MakeNewTexture(wt); - wt->MakeNewTexture = GL_FALSE; - } - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glPushMatrix(); - glRotatef(wt->Angle, 0, 1, 0); - glRotatef(wt->Angle, 1, 0, 0); - glScalef(0.7f, 0.7f, 0.7f); - draw_object(); - glPopMatrix(); - - if (Locking) - EnterCriticalSection(&Mutex); - - SwapBuffers(wt->hDC); - - if (Locking) - LeaveCriticalSection(&Mutex); - - wt->Angle += 1.0; - } -} - - -static void -keypress(WPARAM keySym, struct winthread *wt) -{ - switch (keySym) { - case VK_ESCAPE: - /* tell all threads to exit */ - SetEvent(ExitEvent); - /*printf("exit draw_loop %d\n", wt->Index);*/ - return; - case 't': - case 'T': - if (Texture) { - wt->MakeNewTexture = GL_TRUE; - if (!Animate) - signal_redraw(); - } - break; - case 'a': - case 'A': - Animate = !Animate; - if (Animate) - signal_redraw(); - break; - case 's': - case 'S': - if (!Animate) - signal_redraw(); - break; - default: - ; /* nop */ - } -} - - -static LRESULT CALLBACK -WndProc(HWND hWnd, - UINT uMsg, - WPARAM wParam, - LPARAM lParam ) -{ - int i; - - switch (uMsg) { - case WM_KEYDOWN: - for (i = 0; i < NumWinThreads; i++) { - struct winthread *wt = &WinThreads[i]; - - if (hWnd == wt->Win) { - keypress(wParam, wt); - break; - } - } - break; - case WM_SIZE: - for (i = 0; i < NumWinThreads; i++) { - struct winthread *wt = &WinThreads[i]; - - if (hWnd == wt->Win) { - RECT r; - - GetClientRect(hWnd, &r); - resize(wt, r.right, r.bottom); - break; - } - } - break; - case WM_DESTROY: - PostQuitMessage(0); - break; - default: - return DefWindowProc(hWnd, uMsg, wParam, lParam); - } - - return 0; -} - -/* - * we'll call this once for each thread, before the threads are created. - */ -static void -create_window(struct winthread *wt, HGLRC shareCtx) -{ - WNDCLASS wc = {0}; - int width = 160, height = 160; - int xpos = (wt->Index % 8) * (width + 10); - int ypos = (wt->Index / 8) * (width + 20); - HWND win; - HDC hdc; - PIXELFORMATDESCRIPTOR pfd = {0}; - int visinfo; - HGLRC ctx; - - wc.hbrBackground = (HBRUSH) (COLOR_BTNFACE + 1); - wc.hCursor = LoadCursor(NULL, IDC_ARROW); - wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); - wc.lpfnWndProc = WndProc; - wc.lpszClassName = "wglthreads"; - wc.style = CS_OWNDC | CS_HREDRAW | CS_VREDRAW; - RegisterClass(&wc); - - win = CreateWindowEx(0, - wc.lpszClassName, - "wglthreads", - WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_TILEDWINDOW, - xpos, - ypos, - width, - height, - NULL, - NULL, - wc.hInstance, - (LPVOID) wt); - if (!win) { - Error("Couldn't create window"); - } - - hdc = GetDC(win); - if (!hdc) { - Error("Couldn't obtain HDC"); - } - - pfd.cColorBits = 24; - pfd.cDepthBits = 24; - pfd.dwFlags = PFD_DOUBLEBUFFER | PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL; - pfd.iLayerType = PFD_MAIN_PLANE; - pfd.iPixelType = PFD_TYPE_RGBA; - pfd.nSize = sizeof(pfd); - pfd.nVersion = 1; - - visinfo = ChoosePixelFormat(hdc, &pfd); - if (!visinfo) { - Error("Unable to find RGB, Z, double-buffered visual"); - } - - SetPixelFormat(hdc, visinfo, &pfd); - ctx = wglCreateContext(hdc); - if (!ctx) { - Error("Couldn't create WGL context"); - } - - if (shareCtx) { - if(!wglShareLists(shareCtx, ctx)) - Error("Couldn't share WGL context lists"); - } - - /* save the info for this window/context */ - wt->Win = win; - wt->hDC = hdc; - wt->Context = ctx; - wt->Angle = 0.0; - wt->WinWidth = width; - wt->WinHeight = height; - wt->NewSize = GL_TRUE; -} - - -/* - * Called by pthread_create() - */ -static DWORD WINAPI -ThreadProc(void *p) -{ - struct winthread *wt = (struct winthread *) p; - HGLRC share; - - /* Wait for the previous thread */ - if(Texture && wt->Index > 0) { - WaitForSingleObject(WinThreads[wt->Index - 1].hEventInitialised, INFINITE); - share = WinThreads[0].Context; - } - else - share = 0; - - share = (Texture && wt->Index > 0) ? WinThreads[0].Context : 0; - create_window(wt, share); - SetEvent(wt->hEventInitialised); - - /* Wait for all threads to initialize otherwise wglShareLists will fail */ - if(wt->Index < NumWinThreads - 1) - WaitForSingleObject(WinThreads[NumWinThreads - 1].hEventInitialised, INFINITE); - - draw_loop(wt); - return 0; -} - - -static void -usage(void) -{ - printf("wglthreads: test of GL thread safety (any key = exit)\n"); - printf("Usage:\n"); - printf(" wglthreads [options]\n"); - printf("Options:\n"); - printf(" -h Show this usage screen\n"); - printf(" -n NUMTHREADS Number of threads to create\n"); - printf(" -l Use application-side locking\n"); - printf(" -t Enable texturing\n"); - printf(" -s Force single-threaded\n"); - printf("Keyboard:\n"); - printf(" Esc Exit\n"); - printf(" t Change texture image (requires -t option)\n"); - printf(" a Toggle animation\n"); - printf(" s Step rotation (when not animating)\n"); -} - - -int -main(int argc, char *argv[]) -{ - int i; - - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-h") == 0) { - usage(); - exit(0); - } - else if (strcmp(argv[i], "-l") == 0) { - Locking = 1; - } - else if (strcmp(argv[i], "-t") == 0) { - Texture = 1; - } - else if (strcmp(argv[i], "-n") == 0 && i + 1 < argc) { - NumWinThreads = atoi(argv[i + 1]); - if (NumWinThreads < 1) - NumWinThreads = 1; - else if (NumWinThreads > MAX_WINTHREADS) - NumWinThreads = MAX_WINTHREADS; - i++; - } - else if (strcmp(argv[i], "-s") == 0) { - SingleThreaded = GL_TRUE; - } - else { - usage(); - exit(1); - } - } - - if (SingleThreaded) - printf("wglthreads: Forcing single-threaded, no other threads will be created.\n"); - - if (Locking) - printf("wglthreads: Using explicit locks around WGL calls.\n"); - else - printf("wglthreads: No explict locking.\n"); - - InitializeCriticalSection(&Mutex); - ExitEvent = CreateEvent(NULL, TRUE, FALSE, NULL); - - if (SingleThreaded) { - NumWinThreads = 1; - - WinThreads[0].Index = 0; - WinThreads[0].hEventInitialised = CreateEvent(NULL, TRUE, FALSE, NULL); - WinThreads[0].hEventRedraw = CreateEvent(NULL, FALSE, FALSE, NULL); - - ThreadProc((void*) &WinThreads[0]); - } - else { - HANDLE threads[MAX_WINTHREADS]; - - printf("wglthreads: creating threads\n"); - - /* Create the events */ - for (i = 0; i < NumWinThreads; i++) { - WinThreads[i].Index = i; - WinThreads[i].hEventInitialised = CreateEvent(NULL, TRUE, FALSE, NULL); - WinThreads[i].hEventRedraw = CreateEvent(NULL, FALSE, FALSE, NULL); - } - - /* Create the threads */ - for (i = 0; i < NumWinThreads; i++) { - DWORD id; - - WinThreads[i].Thread = CreateThread(NULL, - 0, - ThreadProc, - (void*) &WinThreads[i], - 0, - &id); - printf("wglthreads: Created thread %p\n", (void *) WinThreads[i].Thread); - - threads[i] = WinThreads[i].Thread; - } - - /* Wait for all threads to finish. */ - WaitForMultipleObjects(NumWinThreads, threads, TRUE, INFINITE); - } - - return 0; -} |