Touch-ups for apitrace NV_path_rendering support.
Add support for REGAL_LOAD_GL, REGAL_LOAD_ES2 and REGAL_LOAD_EGL for loading specific system GL/GLX/WGL/EGL libraries.
Tidy-up for RegalContextInfo codegen.
Mac XCode project udpates.
diff --git a/build/mac/Regal/Regal.xcodeproj/project.pbxproj b/build/mac/Regal/Regal.xcodeproj/project.pbxproj
index 5a4b04d..46582a9 100644
--- a/build/mac/Regal/Regal.xcodeproj/project.pbxproj
+++ b/build/mac/Regal/Regal.xcodeproj/project.pbxproj
@@ -15,6 +15,15 @@
 		431D3C0E15C9B6F0009DD04F /* RegalFavicon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 431D3C0A15C9B6F0009DD04F /* RegalFavicon.cpp */; };
 		431D3C0F15C9B6F0009DD04F /* RegalFavicon.h in Headers */ = {isa = PBXBuildFile; fileRef = 431D3C0B15C9B6F0009DD04F /* RegalFavicon.h */; };
 		431D3C1015C9B6F0009DD04F /* RegalMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 431D3C0C15C9B6F0009DD04F /* RegalMac.cpp */; };
+		4359147D18293B32002CB92C /* libapitrace.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4359144B18293A5C002CB92C /* libapitrace.a */; };
+		4359147E18293B32002CB92C /* libjsonsl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4359145118293A68002CB92C /* libjsonsl.a */; };
+		4359147F18293B32002CB92C /* libmd5.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4359145718293A74002CB92C /* libmd5.a */; };
+		4359148018293B32002CB92C /* libmongoose.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4359145D18293A7D002CB92C /* libmongoose.a */; };
+		4359148118293B32002CB92C /* libpcre.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4359146318293A8B002CB92C /* libpcre.a */; };
+		4359148218293B32002CB92C /* libpng.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4359146918293A94002CB92C /* libpng.a */; };
+		4359148318293B32002CB92C /* libsnappy.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4359146F18293A9C002CB92C /* libsnappy.a */; };
+		4359148418293B32002CB92C /* libsquish.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4359147518293AAA002CB92C /* libsquish.a */; };
+		4359148518293B32002CB92C /* libzlib.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4359147B18293AB2002CB92C /* libzlib.a */; };
 		438D2C2B16DE668A005E03F6 /* RegalJson.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 438D2C1F16DE668A005E03F6 /* RegalJson.cpp */; };
 		438D2C2D16DE668A005E03F6 /* RegalPixelConversions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 438D2C2116DE668A005E03F6 /* RegalPixelConversions.cpp */; };
 		438D2C2E16DE668A005E03F6 /* RegalPixelConversions.h in Headers */ = {isa = PBXBuildFile; fileRef = 438D2C2216DE668A005E03F6 /* RegalPixelConversions.h */; };
@@ -122,6 +131,72 @@
 		BCF889AA15E079D80093B7D5 /* RegalDispatchStaticES2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCF889A915E079D80093B7D5 /* RegalDispatchStaticES2.cpp */; };
 /* End PBXBuildFile section */
 
+/* Begin PBXContainerItemProxy section */
+		4359144A18293A5C002CB92C /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 4359144618293A5B002CB92C /* apitrace.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = 433667A917C56F3500D45AD9;
+			remoteInfo = apitrace;
+		};
+		4359145018293A68002CB92C /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 4359144C18293A68002CB92C /* jsonsl.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = 4336679417C56EF900D45AD9;
+			remoteInfo = jsonsl;
+		};
+		4359145618293A74002CB92C /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 4359145218293A73002CB92C /* md5.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = 4336678117C56DFD00D45AD9;
+			remoteInfo = md5;
+		};
+		4359145C18293A7D002CB92C /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 4359145818293A7C002CB92C /* mongoose.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = 4336676E17C56DC700D45AD9;
+			remoteInfo = mongoose;
+		};
+		4359146218293A8B002CB92C /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 4359145E18293A8A002CB92C /* pcre.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = 433666B917C56BC000D45AD9;
+			remoteInfo = pcre;
+		};
+		4359146818293A94002CB92C /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 4359146418293A93002CB92C /* png.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = 433665D517C5632600D45AD9;
+			remoteInfo = png;
+		};
+		4359146E18293A9C002CB92C /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 4359146A18293A9C002CB92C /* snappy.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = 4336665817C56AA300D45AD9;
+			remoteInfo = snappy;
+		};
+		4359147418293AAA002CB92C /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 4359147018293AAA002CB92C /* squish.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = 4336667917C56B5200D45AD9;
+			remoteInfo = squish;
+		};
+		4359147A18293AB2002CB92C /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 4359147618293AB1002CB92C /* zlib.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = 4336661617C56A0800D45AD9;
+			remoteInfo = zlib;
+		};
+/* End PBXContainerItemProxy section */
+
 /* Begin PBXFileReference section */
 		430443EE16F1656A0078C0F9 /* RegalXfer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegalXfer.cpp; path = ../../../src/regal/RegalXfer.cpp; sourceTree = "<group>"; };
 		430443EF16F1656A0078C0F9 /* RegalXfer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegalXfer.h; path = ../../../src/regal/RegalXfer.h; sourceTree = "<group>"; };
@@ -131,6 +206,15 @@
 		431D3C0A15C9B6F0009DD04F /* RegalFavicon.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegalFavicon.cpp; path = ../../../src/regal/RegalFavicon.cpp; sourceTree = "<group>"; };
 		431D3C0B15C9B6F0009DD04F /* RegalFavicon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegalFavicon.h; path = ../../../src/regal/RegalFavicon.h; sourceTree = "<group>"; };
 		431D3C0C15C9B6F0009DD04F /* RegalMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegalMac.cpp; path = ../../../src/regal/RegalMac.cpp; sourceTree = "<group>"; };
+		4359144618293A5B002CB92C /* apitrace.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = apitrace.xcodeproj; path = ../apitrace/apitrace.xcodeproj; sourceTree = "<group>"; };
+		4359144C18293A68002CB92C /* jsonsl.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = jsonsl.xcodeproj; path = ../jsonsl/jsonsl.xcodeproj; sourceTree = "<group>"; };
+		4359145218293A73002CB92C /* md5.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = md5.xcodeproj; path = ../md5/md5.xcodeproj; sourceTree = "<group>"; };
+		4359145818293A7C002CB92C /* mongoose.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = mongoose.xcodeproj; path = ../mongoose/mongoose.xcodeproj; sourceTree = "<group>"; };
+		4359145E18293A8A002CB92C /* pcre.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = pcre.xcodeproj; path = ../pcre/pcre.xcodeproj; sourceTree = "<group>"; };
+		4359146418293A93002CB92C /* png.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = png.xcodeproj; path = ../png/png.xcodeproj; sourceTree = "<group>"; };
+		4359146A18293A9C002CB92C /* snappy.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = snappy.xcodeproj; path = ../snappy/snappy.xcodeproj; sourceTree = "<group>"; };
+		4359147018293AAA002CB92C /* squish.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = squish.xcodeproj; path = ../squish/squish.xcodeproj; sourceTree = "<group>"; };
+		4359147618293AB1002CB92C /* zlib.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = zlib.xcodeproj; path = ../zlib/zlib.xcodeproj; sourceTree = "<group>"; };
 		436E18CA17020027005BE93E /* RegalJson.inl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = RegalJson.inl; path = ../../../src/regal/RegalJson.inl; sourceTree = "<group>"; };
 		438D2C1F16DE668A005E03F6 /* RegalJson.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegalJson.cpp; path = ../../../src/regal/RegalJson.cpp; sourceTree = "<group>"; };
 		438D2C2116DE668A005E03F6 /* RegalPixelConversions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegalPixelConversions.cpp; path = ../../../src/regal/RegalPixelConversions.cpp; sourceTree = "<group>"; };
@@ -246,17 +330,115 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				4359147D18293B32002CB92C /* libapitrace.a in Frameworks */,
+				4359147E18293B32002CB92C /* libjsonsl.a in Frameworks */,
+				4359147F18293B32002CB92C /* libmd5.a in Frameworks */,
+				4359148018293B32002CB92C /* libmongoose.a in Frameworks */,
+				4359148118293B32002CB92C /* libpcre.a in Frameworks */,
+				4359148218293B32002CB92C /* libpng.a in Frameworks */,
+				4359148318293B32002CB92C /* libsnappy.a in Frameworks */,
+				4359148418293B32002CB92C /* libsquish.a in Frameworks */,
+				4359148518293B32002CB92C /* libzlib.a in Frameworks */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 /* End PBXFrameworksBuildPhase section */
 
 /* Begin PBXGroup section */
+		4359144718293A5B002CB92C /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				4359144B18293A5C002CB92C /* libapitrace.a */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		4359144D18293A68002CB92C /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				4359145118293A68002CB92C /* libjsonsl.a */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		4359145318293A73002CB92C /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				4359145718293A74002CB92C /* libmd5.a */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		4359145918293A7C002CB92C /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				4359145D18293A7D002CB92C /* libmongoose.a */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		4359145F18293A8A002CB92C /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				4359146318293A8B002CB92C /* libpcre.a */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		4359146518293A93002CB92C /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				4359146918293A94002CB92C /* libpng.a */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		4359146B18293A9C002CB92C /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				4359146F18293A9C002CB92C /* libsnappy.a */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		4359147118293AAA002CB92C /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				4359147518293AAA002CB92C /* libsquish.a */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		4359147718293AB1002CB92C /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				4359147B18293AB2002CB92C /* libzlib.a */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		4359147C18293AF6002CB92C /* subprojects */ = {
+			isa = PBXGroup;
+			children = (
+				4359144618293A5B002CB92C /* apitrace.xcodeproj */,
+				4359144C18293A68002CB92C /* jsonsl.xcodeproj */,
+				4359145218293A73002CB92C /* md5.xcodeproj */,
+				4359145818293A7C002CB92C /* mongoose.xcodeproj */,
+				4359145E18293A8A002CB92C /* pcre.xcodeproj */,
+				4359146418293A93002CB92C /* png.xcodeproj */,
+				4359146A18293A9C002CB92C /* snappy.xcodeproj */,
+				4359147018293AAA002CB92C /* squish.xcodeproj */,
+				4359147618293AB1002CB92C /* zlib.xcodeproj */,
+			);
+			name = subprojects;
+			sourceTree = "<group>";
+		};
 		43A6C1BB15C48CD90063667E = {
 			isa = PBXGroup;
 			children = (
-				43A6C1C715C48CD90063667E /* Products */,
 				43A6C1D015C48CFA0063667E /* Regal */,
+				43A6C1C715C48CD90063667E /* Products */,
+				4359147C18293AF6002CB92C /* subprojects */,
 			);
 			sourceTree = "<group>";
 		};
@@ -501,6 +683,44 @@
 			mainGroup = 43A6C1BB15C48CD90063667E;
 			productRefGroup = 43A6C1C715C48CD90063667E /* Products */;
 			projectDirPath = "";
+			projectReferences = (
+				{
+					ProductGroup = 4359144718293A5B002CB92C /* Products */;
+					ProjectRef = 4359144618293A5B002CB92C /* apitrace.xcodeproj */;
+				},
+				{
+					ProductGroup = 4359144D18293A68002CB92C /* Products */;
+					ProjectRef = 4359144C18293A68002CB92C /* jsonsl.xcodeproj */;
+				},
+				{
+					ProductGroup = 4359145318293A73002CB92C /* Products */;
+					ProjectRef = 4359145218293A73002CB92C /* md5.xcodeproj */;
+				},
+				{
+					ProductGroup = 4359145918293A7C002CB92C /* Products */;
+					ProjectRef = 4359145818293A7C002CB92C /* mongoose.xcodeproj */;
+				},
+				{
+					ProductGroup = 4359145F18293A8A002CB92C /* Products */;
+					ProjectRef = 4359145E18293A8A002CB92C /* pcre.xcodeproj */;
+				},
+				{
+					ProductGroup = 4359146518293A93002CB92C /* Products */;
+					ProjectRef = 4359146418293A93002CB92C /* png.xcodeproj */;
+				},
+				{
+					ProductGroup = 4359146B18293A9C002CB92C /* Products */;
+					ProjectRef = 4359146A18293A9C002CB92C /* snappy.xcodeproj */;
+				},
+				{
+					ProductGroup = 4359147118293AAA002CB92C /* Products */;
+					ProjectRef = 4359147018293AAA002CB92C /* squish.xcodeproj */;
+				},
+				{
+					ProductGroup = 4359147718293AB1002CB92C /* Products */;
+					ProjectRef = 4359147618293AB1002CB92C /* zlib.xcodeproj */;
+				},
+			);
 			projectRoot = "";
 			targets = (
 				43A6C1C515C48CD90063667E /* Regal */,
@@ -508,6 +728,72 @@
 		};
 /* End PBXProject section */
 
+/* Begin PBXReferenceProxy section */
+		4359144B18293A5C002CB92C /* libapitrace.a */ = {
+			isa = PBXReferenceProxy;
+			fileType = archive.ar;
+			path = libapitrace.a;
+			remoteRef = 4359144A18293A5C002CB92C /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		4359145118293A68002CB92C /* libjsonsl.a */ = {
+			isa = PBXReferenceProxy;
+			fileType = archive.ar;
+			path = libjsonsl.a;
+			remoteRef = 4359145018293A68002CB92C /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		4359145718293A74002CB92C /* libmd5.a */ = {
+			isa = PBXReferenceProxy;
+			fileType = archive.ar;
+			path = libmd5.a;
+			remoteRef = 4359145618293A74002CB92C /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		4359145D18293A7D002CB92C /* libmongoose.a */ = {
+			isa = PBXReferenceProxy;
+			fileType = archive.ar;
+			path = libmongoose.a;
+			remoteRef = 4359145C18293A7D002CB92C /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		4359146318293A8B002CB92C /* libpcre.a */ = {
+			isa = PBXReferenceProxy;
+			fileType = archive.ar;
+			path = libpcre.a;
+			remoteRef = 4359146218293A8B002CB92C /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		4359146918293A94002CB92C /* libpng.a */ = {
+			isa = PBXReferenceProxy;
+			fileType = archive.ar;
+			path = libpng.a;
+			remoteRef = 4359146818293A94002CB92C /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		4359146F18293A9C002CB92C /* libsnappy.a */ = {
+			isa = PBXReferenceProxy;
+			fileType = archive.ar;
+			path = libsnappy.a;
+			remoteRef = 4359146E18293A9C002CB92C /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		4359147518293AAA002CB92C /* libsquish.a */ = {
+			isa = PBXReferenceProxy;
+			fileType = archive.ar;
+			path = libsquish.a;
+			remoteRef = 4359147418293AAA002CB92C /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		4359147B18293AB2002CB92C /* libzlib.a */ = {
+			isa = PBXReferenceProxy;
+			fileType = archive.ar;
+			path = libzlib.a;
+			remoteRef = 4359147A18293AB2002CB92C /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+/* End PBXReferenceProxy section */
+
 /* Begin PBXSourcesBuildPhase section */
 		43A6C1C215C48CD90063667E /* Sources */ = {
 			isa = PBXSourcesBuildPhase;
@@ -613,7 +899,7 @@
 				);
 				MACOSX_DEPLOYMENT_TARGET = 10.7;
 				ONLY_ACTIVE_ARCH = YES;
-				SDKROOT = macosx10.7;
+				SDKROOT = macosx;
 				USER_HEADER_SEARCH_PATHS = "../../../src/mongoose ../../../src/md5/include";
 			};
 			name = Debug;
@@ -656,7 +942,7 @@
 					../../../src/zlib/src,
 				);
 				MACOSX_DEPLOYMENT_TARGET = 10.7;
-				SDKROOT = macosx10.7;
+				SDKROOT = macosx;
 				USER_HEADER_SEARCH_PATHS = "../../../src/mongoose ../../../src/md5/include";
 			};
 			name = Release;
diff --git a/build/mac/pcre/pcre.xcodeproj/project.pbxproj b/build/mac/pcre/pcre.xcodeproj/project.pbxproj
index f2dfb6a..7ff1d13 100644
--- a/build/mac/pcre/pcre.xcodeproj/project.pbxproj
+++ b/build/mac/pcre/pcre.xcodeproj/project.pbxproj
@@ -446,7 +446,7 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				ALWAYS_SEARCH_USER_PATHS = NO;
-				ARCHS = "$(ARCHS_STANDARD_64_BIT)";
+				ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
 				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
 				CLANG_CXX_LIBRARY = "libc++";
 				CLANG_WARN_CONSTANT_CONVERSION = YES;
@@ -479,7 +479,7 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				ALWAYS_SEARCH_USER_PATHS = NO;
-				ARCHS = "$(ARCHS_STANDARD_64_BIT)";
+				ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
 				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
 				CLANG_CXX_LIBRARY = "libc++";
 				CLANG_WARN_CONSTANT_CONVERSION = YES;
@@ -536,6 +536,7 @@
 				433666BF17C56BC000D45AD9 /* Release */,
 			);
 			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
 		};
 /* End XCConfigurationList section */
 	};
diff --git a/build/mac/png/png.xcodeproj/project.pbxproj b/build/mac/png/png.xcodeproj/project.pbxproj
index 58613b2..e5913bb 100644
--- a/build/mac/png/png.xcodeproj/project.pbxproj
+++ b/build/mac/png/png.xcodeproj/project.pbxproj
@@ -214,7 +214,7 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				ALWAYS_SEARCH_USER_PATHS = NO;
-				ARCHS = "$(ARCHS_STANDARD_64_BIT)";
+				ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
 				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
 				CLANG_CXX_LIBRARY = "libc++";
 				CLANG_WARN_CONSTANT_CONVERSION = YES;
@@ -250,7 +250,7 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				ALWAYS_SEARCH_USER_PATHS = NO;
-				ARCHS = "$(ARCHS_STANDARD_64_BIT)";
+				ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
 				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
 				CLANG_CXX_LIBRARY = "libc++";
 				CLANG_WARN_CONSTANT_CONVERSION = YES;
diff --git a/build/mac/zlib/zlib.xcodeproj/project.pbxproj b/build/mac/zlib/zlib.xcodeproj/project.pbxproj
index 296fe72..8ab4bb1 100644
--- a/build/mac/zlib/zlib.xcodeproj/project.pbxproj
+++ b/build/mac/zlib/zlib.xcodeproj/project.pbxproj
@@ -214,7 +214,7 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				ALWAYS_SEARCH_USER_PATHS = NO;
-				ARCHS = "$(ARCHS_STANDARD_64_BIT)";
+				ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
 				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
 				CLANG_CXX_LIBRARY = "libc++";
 				CLANG_WARN_CONSTANT_CONVERSION = YES;
@@ -247,7 +247,7 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				ALWAYS_SEARCH_USER_PATHS = NO;
-				ARCHS = "$(ARCHS_STANDARD_64_BIT)";
+				ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
 				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
 				CLANG_CXX_LIBRARY = "libc++";
 				CLANG_WARN_CONSTANT_CONVERSION = YES;
@@ -304,6 +304,7 @@
 				4336661C17C56A0800D45AD9 /* Release */,
 			);
 			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
 		};
 /* End XCConfigurationList section */
 	};
diff --git a/scripts/EmuLookup.py b/scripts/EmuLookup.py
index 3a91432..04eaa47 100644
--- a/scripts/EmuLookup.py
+++ b/scripts/EmuLookup.py
@@ -3,40 +3,67 @@
 formulae = {
     'wglGetProcAddress' : {
         'entries' : [ '(wglGetProcAddress)()' ],
-        'impl' : [
-                  'ret = _next->call(&_next->${m1}${m2})(${arg0});',
-                  'if (!ret)',
-                  '  return NULL;',
-                  'ret = Lookup::gl_Lookup<PROC>(${arg0});',
-                  'if (ret)',
-                  '  return ret;',
-                  'ret = Lookup::wgl_Lookup<PROC>(${arg0});',
-                  'if (ret)',
-                  '  return ret;',
-                   ],
+        'impl' : '''
+//
+// wglGetProcAddress returns NULL for unsupported
+// entry points.  Here we need Regal to behave
+// similarly depending on what's emulated.
+//
+
+// Regal-only and ES 1.0 aliased functions are
+// always provided by Regal
+
+// ret = Lookup::regal_Lookup<PROC>(${arg0});
+// if (ret)
+//  return ret;
+
+// Ask the back-end driver if the entry point
+// is available.  If not, return NULL
+//
+// TODO - we need to query ContextInfo and
+//        EmulationInfo here instead.
+
+ret = _next->call(&_next->${m1}${m2})(${arg0});
+if (!ret)
+  return NULL;
+
+// Return the Regal implementation of the entry
+// point, either GL or WGL
+
+ret = Lookup::gl_Lookup<PROC>(${arg0});
+if (ret)
+  return ret;
+
+ret = Lookup::wgl_Lookup<PROC>(${arg0});
+if (ret)
+  return ret;
+
+// As a last resort, dispatch the lookup to
+// the global dispatch stack...
+'''
     },
 
     'glXGetProcAddress' : {
         'entries' : [ '(glXGetProcAddress)(|ARB)' ],
-        'impl' : [
-                  'ret = Lookup::gl_Lookup<__GLXextFuncPtr>(reinterpret_cast<const char *>(${arg0}));',
-                  'if (ret)',
-                  '  return ret;',
-                  'ret = Lookup::glx_Lookup<__GLXextFuncPtr>(reinterpret_cast<const char *>(${arg0}));',
-                  'if (ret)',
-                  '  return ret;',
-                   ]
+        'impl' : '''
+ret = Lookup::gl_Lookup<__GLXextFuncPtr>(reinterpret_cast<const char *>(${arg0}));
+if (ret)
+  return ret;
+ret = Lookup::glx_Lookup<__GLXextFuncPtr>(reinterpret_cast<const char *>(${arg0}));
+if (ret)
+  return ret;
+'''
     },
 
     'eglGetProcAddress' : {
         'entries' : [ '(eglGetProcAddress)(|ARB)' ],
-        'impl' : [
-                  'ret = Lookup::gl_Lookup<__eglMustCastToProperFunctionPointerType>(reinterpret_cast<const char *>(${arg0}));',
-                  'if (ret)',
-                  '  return ret;',
-                  'ret = Lookup::egl_Lookup<__eglMustCastToProperFunctionPointerType>(reinterpret_cast<const char *>(${arg0}));',
-                  'if (ret)',
-                  '  return ret;',
-                   ]
+        'impl' : '''
+ret = Lookup::gl_Lookup<__eglMustCastToProperFunctionPointerType>(reinterpret_cast<const char *>(${arg0}));
+if (ret)
+  return ret;
+ret = Lookup::egl_Lookup<__eglMustCastToProperFunctionPointerType>(reinterpret_cast<const char *>(${arg0}));
+if (ret)
+  return ret;
+'''
     }
 }
diff --git a/scripts/regal/RegalContextInfo.py b/scripts/regal/RegalContextInfo.py
index a7affde..64e3fb8 100755
--- a/scripts/regal/RegalContextInfo.py
+++ b/scripts/regal/RegalContextInfo.py
@@ -2,7 +2,8 @@
 
 from string import Template, upper, replace
 
-from ApiUtil import outputCode
+from ApiUtil    import outputCode
+from ApiCodeGen import wrapIf
 
 cond = { 'wgl' : 'REGAL_SYS_WGL', 'glx' : 'REGAL_SYS_GLX', 'cgl' : 'REGAL_SYS_OSX', 'egl' : 'REGAL_SYS_EGL' }
 
@@ -369,14 +370,10 @@
       code += '\n'
 
   for api in apis:
-    name = api.name.lower()
-    if name in cond:
-      code += '#if %s\n'%cond[name]
+    tmp = ''
     for c in sorted(api.categories):
-      code += '  GLboolean %s : 1;\n' % (c.lower())
-    if name in cond:
-      code += '#endif\n'
-    code += '\n'
+      tmp += '  GLboolean %s : 1;\n' % (c.lower())
+    code += wrapIf(cond.get(api.name.lower()),tmp) + '\n'
 
   return code
 
@@ -408,13 +405,10 @@
       code += '  glsl_version_minor(-1),\n'
 
   for api in apis:
-    name = api.name.lower()
-    if name in cond:
-      code += '#if %s\n'%cond[name]
+    tmp = ''
     for c in sorted(api.categories):
-      code += '  %s(false),\n' % (c.lower())
-    if name in cond:
-      code += '#endif\n'
+      tmp += '  %s(false),\n' % (c.lower())
+    code += wrapIf(cond.get(api.name.lower()),tmp)
 
   return code
 
@@ -634,14 +628,13 @@
   code = ''
 
   for api in apis:
-    name = api.name.lower()
-    if name in cond:
-      code += '#if %s\n'%cond[name]
+    tmp = ''
     for c in sorted(api.categories):
-      code += '  %s = stringSetFind(e,"%s");\n' % (c.lower(),c)
-    if name in cond:
-      code += '#endif\n'
-    code += '\n'
+      tmp += '  %-50s = stringSetFind(e,"%s");\n' % (c.lower(),c)
+
+    tmp = wrapIf(cond.get(api.name.lower()),tmp)
+
+    code += tmp + '\n'
 
   return code
 
@@ -656,16 +649,15 @@
 
   for api in apis:
 
-    name = api.name.lower()
-    if name in cond:
-      code += '#if %s\n'%cond[name]
+    tmp = ''
     for c in sorted(api.categories):
-      code += '  if (!strcmp(ext,"%s")) return %s;\n' % (c,c.lower())
-    if name in cond:
-      code += '#endif\n'
-    code += '\n'
+      tmp += '  %-60s %s;\n'%('if (!strcmp(ext,"%s"))'%c,'return %s'%c.lower())
 
-  code += 'return false;\n'
+    tmp = wrapIf(cond.get(api.name.lower()),tmp)
+
+    code += tmp + '\n'
+
+  code += '  return false;\n'
   code += '}\n\n'
 
   return code
diff --git a/scripts/regal/RegalEmuInfo.py b/scripts/regal/RegalEmuInfo.py
index 8305dd4..51838f9 100755
--- a/scripts/regal/RegalEmuInfo.py
+++ b/scripts/regal/RegalEmuInfo.py
@@ -277,15 +277,18 @@
 
 def emuInfoGetExtensionCode(apis, args):
 
-  code = ''
-  code += 'bool\n'
-  code += 'EmuInfo::getExtension(const ContextInfo &contextInfo, const char *ext) const\n'
-  code += '{\n'
-  code += '  Internal("EmuInfo::getExtension ",boost::print::quote(ext,\'"\'));\n'
-  code += '\n'
-  code += '  if (contextInfo.getExtension(ext))\n'
-  code += '    return true;\n'
-  code += '\n'
+  code = '''
+bool
+EmuInfo::getExtension(const ContextInfo &contextInfo, const char *ext) const
+{
+  Internal("EmuInfo::getExtension ",boost::print::quote(ext,\'"\'));
+
+  // If the context supports it, we're done.
+
+  if (contextInfo.getExtension(ext))
+    return true;
+
+'''
 
   for api in apis:
 
@@ -303,20 +306,23 @@
       code += '#endif\n'
     code += '\n'
 
-  code += 'return false;\n'
-  code += '}\n\n'
+  code += '''
+  return false;
+}
+'''
 
-  code += 'bool\n'
-  code += 'EmuInfo::isSupported(const ContextInfo &contextInfo, const char *ext) const\n'
-  code += '{\n'
-  code += '  Internal("EmuInfo::isSupported ",boost::print::quote(ext,\'"\'));\n'
-  code += '\n'
-  code += '  string_list<string> e;\n'
-  code += '  e.split(ext,\' \');\n'
-  code += '  for (string_list<string>::const_iterator i=e.begin(); i!=e.end(); ++i)\n'
-  code += '    if (i->length() && !getExtension(contextInfo, i->c_str())) return false;\n'
-  code += '  return true;\n'
-  code += '}\n'
+  code += '''
+bool
+EmuInfo::isSupported(const ContextInfo &contextInfo, const char *ext) const
+{
+  Internal("EmuInfo::isSupported ",boost::print::quote(ext,\'"\'));
+
+  string_list<string> e;
+  e.split(ext,\' \');
+  for (string_list<string>::const_iterator i=e.begin(); i!=e.end(); ++i)
+    if (i->length() && !getExtension(contextInfo, i->c_str())) return false;
+  return true;
+}'''
 
   return code
 
diff --git a/scripts/regal/RegalLookup.py b/scripts/regal/RegalLookup.py
index 710f95f..701f1da 100755
--- a/scripts/regal/RegalLookup.py
+++ b/scripts/regal/RegalLookup.py
@@ -1,10 +1,8 @@
 #!/usr/bin/python -B
 
-from string import Template, upper, replace
-
-from ApiUtil    import outputCode
-from ApiCodeGen import *
-
+from string           import Template, upper, replace
+from ApiUtil          import outputCode
+from ApiCodeGen       import *
 from RegalContextInfo import cond
 
 lookupSourceTemplate = Template( '''${AUTOGENERATED}
@@ -33,56 +31,64 @@
 
 ''')
 
+def pointerLookupSource(api = None, names = []):
+  return pointerLookupByNameCode([ (j,j) for j in names ],("%s_Name"%api,"%s_Value"%api),valueCast = '(void *)(%s)')
+
+def offsetLookupSource(api = None, names = [], table = None, exclude = set()):
+  names.sort()
+  ret = []
+  ret.append( 'const size_t %s_Offset[%d] = {'       % (api, len(names)+1) ) # terminating NULL
+  for j in names:
+    if j in exclude:
+      ret.append("  0,")
+    else:
+      ret.append("  offsetof(%s,%s)/sizeof(void *),"%(table,j))
+  ret.append( '  0')
+  ret.append('};')
+  ret.append('')
+  return ret
+
 def generateLookupSource(apis, args):
 
-  code = []
+  ret = []
 
   for i in apis:
-    names = []
-    for j in i.functions:
-      names.append(j.name)
 
-    regalOnly = set()
-    for j in i.functions:
-      if getattr(j,'regalOnly',False)==True:
-        regalOnly.add(j.name);
+    code = []
 
+    regalOnly = set( [ j.name for j in i.functions if getattr(j,'regalOnly',False)==True ] )
+
+    # Special handling for Regal-only function lookup
+    if i.name=='gl':
+      names = [ j.name for j in i.functions if getattr(j,'regalOnly',False)==True or j.category=='GL_REGAL_ES1_0_compatibility']
+#      code.extend(pointerLookupSource('regal',names))
+#      code.extend(offsetLookupSource('regal',names,"Dispatch::GL",regalOnly))
+
+    names = [ j.name for j in i.functions ]
+    conditional = None
     if i.name in cond:
-      code.append( '#if %s'%cond[i.name] )
-
-    code.extend(pointerLookupByNameCode([ (j,j) for j in names ],("%s_Name"%i.name,"%s_Value"%i.name),valueCast = '(void *)(%s)'))
-
-    #
-
-    code.append( 'const size_t %s_Offset[%d] = {'       % (i.name, len(names)+1) ) # terminating NULL
-
-    names.sort()
+      conditional = cond[i.name]
+    code.extend(pointerLookupSource(i.name,names))
 
     # offset table
     table = "Dispatch::Global"
-    if( i.name == "gl" ):
-        table = "Dispatch::GL"
+    if i.name == "gl":
+      table = "Dispatch::GL"
 
-    for j in names:
-      if j in regalOnly:
-        code.append("  0,")
-      else:
-        code.append("  offsetof(%s,%s)/sizeof(void *),"%(table,j))
-
-    code.append( '  0')
-    code.append('};')
-    code.append('')
+    code.extend(offsetLookupSource(i.name,names,table,regalOnly))
 
     if i.name in cond:
-      code.append( '#endif' )
-    code.append( '' )
+      conditional = cond[i.name]
+      code = wrapIf(conditional,code)
+
+    ret.extend(code)
 
   substitute = {}
 
   substitute['LICENSE']       = args.license
   substitute['AUTOGENERATED'] = args.generated
   substitute['COPYRIGHT']     = args.copyright
-  substitute['CODE']          = '\n'.join(code)
+  substitute['CODE']          = '\n'.join(ret)
 
   outputCode( '%s/RegalLookup.cpp' % args.srcdir, lookupSourceTemplate.substitute(substitute))
 
@@ -121,54 +127,67 @@
 #endif
 ''')
 
-def generateLookupHeader(apis, args):
-
-  code = []
-
-  for i in apis:
-
-    if i.name in cond:
-      code.append( '#if %s'%cond[i.name] )
-
-    names = []
-    for j in i.functions:
-      names.append( j.name )
-
-    lName  = '%s_Name'%i.name
-    lValue = '%s_Value'%i.name
-    lOffset = '%s_Offset'%i.name
-    lSize   = len(names)+1
-
-    code.append( '' )
-    code.append( 'extern const char * const %s[%d];'%(lName,lSize) )
-    code.append( 'extern const void *%s[%d];'%(lValue,lSize) )
-    code.append( 'extern const size_t %s[%d];'%(lOffset,lSize) )
-
-    code.append('''
+def pointerLookupHeader(api = None, names = []):
+  ret = []
+  ret.append( '' )
+  ret.append( 'extern const char * const %s_Name[%d];'%(api,len(names)+1) )
+  ret.append( 'extern const void *%s_Value[%d];'%(api,len(names)+1) )
+  ret.append('''
 
 template<typename T>
 T
 %s(const char *name, T def = NULL)
 {
-  const char **res = (const char **) std::bsearch(&name, %s, %d, sizeof(const char *), NameCmp);
-  return res ? reinterpret_cast<T>(const_cast<void *>(%s[(size_t) (res - %s)])) : def;
+  const char **res = (const char **) std::bsearch(&name, %s_Name, %d, sizeof(const char *), NameCmp);
+  return res ? reinterpret_cast<T>(const_cast<void *>(%s_Value[(size_t) (res - %s_Name)])) : def;
 }
 
-'''%('%s_Lookup'%i.name,lName,lSize-1,lValue,lName))
+'''%('%s_Lookup'%api,api,len(names),api,api))
 
-    code.append('''
+  return ret
+
+def offsetLookupHeader(api = None, names = [], table = None, exclude = set()):
+  ret = []
+  ret.append( '' )
+  ret.append( 'extern const size_t %s_Offset[%d];'%(api,len(names)+1) )
+  ret.append('''
 
 inline size_t %s(const char *name)
 {
-  const char **res = (const char **) std::bsearch(&name, %s, %d, sizeof(const char *), NameCmp);
-  return res ? %s[(size_t) (res - %s)] : 0;
+  const char **res = (const char **) std::bsearch(&name, %s_Name, %d, sizeof(const char *), NameCmp);
+  return res ? %s_Offset[(size_t) (res - %s_Name)] : 0;
 }
 
-'''%('%s_LookupOffset'%i.name,lName,lSize-1,lOffset,lName))
+'''%('%s_LookupOffset'%api,api,len(names),api,api))
+
+  return ret
+
+def generateLookupHeader(apis, args, offsetLookup = True, ifFunction = lambda i : True):
+
+  ret = []
+
+  for i in apis:
+
+    code = []
+
+    # Special handling for Regal-only function lookup
+    if i.name=='gl':
+      names = [ j.name for j in i.functions if getattr(j,'regalOnly',False)==True or j.category=='GL_REGAL_ES1_0_compatibility']
+#      code.extend(pointerLookupHeader('regal',names))
+#      code.extend(offsetLookupHeader('regal',names))
+    
+    names = [ j.name for j in i.functions ]
+    conditional = None
+    if i.name in cond:
+      conditional = cond[i.name]
+    code.extend(pointerLookupHeader(i.name,names))
+    code.extend(offsetLookupHeader(i.name,names))
 
     if i.name in cond:
-      code.append( '#endif' )
-    code.append( '' )
+      conditional = cond[i.name]
+      code = wrapIf(conditional,code)
+
+    ret.extend(code)
 
   substitute = {}
 
@@ -176,7 +195,7 @@
   substitute['AUTOGENERATED'] = args.generated
   substitute['COPYRIGHT']     = args.copyright
   substitute['HEADER_NAME']   = "REGAL_LOOKUP"
-  substitute['CODE']          = '\n'.join(code)
+  substitute['CODE']          = '\n'.join(ret)
 
   outputCode( '%s/RegalLookup.h' % args.srcdir, lookupHeaderTemplate.substitute(substitute))
 
diff --git a/src/apitrace/specs/glapi.py b/src/apitrace/specs/glapi.py
index de1f8ec..6029231 100644
--- a/src/apitrace/specs/glapi.py
+++ b/src/apitrace/specs/glapi.py
@@ -1863,13 +1863,13 @@
     GlFunction(GLuint, "glGenPathsNV", [(GLsizei, "range")]),
     GlFunction(Void, "glDeletePathsNV", [(GLuint, "path"), (GLsizei, "range")]),
     GlFunction(GLboolean, "glIsPathNV", [(GLuint, "path")]),
-    GlFunction(Void, "glPathCommandsNV", [(GLuint, "path"), (GLsizei, "numCommands"), (Array(Const(GLubyte), "numCommands"), "commands"), (GLsizei, "numCoords"), (GLenum, "coordType"), (Blob(Const(GLvoid), "_glPath_coords_size(numCoords, coordType)"), "coord")]),
+    GlFunction(Void, "glPathCommandsNV", [(GLuint, "path"), (GLsizei, "numCommands"), (Array(Const(GLubyte), "numCommands"), "commands"), (GLsizei, "numCoords"), (GLenum, "coordType"), (Blob(Const(GLvoid), "_glPath_coords_size(numCoords, coordType)"), "coords")]),
     GlFunction(Void, "glPathCoordsNV", [(GLuint, "path"), (GLsizei, "numCoords"), (GLenum, "coordType"), (Blob(Const(GLvoid), "_glPath_coords_size(numCoords, coordType)"), "coords")]),
     GlFunction(Void, "glPathSubCommandsNV", [(GLuint, "path"), (GLsizei, "commandStart"), (GLsizei, "commandsToDelete"), (GLsizei, "numCommands"), (Array(Const(GLubyte), "numCommands"), "commands"), (GLsizei, "numCoords"), (GLenum, "coordType"), (Blob(Const(GLvoid), "_glPath_coords_size(numCoords, coordType)"), "coords")]),
     GlFunction(Void, "glPathSubCoordsNV", [(GLuint, "path"), (GLsizei, "coordStart"), (GLsizei, "numCoords"), (GLenum, "coordType"), (Blob(Const(GLvoid), "_glPath_coords_size(numCoords, coordType)"), "coords")]),
     GlFunction(Void, "glPathStringNV", [(GLuint, "path"), (GLenum, "format"), (GLsizei, "length"), (Blob(Const(GLvoid), "length"), "pathString")]),
-    GlFunction(Void, "glPathGlyphsNV", [(GLuint, "firstPathName"), (GLenum, "fontTarget"), (Blob(Const(GLvoid), "_glPath_fontName_size(fontTarget, fontName)"), "fontName"), (GLbitfield, "fontStyle"), (GLsizei, "numGlyphs"), (GLenum, "type"), (Blob(Const(GLvoid), "_glPath_chardcodes_size(numGlyphs, type)"), "charcodes"), (GLenum, "handleMissingGlyphs"), (GLuint, "pathParameterTemplate"), (GLfloat, "emScale")]),
-    GlFunction(Void, "glPathGlyphRangeNV", [(GLuint, "firstPathName"), (GLenum, "fontTarget"), (Blob(Const(GLvoid), "_glPath_fontName_size(fontTarget, fontName)"), "fontName"), (GLbitfield, "fontStyle"), (GLuint, "firstGlyph"), (GLsizei, "numGlyphs"), (GLenum, "handleMissingGlyphs"), (GLuint, "pathParameterTemplate"), (GLfloat, "emScale")]),
+    GlFunction(Void, "glPathGlyphsNV", [(GLuint, "firstPathName"), (GLenum, "fontTarget"), (Blob(Const(GLvoid), "_glPath_fontName_size(fontTarget, fontName)"), "fontName"), (GLbitfield_fontStyle, "fontStyle"), (GLsizei, "numGlyphs"), (GLenum, "type"), (Blob(Const(GLvoid), "_glPath_chardcodes_size(numGlyphs, type)"), "charcodes"), (GLenum, "handleMissingGlyphs"), (GLuint, "pathParameterTemplate"), (GLfloat, "emScale")]),
+    GlFunction(Void, "glPathGlyphRangeNV", [(GLuint, "firstPathName"), (GLenum, "fontTarget"), (Blob(Const(GLvoid), "_glPath_fontName_size(fontTarget, fontName)"), "fontName"), (GLbitfield_fontStyle, "fontStyle"), (GLuint, "firstGlyph"), (GLsizei, "numGlyphs"), (GLenum, "handleMissingGlyphs"), (GLuint, "pathParameterTemplate"), (GLfloat, "emScale")]),
     GlFunction(Void, "glWeightPathsNV", [(GLuint, "resultPath"), (GLsizei, "numPaths"), (Array(Const(GLuint), "numPaths"), "paths"), (Array(Const(GLfloat), "numPaths"), "weights")]),
     GlFunction(Void, "glCopyPathNV", [(GLuint, "resultPath"), (GLuint, "srcPath")]),
     GlFunction(Void, "glInterpolatePathsNV", [(GLuint, "resultPath"), (GLuint, "pathA"), (GLuint, "pathB"), (GLfloat, "weight")]),
@@ -1885,7 +1885,7 @@
     GlFunction(Void, "glStencilStrokePathNV", [(GLuint, "path"), (GLint, "reference"), (GLuint, "mask")]),
     GlFunction(Void, "glStencilFillPathInstancedNV", [(GLsizei, "numPaths"), (GLenum, "pathNameType"), (Blob(Const(GLvoid), "_gl_Paths_size(numPaths, pathNameType, paths)"), "paths"), (GLuint, "pathBase"), (GLenum, "fillMode"), (GLuint, "mask"), (GLenum, "transformType"), (Array(Const(GLfloat), "_gl_transformType_size(numPaths, transformType)"), "transformValues")]),
     GlFunction(Void, "glStencilStrokePathInstancedNV", [(GLsizei, "numPaths"), (GLenum, "pathNameType"), (Blob(Const(GLvoid), "_gl_Paths_size(numPaths, pathNameType, paths)"), "paths"), (GLuint, "pathBase"), (GLint, "reference"), (GLuint, "mask"), (GLenum, "transformType"), (Array(Const(GLfloat), "_gl_transformType_size(numPaths, transformType)"), "transformValues")]),
-    GlFunction(Void, "glPathCoverDepthFuncNV", [(GLenum, "func")]),
+    GlFunction(Void, "glPathCoverDepthFuncNV", [(GLenum, "zfunc")]),
     GlFunction(Void, "glPathColorGenNV", [(GLenum, "color"), (GLenum, "genMode"), (GLenum, "colorFormat"), (Array(Const(GLfloat), "_gl_PathColorGen_size(genMode, colorFormat)"), "coeffs")]),
     GlFunction(Void, "glPathTexGenNV", [(GLenum, "texCoordSet"), (GLenum, "genMode"), (GLint, "components"), (Array(Const(GLfloat), "_gl_PathTexGen_size(genMode, components)"), "coeffs")]),
     GlFunction(Void, "glPathFogGenNV", [(GLenum, "genMode")]),
@@ -1898,8 +1898,8 @@
     GlFunction(Void, "glGetPathCommandsNV", [(GLuint, "path"), Out(Pointer(GLubyte), "commands")], sideeffects=False),
     GlFunction(Void, "glGetPathCoordsNV", [(GLuint, "path"), Out(Pointer(GLfloat), "coords")], sideeffects=False),
     GlFunction(Void, "glGetPathDashArrayNV", [(GLuint, "path"), Out(Pointer(GLfloat), "dashArray")], sideeffects=False),
-    GlFunction(Void, "glGetPathMetricsNV", [(GLbitfield, "metricQueryMask"), (GLsizei, "numPaths"), (GLenum, "pathNameType"), (Blob(Const(GLvoid), "_gl_Paths_size(numPaths, pathNameType, paths)"), "paths"), (GLuint, "pathBase"), (GLsizei, "stride"), Out(Pointer(GLfloat), "metrics")], sideeffects=False),
-    GlFunction(Void, "glGetPathMetricRangeNV", [(GLbitfield, "metricQueryMask"), (GLuint, "firstPathName"), (GLsizei, "numPaths"), (GLsizei, "stride"), Out(Pointer(GLfloat), "metrics")], sideeffects=False),
+    GlFunction(Void, "glGetPathMetricsNV", [(GLbitfield_metricQueryMask, "metricQueryMask"), (GLsizei, "numPaths"), (GLenum, "pathNameType"), (Blob(Const(GLvoid), "_gl_Paths_size(numPaths, pathNameType, paths)"), "paths"), (GLuint, "pathBase"), (GLsizei, "stride"), Out(Pointer(GLfloat), "metrics")], sideeffects=False),
+    GlFunction(Void, "glGetPathMetricRangeNV", [(GLbitfield_metricQueryMask, "metricQueryMask"), (GLuint, "firstPathName"), (GLsizei, "numPaths"), (GLsizei, "stride"), Out(Pointer(GLfloat), "metrics")], sideeffects=False),
     GlFunction(Void, "glGetPathSpacingNV", [(GLenum, "pathListMode"), (GLsizei, "numPaths"), (GLenum, "pathNameType"), (Blob(Const(GLvoid), "_gl_Paths_size(numPaths, pathNameType, paths)"), "paths"), (GLuint, "pathBase"), (GLfloat, "advanceScale"), (GLfloat, "kerningScale"), (GLenum, "transformType"), Out(Array(GLfloat, "_gl_GetPathSpacing(numPaths,transformType)"),  "returnedSpacing")]),
     GlFunction(Void, "glGetPathColorGenivNV", [(GLenum, "color"), (GLenum, "pname"), Out(Pointer(GLint), "value")], sideeffects=False),
     GlFunction(Void, "glGetPathColorGenfvNV", [(GLenum, "color"), (GLenum, "pname"), Out(Pointer(GLfloat), "value")], sideeffects=False),
diff --git a/src/apitrace/specs/glparams.py b/src/apitrace/specs/glparams.py
index b135319..9f0bbd8 100644
--- a/src/apitrace/specs/glparams.py
+++ b/src/apitrace/specs/glparams.py
@@ -1730,7 +1730,6 @@
     # XXX: GL_DOT3_RGBA_EXT == GL_PROGRAM_BINARY_LENGTH, but you can't glGet GL_DOT3_RGBA_EXT
     ("glGetProgram",	I,	1,	"GL_PROGRAM_BINARY_LENGTH"),	# 0x8741,
     ("",	X,	1,	"GL_MIRROR_CLAMP_ATI"),	# 0x8742
-    ("",	X,	1,	"GL_MIRROR_CLAMP_TO_EDGE_ATI"),	# 0x8743
     ("",	X,	1,	"GL_MODULATE_ADD_ATI"),	# 0x8744
     ("",	X,	1,	"GL_MODULATE_SIGNED_ADD_ATI"),	# 0x8745
     ("",	X,	1,	"GL_MODULATE_SUBTRACT_ATI"),	# 0x8746
@@ -2447,7 +2446,7 @@
     ("glGet",	I,	1,	"GL_TEXTURE_BINDING_BUFFER"),	# 0x8C2C
     ("glGet",	I,	1,	"GL_TEXTURE_BUFFER_DATA_STORE_BINDING"),	# 0x8C2D
     ("glGet",	E,	1,	"GL_TEXTURE_BUFFER_FORMAT"),	# 0x8C2E
-    ("",	X,	1,	"GL_ANY_SAMPLES_PASSED"),	# 0x8C2F
+    ("",	B,	1,	"GL_ANY_SAMPLES_PASSED"),	# 0x8C2F
     ("",	X,	1,	"GL_SAMPLE_SHADING"),	# 0x8C36
     ("",	X,	1,	"GL_MIN_SAMPLE_SHADING_VALUE"),	# 0x8C37
     ("",	X,	1,	"GL_R11F_G11F_B10F"),	# 0x8C3A
@@ -2577,8 +2576,8 @@
     ("",	X,	1,	"GL_SAMPLER_EXTERNAL_OES"),	# 0x8D66
     ("",	X,	1,	"GL_TEXTURE_BINDING_EXTERNAL_OES"),	# 0x8D67
     ("",	X,	1,	"GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES"),	# 0x8D68
-    ("",	B,	1,	"GL_PRIMITIVE_RESTART_FIXED_INDEX"),	# 0x8D69
-    ("",	X,	1,	"GL_ANY_SAMPLES_PASSED_CONSERVATIVE"),	# 0x8D6A
+    ("glGet",	B,	1,	"GL_PRIMITIVE_RESTART_FIXED_INDEX"),	# 0x8D69
+    ("",	B,	1,	"GL_ANY_SAMPLES_PASSED_CONSERVATIVE"),	# 0x8D6A
     ("glGet",	I,	1,	"GL_MAX_ELEMENT_INDEX"),	# 0x8D6B
     ("",	X,	1,	"GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT"),	# 0x8D6C
     ("",	X,	1,	"GL_RGBA32UI"),	# 0x8D70
@@ -3022,7 +3021,6 @@
     ("",	X,	1,	"GL_PATH_STROKE_COVER_MODE_NV"),	# 0x9083
     ("",	X,	1,	"GL_PATH_STROKE_MASK_NV"),	# 0x9084
     ("",	X,	1,	"GL_PATH_SAMPLE_QUALITY_NV"),	# 0x9085
-    ("",	X,	1,	"GL_PATH_STROKE_BOUND_NV"),	# 0x9086
     ("",	X,	1,	"GL_PATH_STROKE_OVERSAMPLE_COUNT_NV"),	# 0x9087
     ("",	X,	1,	"GL_COUNT_UP_NV"),	# 0x9088
     ("",	X,	1,	"GL_COUNT_DOWN_NV"),	# 0x9089
@@ -3182,9 +3180,6 @@
     ("",	X,	1,	"GL_VERTEX_ARRAY_OBJECT_EXT"),	# 0x9154
     ("",	X,	1,	"GL_SAMPLER_OBJECT_AMD"),	# 0x9155
     ("",	X,	1,	"GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD"),	# 0x9160
-    ("",	X,	1,	"GL_QUERY_BUFFER_AMD"),	# 0x9192
-    ("",	X,	1,	"GL_QUERY_BUFFER_BINDING_AMD"),	# 0x9193
-    ("",	X,	1,	"GL_QUERY_RESULT_NO_WAIT_AMD"),	# 0x9194
     ("glGetTexLevelParameter",	I,	1,	"GL_TEXTURE_BUFFER_OFFSET"),	# 0x919D
     ("glGetTexLevelParameter",	I,	1,	"GL_TEXTURE_BUFFER_SIZE"),	# 0x919E
     ("glGet",	I,	1,	"GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT"),	# 0x919F
diff --git a/src/apitrace/specs/gltypes.py b/src/apitrace/specs/gltypes.py
index 806f25d..0ce55a2 100644
--- a/src/apitrace/specs/gltypes.py
+++ b/src/apitrace/specs/gltypes.py
@@ -246,6 +246,37 @@
     "GL_QUERY_BUFFER_BARRIER_BIT",              # 0x00008000
 ])
 
+GLbitfield_metricQueryMask = Flags(GLbitfield, [
+    "GL_GLYPH_WIDTH_BIT_NV",                    # 0x01
+    "GL_GLYPH_HEIGHT_BIT_NV",                   # 0x02
+    "GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV",     # 0x04
+    "GL_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV",     # 0x08
+    "GL_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV", # 0x10
+    "GL_GLYPH_VERTICAL_BEARING_X_BIT_NV",       # 0x20
+    "GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV",       # 0x40
+    "GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV", # 0x80
+    "GL_GLYPH_HAS_KERNING_BIT_NV",              # 0x100
+    "GL_FONT_X_MIN_BOUNDS_BIT_NV",              # 0x00010000
+    "GL_FONT_Y_MIN_BOUNDS_BIT_NV",              # 0x00020000
+    "GL_FONT_X_MAX_BOUNDS_BIT_NV",              # 0x00040000
+    "GL_FONT_Y_MAX_BOUNDS_BIT_NV",              # 0x00080000
+    "GL_FONT_UNITS_PER_EM_BIT_NV",              # 0x00100000
+    "GL_FONT_ASCENDER_BIT_NV",                  # 0x00200000
+    "GL_FONT_DESCENDER_BIT_NV",                 # 0x00400000
+    "GL_FONT_HEIGHT_BIT_NV",                    # 0x00800000
+    "GL_FONT_MAX_ADVANCE_WIDTH_BIT_NV",         # 0x01000000
+    "GL_FONT_MAX_ADVANCE_HEIGHT_BIT_NV",        # 0x02000000
+    "GL_FONT_UNDERLINE_POSITION_BIT_NV",        # 0x04000000
+    "GL_FONT_UNDERLINE_THICKNESS_BIT_NV",       # 0x08000000
+    "GL_FONT_HAS_KERNING_BIT_NV",               # 0x10000000
+])
+
+GLbitfield_fontStyle = Flags(GLbitfield, [
+    "GL_BOLD_BIT_NV",                           # 0x01
+    "GL_ITALIC_BIT_NV",                         # 0x02
+])
+
+
 # GL_ARB_vertex_array_bgra
 size_bgra = FakeEnum(GLint, [
     "GL_BGRA",
diff --git a/src/apitrace/thirdparty/khronos/GL/glext.h b/src/apitrace/thirdparty/khronos/GL/glext.h
index 7b7b9b8..67551cf 100644
--- a/src/apitrace/thirdparty/khronos/GL/glext.h
+++ b/src/apitrace/thirdparty/khronos/GL/glext.h
@@ -6058,7 +6058,6 @@
 #define GL_PATH_STROKE_COVER_MODE_NV      0x9083
 #define GL_PATH_STROKE_MASK_NV            0x9084
 #define GL_PATH_SAMPLE_QUALITY_NV         0x9085
-#define GL_PATH_STROKE_BOUND_NV           0x9086
 #define GL_PATH_STROKE_OVERSAMPLE_COUNT_NV 0x9087
 #define GL_COUNT_UP_NV                    0x9088
 #define GL_COUNT_DOWN_NV                  0x9089
@@ -6157,20 +6156,20 @@
 #define GL_GLYPH_VERTICAL_BEARING_X_BIT_NV 0x20
 #define GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV 0x40
 #define GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV 0x80
-#define GL_GLYPH_HAS_KERNING_NV           0x100
-#define GL_FONT_X_MIN_BOUNDS_NV           0x00010000
-#define GL_FONT_Y_MIN_BOUNDS_NV           0x00020000
-#define GL_FONT_X_MAX_BOUNDS_NV           0x00040000
-#define GL_FONT_Y_MAX_BOUNDS_NV           0x00080000
-#define GL_FONT_UNITS_PER_EM_NV           0x00100000
-#define GL_FONT_ASCENDER_NV               0x00200000
-#define GL_FONT_DESCENDER_NV              0x00400000
-#define GL_FONT_HEIGHT_NV                 0x00800000
-#define GL_FONT_MAX_ADVANCE_WIDTH_NV      0x01000000
-#define GL_FONT_MAX_ADVANCE_HEIGHT_NV     0x02000000
-#define GL_FONT_UNDERLINE_POSITION_NV     0x04000000
-#define GL_FONT_UNDERLINE_THICKNESS_NV    0x08000000
-#define GL_FONT_HAS_KERNING_NV            0x10000000
+#define GL_GLYPH_HAS_KERNING_BIT_NV       0x100
+#define GL_FONT_X_MIN_BOUNDS_BIT_NV       0x00010000
+#define GL_FONT_Y_MIN_BOUNDS_BIT_NV       0x00020000
+#define GL_FONT_X_MAX_BOUNDS_BIT_NV       0x00040000
+#define GL_FONT_Y_MAX_BOUNDS_BIT_NV       0x00080000
+#define GL_FONT_UNITS_PER_EM_BIT_NV       0x00100000
+#define GL_FONT_ASCENDER_BIT_NV           0x00200000
+#define GL_FONT_DESCENDER_BIT_NV          0x00400000
+#define GL_FONT_HEIGHT_BIT_NV             0x00800000
+#define GL_FONT_MAX_ADVANCE_WIDTH_BIT_NV  0x01000000
+#define GL_FONT_MAX_ADVANCE_HEIGHT_BIT_NV 0x02000000
+#define GL_FONT_UNDERLINE_POSITION_BIT_NV 0x04000000
+#define GL_FONT_UNDERLINE_THICKNESS_BIT_NV 0x08000000
+#define GL_FONT_HAS_KERNING_BIT_NV        0x10000000
 #endif
 
 #ifndef GL_AMD_pinned_memory
diff --git a/src/apitrace/wrappers/regaltrace.cpp b/src/apitrace/wrappers/regaltrace.cpp
index 03f7d7b..b442173 100644
--- a/src/apitrace/wrappers/regaltrace.cpp
+++ b/src/apitrace/wrappers/regaltrace.cpp
@@ -1502,6 +1502,7 @@
     case GL_TEXTURE_BINDING_BUFFER: return 1;
     case GL_TEXTURE_BUFFER_DATA_STORE_BINDING: return 1;
     case GL_TEXTURE_BUFFER_FORMAT: return 1;
+    case GL_ANY_SAMPLES_PASSED: return 1;
     case GL_TRANSFORM_FEEDBACK_BUFFER_START: return 1;
     case GL_TRANSFORM_FEEDBACK_BUFFER_SIZE: return 1;
     case GL_RASTERIZER_DISCARD: return 1;
@@ -1530,6 +1531,7 @@
     case GL_RENDERBUFFER_STENCIL_SIZE: return 1;
     case GL_MAX_SAMPLES: return 1;
     case GL_PRIMITIVE_RESTART_FIXED_INDEX: return 1;
+    case GL_ANY_SAMPLES_PASSED_CONSERVATIVE: return 1;
     case GL_MAX_ELEMENT_INDEX: return 1;
     case GL_RGBA_INTEGER_MODE_EXT: return 1;
     case GL_FRAMEBUFFER_ATTACHMENT_LAYERED: return 1;
@@ -3374,7 +3376,6 @@
     {"GL_DOT3_RGB_EXT", GL_DOT3_RGB_EXT},
     {"GL_PROGRAM_BINARY_LENGTH", GL_PROGRAM_BINARY_LENGTH},
     {"GL_MIRROR_CLAMP_ATI", GL_MIRROR_CLAMP_ATI},
-    {"GL_MIRROR_CLAMP_TO_EDGE_ATI", GL_MIRROR_CLAMP_TO_EDGE_ATI},
     {"GL_MODULATE_ADD_ATI", GL_MODULATE_ADD_ATI},
     {"GL_MODULATE_SIGNED_ADD_ATI", GL_MODULATE_SIGNED_ADD_ATI},
     {"GL_MODULATE_SUBTRACT_ATI", GL_MODULATE_SUBTRACT_ATI},
@@ -4627,7 +4628,6 @@
     {"GL_PATH_STROKE_COVER_MODE_NV", GL_PATH_STROKE_COVER_MODE_NV},
     {"GL_PATH_STROKE_MASK_NV", GL_PATH_STROKE_MASK_NV},
     {"GL_PATH_SAMPLE_QUALITY_NV", GL_PATH_SAMPLE_QUALITY_NV},
-    {"GL_PATH_STROKE_BOUND_NV", GL_PATH_STROKE_BOUND_NV},
     {"GL_PATH_STROKE_OVERSAMPLE_COUNT_NV", GL_PATH_STROKE_OVERSAMPLE_COUNT_NV},
     {"GL_COUNT_UP_NV", GL_COUNT_UP_NV},
     {"GL_COUNT_DOWN_NV", GL_COUNT_DOWN_NV},
@@ -4787,9 +4787,6 @@
     {"GL_VERTEX_ARRAY_OBJECT_EXT", GL_VERTEX_ARRAY_OBJECT_EXT},
     {"GL_SAMPLER_OBJECT_AMD", GL_SAMPLER_OBJECT_AMD},
     {"GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD", GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD},
-    {"GL_QUERY_BUFFER_AMD", GL_QUERY_BUFFER_AMD},
-    {"GL_QUERY_BUFFER_BINDING_AMD", GL_QUERY_BUFFER_BINDING_AMD},
-    {"GL_QUERY_RESULT_NO_WAIT_AMD", GL_QUERY_RESULT_NO_WAIT_AMD},
     {"GL_TEXTURE_BUFFER_OFFSET", GL_TEXTURE_BUFFER_OFFSET},
     {"GL_TEXTURE_BUFFER_SIZE", GL_TEXTURE_BUFFER_SIZE},
     {"GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT", GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT},
@@ -4951,7 +4948,7 @@
 };
 
 static const trace::EnumSig _enumGLenum_sig = {
-    1, 3236, _enumGLenum_values
+    1, 3231, _enumGLenum_values
 };
 
 static const trace::BitmaskFlag _bitmaskGLbitfield1_flags[] = {
@@ -5243,6 +5240,44 @@
     4, 6, _bitmaskGLbitfield5_flags
 };
 
+static const trace::BitmaskFlag _bitmaskGLbitfield9_flags[] = {
+    {"GL_BOLD_BIT_NV", GL_BOLD_BIT_NV},
+    {"GL_ITALIC_BIT_NV", GL_ITALIC_BIT_NV},
+};
+
+static const trace::BitmaskSig _bitmaskGLbitfield9_sig = {
+    8, 2, _bitmaskGLbitfield9_flags
+};
+
+static const trace::BitmaskFlag _bitmaskGLbitfield8_flags[] = {
+    {"GL_GLYPH_WIDTH_BIT_NV", GL_GLYPH_WIDTH_BIT_NV},
+    {"GL_GLYPH_HEIGHT_BIT_NV", GL_GLYPH_HEIGHT_BIT_NV},
+    {"GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV", GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV},
+    {"GL_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV", GL_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV},
+    {"GL_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV", GL_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV},
+    {"GL_GLYPH_VERTICAL_BEARING_X_BIT_NV", GL_GLYPH_VERTICAL_BEARING_X_BIT_NV},
+    {"GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV", GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV},
+    {"GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV", GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV},
+    {"GL_GLYPH_HAS_KERNING_BIT_NV", GL_GLYPH_HAS_KERNING_BIT_NV},
+    {"GL_FONT_X_MIN_BOUNDS_BIT_NV", GL_FONT_X_MIN_BOUNDS_BIT_NV},
+    {"GL_FONT_Y_MIN_BOUNDS_BIT_NV", GL_FONT_Y_MIN_BOUNDS_BIT_NV},
+    {"GL_FONT_X_MAX_BOUNDS_BIT_NV", GL_FONT_X_MAX_BOUNDS_BIT_NV},
+    {"GL_FONT_Y_MAX_BOUNDS_BIT_NV", GL_FONT_Y_MAX_BOUNDS_BIT_NV},
+    {"GL_FONT_UNITS_PER_EM_BIT_NV", GL_FONT_UNITS_PER_EM_BIT_NV},
+    {"GL_FONT_ASCENDER_BIT_NV", GL_FONT_ASCENDER_BIT_NV},
+    {"GL_FONT_DESCENDER_BIT_NV", GL_FONT_DESCENDER_BIT_NV},
+    {"GL_FONT_HEIGHT_BIT_NV", GL_FONT_HEIGHT_BIT_NV},
+    {"GL_FONT_MAX_ADVANCE_WIDTH_BIT_NV", GL_FONT_MAX_ADVANCE_WIDTH_BIT_NV},
+    {"GL_FONT_MAX_ADVANCE_HEIGHT_BIT_NV", GL_FONT_MAX_ADVANCE_HEIGHT_BIT_NV},
+    {"GL_FONT_UNDERLINE_POSITION_BIT_NV", GL_FONT_UNDERLINE_POSITION_BIT_NV},
+    {"GL_FONT_UNDERLINE_THICKNESS_BIT_NV", GL_FONT_UNDERLINE_THICKNESS_BIT_NV},
+    {"GL_FONT_HAS_KERNING_BIT_NV", GL_FONT_HAS_KERNING_BIT_NV},
+};
+
+static const trace::BitmaskSig _bitmaskGLbitfield8_sig = {
+    7, 22, _bitmaskGLbitfield8_flags
+};
+
 static void _write__GLvoid3(int selector, GLvoid * const & value) {
     switch (selector) {
     default:
@@ -5827,7 +5862,7 @@
 };
 
 static const trace::BitmaskSig _bitmaskint29_sig = {
-    15, 4, _bitmaskint29_flags
+    17, 4, _bitmaskint29_flags
 };
 
 static const trace::EnumValue _enumint36_values[] = {
@@ -5851,7 +5886,7 @@
 };
 
 static const trace::BitmaskSig _bitmaskint28_sig = {
-    14, 7, _bitmaskint28_flags
+    16, 7, _bitmaskint28_flags
 };
 
 static const trace::EnumValue _enumint37_values[] = {
@@ -5915,7 +5950,7 @@
 };
 
 static const trace::BitmaskSig _bitmaskint41_sig = {
-    17, 2, _bitmaskint41_flags
+    19, 2, _bitmaskint41_flags
 };
 
 static const trace::BitmaskFlag _bitmaskint42_flags[] = {
@@ -5924,7 +5959,7 @@
 };
 
 static const trace::BitmaskSig _bitmaskint42_sig = {
-    18, 2, _bitmaskint42_flags
+    20, 2, _bitmaskint42_flags
 };
 
 static const char * _structstructEGLClientPixmapHI_members[4] = {
@@ -5951,7 +5986,7 @@
 };
 
 static const trace::BitmaskSig _bitmaskint40_sig = {
-    16, 2, _bitmaskint40_flags
+    18, 2, _bitmaskint40_flags
 };
 
 #endif // REGAL_SYS_EGL
@@ -6113,7 +6148,7 @@
 };
 
 static const trace::BitmaskSig _bitmaskint8_sig = {
-    9, 2, _bitmaskint8_flags
+    11, 2, _bitmaskint8_flags
 };
 
 static const trace::BitmaskFlag _bitmaskint9_flags[] = {
@@ -6123,7 +6158,7 @@
 };
 
 static const trace::BitmaskSig _bitmaskint9_sig = {
-    10, 3, _bitmaskint9_flags
+    12, 3, _bitmaskint9_flags
 };
 
 static const trace::EnumValue _enumint10_values[] = {
@@ -6163,7 +6198,7 @@
 };
 
 static const trace::BitmaskSig _bitmaskint14_sig = {
-    11, 2, _bitmaskint14_flags
+    13, 2, _bitmaskint14_flags
 };
 
 static const trace::BitmaskFlag _bitmaskint15_flags[] = {
@@ -6173,7 +6208,7 @@
 };
 
 static const trace::BitmaskSig _bitmaskint15_sig = {
-    12, 3, _bitmaskint15_flags
+    14, 3, _bitmaskint15_flags
 };
 
 static const trace::BitmaskFlag _bitmaskint16_flags[] = {
@@ -6182,7 +6217,7 @@
 };
 
 static const trace::BitmaskSig _bitmaskint16_sig = {
-    13, 2, _bitmaskint16_flags
+    15, 2, _bitmaskint16_flags
 };
 
 #endif // REGAL_SYS_GLX
@@ -6219,7 +6254,7 @@
 };
 
 static const trace::BitmaskSig _bitmaskDWORD1_sig = {
-    19, 18, _bitmaskDWORD1_flags
+    21, 18, _bitmaskDWORD1_flags
 };
 
 static const char * _structPIXELFORMATDESCRIPTOR_members[26] = {
@@ -6533,7 +6568,7 @@
 };
 
 static const trace::BitmaskSig _bitmaskint44_sig = {
-    20, 2, _bitmaskint44_flags
+    22, 2, _bitmaskint44_flags
 };
 
 static const trace::BitmaskFlag _bitmaskint45_flags[] = {
@@ -6542,7 +6577,7 @@
 };
 
 static const trace::BitmaskSig _bitmaskint45_sig = {
-    21, 2, _bitmaskint45_flags
+    23, 2, _bitmaskint45_flags
 };
 
 static const char * _structRECT_members[4] = {
@@ -11083,7 +11118,7 @@
 static const char * _glIsPathNV_args[1] = {"path"};
 static const trace::FunctionSig _glIsPathNV_sig = {1508, "glIsPathNV", 1, _glIsPathNV_args};
 
-static const char * _glPathCommandsNV_args[6] = {"path", "numCommands", "commands", "numCoords", "coordType", "coord"};
+static const char * _glPathCommandsNV_args[6] = {"path", "numCommands", "commands", "numCoords", "coordType", "coords"};
 static const trace::FunctionSig _glPathCommandsNV_sig = {1509, "glPathCommandsNV", 6, _glPathCommandsNV_args};
 
 static const char * _glPathCoordsNV_args[4] = {"path", "numCoords", "coordType", "coords"};
@@ -11149,7 +11184,7 @@
 static const char * _glStencilStrokePathInstancedNV_args[8] = {"numPaths", "pathNameType", "paths", "pathBase", "reference", "mask", "transformType", "transformValues"};
 static const trace::FunctionSig _glStencilStrokePathInstancedNV_sig = {1530, "glStencilStrokePathInstancedNV", 8, _glStencilStrokePathInstancedNV_args};
 
-static const char * _glPathCoverDepthFuncNV_args[1] = {"func"};
+static const char * _glPathCoverDepthFuncNV_args[1] = {"zfunc"};
 static const trace::FunctionSig _glPathCoverDepthFuncNV_sig = {1531, "glPathCoverDepthFuncNV", 1, _glPathCoverDepthFuncNV_args};
 
 static const char * _glPathColorGenNV_args[4] = {"color", "genMode", "colorFormat", "coeffs"};
@@ -53508,7 +53543,7 @@
     return _result;
 }
 
-void glPathCommandsNV( GLuint path, GLsizei numCommands, const GLubyte * commands, GLsizei numCoords, GLenum coordType, const GLvoid * coord ) {
+void glPathCommandsNV( GLuint path, GLsizei numCommands, const GLubyte * commands, GLsizei numCoords, GLenum coordType, const GLvoid * coords ) {
     unsigned _call = trace::localWriter.beginEnter(&_glPathCommandsNV_sig);
     trace::localWriter.beginArg(0);
     trace::localWriter.writeUInt(path);
@@ -53537,10 +53572,10 @@
     trace::localWriter.writeEnum(&_enumGLenum_sig, coordType);
     trace::localWriter.endArg();
     trace::localWriter.beginArg(5);
-    trace::localWriter.writeBlob(coord, _glPath_coords_size(numCoords, coordType));
+    trace::localWriter.writeBlob(coords, _glPath_coords_size(numCoords, coordType));
     trace::localWriter.endArg();
     trace::localWriter.endEnter();
-    _glPathCommandsNV(path, numCommands, commands, numCoords, coordType, coord);
+    _glPathCommandsNV(path, numCommands, commands, numCoords, coordType, coords);
     trace::localWriter.beginLeave(_call);
     if (true) {
     }
@@ -53673,7 +53708,7 @@
     trace::localWriter.writeBlob(fontName, _glPath_fontName_size(fontTarget, fontName));
     trace::localWriter.endArg();
     trace::localWriter.beginArg(3);
-    trace::localWriter.writeUInt(fontStyle);
+    trace::localWriter.writeBitmask(&_bitmaskGLbitfield9_sig, fontStyle);
     trace::localWriter.endArg();
     trace::localWriter.beginArg(4);
     trace::localWriter.writeSInt(numGlyphs);
@@ -53713,7 +53748,7 @@
     trace::localWriter.writeBlob(fontName, _glPath_fontName_size(fontTarget, fontName));
     trace::localWriter.endArg();
     trace::localWriter.beginArg(3);
-    trace::localWriter.writeUInt(fontStyle);
+    trace::localWriter.writeBitmask(&_bitmaskGLbitfield9_sig, fontStyle);
     trace::localWriter.endArg();
     trace::localWriter.beginArg(4);
     trace::localWriter.writeUInt(firstGlyph);
@@ -54144,13 +54179,13 @@
     trace::localWriter.endLeave();
 }
 
-void glPathCoverDepthFuncNV( GLenum func ) {
+void glPathCoverDepthFuncNV( GLenum zfunc ) {
     unsigned _call = trace::localWriter.beginEnter(&_glPathCoverDepthFuncNV_sig);
     trace::localWriter.beginArg(0);
-    trace::localWriter.writeEnum(&_enumGLenum_sig, func);
+    trace::localWriter.writeEnum(&_enumGLenum_sig, zfunc);
     trace::localWriter.endArg();
     trace::localWriter.endEnter();
-    _glPathCoverDepthFuncNV(func);
+    _glPathCoverDepthFuncNV(zfunc);
     trace::localWriter.beginLeave(_call);
     if (true) {
     }
@@ -54487,7 +54522,7 @@
 void glGetPathMetricsNV( GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const GLvoid * paths, GLuint pathBase, GLsizei stride, GLfloat * metrics ) {
     unsigned _call = trace::localWriter.beginEnter(&_glGetPathMetricsNV_sig);
     trace::localWriter.beginArg(0);
-    trace::localWriter.writeUInt(metricQueryMask);
+    trace::localWriter.writeBitmask(&_bitmaskGLbitfield8_sig, metricQueryMask);
     trace::localWriter.endArg();
     trace::localWriter.beginArg(1);
     trace::localWriter.writeSInt(numPaths);
@@ -54526,7 +54561,7 @@
 void glGetPathMetricRangeNV( GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat * metrics ) {
     unsigned _call = trace::localWriter.beginEnter(&_glGetPathMetricRangeNV_sig);
     trace::localWriter.beginArg(0);
-    trace::localWriter.writeUInt(metricQueryMask);
+    trace::localWriter.writeBitmask(&_bitmaskGLbitfield8_sig, metricQueryMask);
     trace::localWriter.endArg();
     trace::localWriter.beginArg(1);
     trace::localWriter.writeUInt(firstPathName);
diff --git a/src/regal/Regal.cpp b/src/regal/Regal.cpp
index 6e40051..a6efc86 100644
--- a/src/regal/Regal.cpp
+++ b/src/regal/Regal.cpp
@@ -32611,15 +32611,42 @@
     DispatchTableGlobal *_next = &dispatcherGlobal.front();
     RegalAssert(_next);
     PROC ret = NULL;
+    //
+    // wglGetProcAddress returns NULL for unsupported
+    // entry points.  Here we need Regal to behave
+    // similarly depending on what's emulated.
+    //
+
+    // Regal-only and ES 1.0 aliased functions are
+    // always provided by Regal
+
+    // ret = Lookup::regal_Lookup<PROC>(lpszProc);
+    // if (ret)
+    //  return ret;
+
+    // Ask the back-end driver if the entry point
+    // is available.  If not, return NULL
+    //
+    // TODO - we need to query ContextInfo and
+    //        EmulationInfo here instead.
+
     ret = _next->call(&_next->wglGetProcAddress)(lpszProc);
     if (!ret)
       return NULL;
+
+    // Return the Regal implementation of the entry
+    // point, either GL or WGL
+
     ret = Lookup::gl_Lookup<PROC>(lpszProc);
     if (ret)
       return ret;
+
     ret = Lookup::wgl_Lookup<PROC>(lpszProc);
     if (ret)
       return ret;
+
+    // As a last resort, dispatch the lookup to
+    // the global dispatch stack...
     ret = _next->call(&_next->wglGetProcAddress)(lpszProc);
     return ret;
   }
diff --git a/src/regal/RegalConfig.cpp b/src/regal/RegalConfig.cpp
index 904a5e6..dc1d1f2 100644
--- a/src/regal/RegalConfig.cpp
+++ b/src/regal/RegalConfig.cpp
@@ -53,6 +53,12 @@
 
   ::std::string configFile("");  // Don't read/write configuration by default
 
+  ::std::string loadGL  ("");    // Default to auto-detect
+  ::std::string loadES2 ("");    // Default to auto-detect
+//::std::string loadGLX ("");    // Default to auto-detect
+//::std::string loadWGL ("");    // Default to auto-detect
+  ::std::string loadEGL ("");    // Default to auto-detect
+
   bool forceES1Profile     = REGAL_FORCE_ES1_PROFILE;
   bool forceES2Profile     = REGAL_FORCE_ES2_PROFILE;
   bool forceCoreProfile    = REGAL_FORCE_CORE_PROFILE;
@@ -154,6 +160,12 @@
     Internal("Config::Init","()");
 
 #ifndef REGAL_NO_GETENV
+    getEnv( "REGAL_LOAD_GL",  loadGL);
+    getEnv( "REGAL_LOAD_ES2", loadES2);
+//  getEnv( "REGAL_LOAD_GLX", loadGLX);
+//  getEnv( "REGAL_LOAD_WGL", loadWGL);
+    getEnv( "REGAL_LOAD_EGL", loadEGL);
+
     getEnv( "REGAL_SYS_ES2", sysES2, REGAL_SYS_ES2);
     getEnv( "REGAL_SYS_GL",  sysGL,  REGAL_SYS_GL);
 
@@ -441,6 +453,14 @@
 
       jo.member("configFile", configFile);
 
+      jo.object("load");
+        jo.member("GL",  loadGL);
+        jo.member("ES2", loadES2);
+//      jo.member("GLX", loadGLX);
+//      jo.member("WGL", loadWGL);
+        jo.member("EGL", loadEGL);
+      jo.end();
+
       jo.object("system");
         jo.member("ES1", sysES1);
         jo.member("ES2", sysES2);
diff --git a/src/regal/RegalConfig.h b/src/regal/RegalConfig.h
index 4173a40..24239d1 100644
--- a/src/regal/RegalConfig.h
+++ b/src/regal/RegalConfig.h
@@ -54,6 +54,12 @@
 
   extern ::std::string configFile;
 
+  extern ::std::string loadGL;       // REGAL_LOAD_GL
+  extern ::std::string loadES2;      // REGAL_LOAD_ES2
+//extern ::std::string loadGLX;      // REGAL_LOAD_GLX
+//extern ::std::string loadWGL;      // REGAL_LOAD_WGL
+  extern ::std::string loadEGL;      // REGAL_LOAD_EGL
+
   //
 
   extern bool forceES1Profile;
diff --git a/src/regal/RegalContextInfo.cpp b/src/regal/RegalContextInfo.cpp
index cd92617..a9f9732 100644
--- a/src/regal/RegalContextInfo.cpp
+++ b/src/regal/RegalContextInfo.cpp
@@ -687,7 +687,7 @@
   wgl_nv_video_capture(false),
   wgl_nv_video_output(false),
   wgl_oml_sync_control(false),
-#endif
+#endif /* REGAL_SYS_WGL */
 #if REGAL_SYS_GLX
   glx_3dfx_multisample(false),
   glx_amd_gpu_association(false),
@@ -746,7 +746,7 @@
   glx_sgi_video_sync(false),
   glx_sun_get_transparent_index(false),
   glx_sun_video_resize(false),
-#endif
+#endif /* REGAL_SYS_GLX */
 #if REGAL_SYS_EGL
   egl_angle_query_surface_pointer(false),
   egl_angle_surface_d3d_texture_2d_share_handle(false),
@@ -776,7 +776,7 @@
   egl_nv_post_sub_buffer(false),
   egl_nv_sync(false),
   egl_nv_system_time(false),
-#endif
+#endif /* REGAL_SYS_EGL */
 
   gl_max_attrib_stack_depth(0),
   gl_max_client_attrib_stack_depth(0),
@@ -1006,679 +1006,679 @@
   set<string> e;
   e.insert(driverExtensions.begin(),driverExtensions.end());
 
-  gl_3dfx_multisample = stringSetFind(e,"GL_3DFX_multisample");
-  gl_3dfx_tbuffer = stringSetFind(e,"GL_3DFX_tbuffer");
-  gl_3dfx_texture_compression_fxt1 = stringSetFind(e,"GL_3DFX_texture_compression_FXT1");
-  gl_amd_blend_minmax_factor = stringSetFind(e,"GL_AMD_blend_minmax_factor");
-  gl_amd_compressed_3dc_texture = stringSetFind(e,"GL_AMD_compressed_3DC_texture");
-  gl_amd_compressed_atc_texture = stringSetFind(e,"GL_AMD_compressed_ATC_texture");
-  gl_amd_debug_output = stringSetFind(e,"GL_AMD_debug_output");
-  gl_amd_depth_clamp_separate = stringSetFind(e,"GL_AMD_depth_clamp_separate");
-  gl_amd_draw_buffers_blend = stringSetFind(e,"GL_AMD_draw_buffers_blend");
-  gl_amd_interleaved_elements = stringSetFind(e,"GL_AMD_interleaved_elements");
-  gl_amd_multi_draw_indirect = stringSetFind(e,"GL_AMD_multi_draw_indirect");
-  gl_amd_name_gen_delete = stringSetFind(e,"GL_AMD_name_gen_delete");
-  gl_amd_performance_monitor = stringSetFind(e,"GL_AMD_performance_monitor");
-  gl_amd_pinned_memory = stringSetFind(e,"GL_AMD_pinned_memory");
-  gl_amd_program_binary_z400 = stringSetFind(e,"GL_AMD_program_binary_Z400");
-  gl_amd_query_buffer_object = stringSetFind(e,"GL_AMD_query_buffer_object");
-  gl_amd_sample_positions = stringSetFind(e,"GL_AMD_sample_positions");
-  gl_amd_seamless_cubemap_per_texture = stringSetFind(e,"GL_AMD_seamless_cubemap_per_texture");
-  gl_amd_sparse_texture = stringSetFind(e,"GL_AMD_sparse_texture");
-  gl_amd_stencil_operation_extended = stringSetFind(e,"GL_AMD_stencil_operation_extended");
-  gl_amd_vertex_shader_tessellator = stringSetFind(e,"GL_AMD_vertex_shader_tessellator");
-  gl_angle_framebuffer_blit = stringSetFind(e,"GL_ANGLE_framebuffer_blit");
-  gl_angle_framebuffer_multisample = stringSetFind(e,"GL_ANGLE_framebuffer_multisample");
-  gl_angle_instanced_arrays = stringSetFind(e,"GL_ANGLE_instanced_arrays");
-  gl_angle_pack_reverse_row_order = stringSetFind(e,"GL_ANGLE_pack_reverse_row_order");
-  gl_angle_program_binary = stringSetFind(e,"GL_ANGLE_program_binary");
-  gl_angle_texture_compression_dxt1 = stringSetFind(e,"GL_ANGLE_texture_compression_dxt1");
-  gl_angle_texture_compression_dxt3 = stringSetFind(e,"GL_ANGLE_texture_compression_dxt3");
-  gl_angle_texture_compression_dxt5 = stringSetFind(e,"GL_ANGLE_texture_compression_dxt5");
-  gl_angle_texture_usage = stringSetFind(e,"GL_ANGLE_texture_usage");
-  gl_angle_timer_query = stringSetFind(e,"GL_ANGLE_timer_query");
-  gl_angle_translated_shader_source = stringSetFind(e,"GL_ANGLE_translated_shader_source");
-  gl_apple_aux_depth_stencil = stringSetFind(e,"GL_APPLE_aux_depth_stencil");
-  gl_apple_client_storage = stringSetFind(e,"GL_APPLE_client_storage");
-  gl_apple_copy_texture_levels = stringSetFind(e,"GL_APPLE_copy_texture_levels");
-  gl_apple_element_array = stringSetFind(e,"GL_APPLE_element_array");
-  gl_apple_fence = stringSetFind(e,"GL_APPLE_fence");
-  gl_apple_float_pixels = stringSetFind(e,"GL_APPLE_float_pixels");
-  gl_apple_flush_buffer_range = stringSetFind(e,"GL_APPLE_flush_buffer_range");
-  gl_apple_flush_render = stringSetFind(e,"GL_APPLE_flush_render");
-  gl_apple_framebuffer_multisample = stringSetFind(e,"GL_APPLE_framebuffer_multisample");
-  gl_apple_object_purgeable = stringSetFind(e,"GL_APPLE_object_purgeable");
-  gl_apple_pixel_buffer = stringSetFind(e,"GL_APPLE_pixel_buffer");
-  gl_apple_rgb_422 = stringSetFind(e,"GL_APPLE_rgb_422");
-  gl_apple_row_bytes = stringSetFind(e,"GL_APPLE_row_bytes");
-  gl_apple_specular_vector = stringSetFind(e,"GL_APPLE_specular_vector");
-  gl_apple_sync = stringSetFind(e,"GL_APPLE_sync");
-  gl_apple_texture_max_level = stringSetFind(e,"GL_APPLE_texture_max_level");
-  gl_apple_texture_range = stringSetFind(e,"GL_APPLE_texture_range");
-  gl_apple_transform_hint = stringSetFind(e,"GL_APPLE_transform_hint");
-  gl_apple_vertex_array_object = stringSetFind(e,"GL_APPLE_vertex_array_object");
-  gl_apple_vertex_array_range = stringSetFind(e,"GL_APPLE_vertex_array_range");
-  gl_apple_vertex_program_evaluators = stringSetFind(e,"GL_APPLE_vertex_program_evaluators");
-  gl_apple_ycbcr_422 = stringSetFind(e,"GL_APPLE_ycbcr_422");
-  gl_arb_es2_compatibility = stringSetFind(e,"GL_ARB_ES2_compatibility");
-  gl_arb_es3_compatibility = stringSetFind(e,"GL_ARB_ES3_compatibility");
-  gl_arb_base_instance = stringSetFind(e,"GL_ARB_base_instance");
-  gl_arb_bindless_texture = stringSetFind(e,"GL_ARB_bindless_texture");
-  gl_arb_blend_func_extended = stringSetFind(e,"GL_ARB_blend_func_extended");
-  gl_arb_buffer_storage = stringSetFind(e,"GL_ARB_buffer_storage");
-  gl_arb_cl_event = stringSetFind(e,"GL_ARB_cl_event");
-  gl_arb_clear_buffer_object = stringSetFind(e,"GL_ARB_clear_buffer_object");
-  gl_arb_clear_texture = stringSetFind(e,"GL_ARB_clear_texture");
-  gl_arb_color_buffer_float = stringSetFind(e,"GL_ARB_color_buffer_float");
-  gl_arb_compressed_texture_pixel_storage = stringSetFind(e,"GL_ARB_compressed_texture_pixel_storage");
-  gl_arb_compute_shader = stringSetFind(e,"GL_ARB_compute_shader");
-  gl_arb_compute_variable_group_size = stringSetFind(e,"GL_ARB_compute_variable_group_size");
-  gl_arb_copy_buffer = stringSetFind(e,"GL_ARB_copy_buffer");
-  gl_arb_copy_image = stringSetFind(e,"GL_ARB_copy_image");
-  gl_arb_debug_output = stringSetFind(e,"GL_ARB_debug_output");
-  gl_arb_depth_buffer_float = stringSetFind(e,"GL_ARB_depth_buffer_float");
-  gl_arb_depth_clamp = stringSetFind(e,"GL_ARB_depth_clamp");
-  gl_arb_depth_texture = stringSetFind(e,"GL_ARB_depth_texture");
-  gl_arb_draw_buffers = stringSetFind(e,"GL_ARB_draw_buffers");
-  gl_arb_draw_buffers_blend = stringSetFind(e,"GL_ARB_draw_buffers_blend");
-  gl_arb_draw_elements_base_vertex = stringSetFind(e,"GL_ARB_draw_elements_base_vertex");
-  gl_arb_draw_indirect = stringSetFind(e,"GL_ARB_draw_indirect");
-  gl_arb_draw_instanced = stringSetFind(e,"GL_ARB_draw_instanced");
-  gl_arb_enhanced_layouts = stringSetFind(e,"GL_ARB_enhanced_layouts");
-  gl_arb_explicit_uniform_location = stringSetFind(e,"GL_ARB_explicit_uniform_location");
-  gl_arb_fragment_program = stringSetFind(e,"GL_ARB_fragment_program");
-  gl_arb_fragment_shader = stringSetFind(e,"GL_ARB_fragment_shader");
-  gl_arb_framebuffer_no_attachments = stringSetFind(e,"GL_ARB_framebuffer_no_attachments");
-  gl_arb_framebuffer_object = stringSetFind(e,"GL_ARB_framebuffer_object");
-  gl_arb_framebuffer_srgb = stringSetFind(e,"GL_ARB_framebuffer_sRGB");
-  gl_arb_geometry_shader4 = stringSetFind(e,"GL_ARB_geometry_shader4");
-  gl_arb_get_program_binary = stringSetFind(e,"GL_ARB_get_program_binary");
-  gl_arb_gpu_shader5 = stringSetFind(e,"GL_ARB_gpu_shader5");
-  gl_arb_gpu_shader_fp64 = stringSetFind(e,"GL_ARB_gpu_shader_fp64");
-  gl_arb_half_float_pixel = stringSetFind(e,"GL_ARB_half_float_pixel");
-  gl_arb_half_float_vertex = stringSetFind(e,"GL_ARB_half_float_vertex");
-  gl_arb_imaging = stringSetFind(e,"GL_ARB_imaging");
-  gl_arb_indirect_parameters = stringSetFind(e,"GL_ARB_indirect_parameters");
-  gl_arb_instanced_arrays = stringSetFind(e,"GL_ARB_instanced_arrays");
-  gl_arb_internalformat_query = stringSetFind(e,"GL_ARB_internalformat_query");
-  gl_arb_internalformat_query2 = stringSetFind(e,"GL_ARB_internalformat_query2");
-  gl_arb_invalidate_subdata = stringSetFind(e,"GL_ARB_invalidate_subdata");
-  gl_arb_map_buffer_alignment = stringSetFind(e,"GL_ARB_map_buffer_alignment");
-  gl_arb_map_buffer_range = stringSetFind(e,"GL_ARB_map_buffer_range");
-  gl_arb_matrix_palette = stringSetFind(e,"GL_ARB_matrix_palette");
-  gl_arb_multi_bind = stringSetFind(e,"GL_ARB_multi_bind");
-  gl_arb_multi_draw_indirect = stringSetFind(e,"GL_ARB_multi_draw_indirect");
-  gl_arb_multisample = stringSetFind(e,"GL_ARB_multisample");
-  gl_arb_multitexture = stringSetFind(e,"GL_ARB_multitexture");
-  gl_arb_occlusion_query = stringSetFind(e,"GL_ARB_occlusion_query");
-  gl_arb_occlusion_query2 = stringSetFind(e,"GL_ARB_occlusion_query2");
-  gl_arb_pixel_buffer_object = stringSetFind(e,"GL_ARB_pixel_buffer_object");
-  gl_arb_point_parameters = stringSetFind(e,"GL_ARB_point_parameters");
-  gl_arb_point_sprite = stringSetFind(e,"GL_ARB_point_sprite");
-  gl_arb_program_interface_query = stringSetFind(e,"GL_ARB_program_interface_query");
-  gl_arb_provoking_vertex = stringSetFind(e,"GL_ARB_provoking_vertex");
-  gl_arb_query_buffer_object = stringSetFind(e,"GL_ARB_query_buffer_object");
-  gl_arb_robustness = stringSetFind(e,"GL_ARB_robustness");
-  gl_arb_sample_shading = stringSetFind(e,"GL_ARB_sample_shading");
-  gl_arb_sampler_objects = stringSetFind(e,"GL_ARB_sampler_objects");
-  gl_arb_seamless_cube_map = stringSetFind(e,"GL_ARB_seamless_cube_map");
-  gl_arb_separate_shader_objects = stringSetFind(e,"GL_ARB_separate_shader_objects");
-  gl_arb_shader_atomic_counters = stringSetFind(e,"GL_ARB_shader_atomic_counters");
-  gl_arb_shader_image_load_store = stringSetFind(e,"GL_ARB_shader_image_load_store");
-  gl_arb_shader_objects = stringSetFind(e,"GL_ARB_shader_objects");
-  gl_arb_shader_storage_buffer_object = stringSetFind(e,"GL_ARB_shader_storage_buffer_object");
-  gl_arb_shader_subroutine = stringSetFind(e,"GL_ARB_shader_subroutine");
-  gl_arb_shading_language_100 = stringSetFind(e,"GL_ARB_shading_language_100");
-  gl_arb_shading_language_include = stringSetFind(e,"GL_ARB_shading_language_include");
-  gl_arb_shadow = stringSetFind(e,"GL_ARB_shadow");
-  gl_arb_shadow_ambient = stringSetFind(e,"GL_ARB_shadow_ambient");
-  gl_arb_sparse_texture = stringSetFind(e,"GL_ARB_sparse_texture");
-  gl_arb_stencil_texturing = stringSetFind(e,"GL_ARB_stencil_texturing");
-  gl_arb_sync = stringSetFind(e,"GL_ARB_sync");
-  gl_arb_tessellation_shader = stringSetFind(e,"GL_ARB_tessellation_shader");
-  gl_arb_texture_border_clamp = stringSetFind(e,"GL_ARB_texture_border_clamp");
-  gl_arb_texture_buffer_object = stringSetFind(e,"GL_ARB_texture_buffer_object");
-  gl_arb_texture_buffer_range = stringSetFind(e,"GL_ARB_texture_buffer_range");
-  gl_arb_texture_compression = stringSetFind(e,"GL_ARB_texture_compression");
-  gl_arb_texture_compression_bptc = stringSetFind(e,"GL_ARB_texture_compression_bptc");
-  gl_arb_texture_compression_rgtc = stringSetFind(e,"GL_ARB_texture_compression_rgtc");
-  gl_arb_texture_cube_map = stringSetFind(e,"GL_ARB_texture_cube_map");
-  gl_arb_texture_cube_map_array = stringSetFind(e,"GL_ARB_texture_cube_map_array");
-  gl_arb_texture_env_combine = stringSetFind(e,"GL_ARB_texture_env_combine");
-  gl_arb_texture_env_dot3 = stringSetFind(e,"GL_ARB_texture_env_dot3");
-  gl_arb_texture_float = stringSetFind(e,"GL_ARB_texture_float");
-  gl_arb_texture_gather = stringSetFind(e,"GL_ARB_texture_gather");
-  gl_arb_texture_mirror_clamp_to_edge = stringSetFind(e,"GL_ARB_texture_mirror_clamp_to_edge");
-  gl_arb_texture_mirrored_repeat = stringSetFind(e,"GL_ARB_texture_mirrored_repeat");
-  gl_arb_texture_multisample = stringSetFind(e,"GL_ARB_texture_multisample");
-  gl_arb_texture_rectangle = stringSetFind(e,"GL_ARB_texture_rectangle");
-  gl_arb_texture_rg = stringSetFind(e,"GL_ARB_texture_rg");
-  gl_arb_texture_rgb10_a2ui = stringSetFind(e,"GL_ARB_texture_rgb10_a2ui");
-  gl_arb_texture_storage = stringSetFind(e,"GL_ARB_texture_storage");
-  gl_arb_texture_storage_multisample = stringSetFind(e,"GL_ARB_texture_storage_multisample");
-  gl_arb_texture_swizzle = stringSetFind(e,"GL_ARB_texture_swizzle");
-  gl_arb_texture_view = stringSetFind(e,"GL_ARB_texture_view");
-  gl_arb_timer_query = stringSetFind(e,"GL_ARB_timer_query");
-  gl_arb_transform_feedback2 = stringSetFind(e,"GL_ARB_transform_feedback2");
-  gl_arb_transform_feedback3 = stringSetFind(e,"GL_ARB_transform_feedback3");
-  gl_arb_transform_feedback_instanced = stringSetFind(e,"GL_ARB_transform_feedback_instanced");
-  gl_arb_transpose_matrix = stringSetFind(e,"GL_ARB_transpose_matrix");
-  gl_arb_uniform_buffer_object = stringSetFind(e,"GL_ARB_uniform_buffer_object");
-  gl_arb_vertex_array_object = stringSetFind(e,"GL_ARB_vertex_array_object");
-  gl_arb_vertex_attrib_64bit = stringSetFind(e,"GL_ARB_vertex_attrib_64bit");
-  gl_arb_vertex_attrib_binding = stringSetFind(e,"GL_ARB_vertex_attrib_binding");
-  gl_arb_vertex_blend = stringSetFind(e,"GL_ARB_vertex_blend");
-  gl_arb_vertex_buffer_object = stringSetFind(e,"GL_ARB_vertex_buffer_object");
-  gl_arb_vertex_program = stringSetFind(e,"GL_ARB_vertex_program");
-  gl_arb_vertex_shader = stringSetFind(e,"GL_ARB_vertex_shader");
-  gl_arb_vertex_type_2_10_10_10_rev = stringSetFind(e,"GL_ARB_vertex_type_2_10_10_10_rev");
-  gl_arb_viewport_array = stringSetFind(e,"GL_ARB_viewport_array");
-  gl_arb_window_pos = stringSetFind(e,"GL_ARB_window_pos");
-  gl_arm_mali_program_binary = stringSetFind(e,"GL_ARM_mali_program_binary");
-  gl_arm_mali_shader_binary = stringSetFind(e,"GL_ARM_mali_shader_binary");
-  gl_ati_draw_buffers = stringSetFind(e,"GL_ATI_draw_buffers");
-  gl_ati_element_array = stringSetFind(e,"GL_ATI_element_array");
-  gl_ati_envmap_bumpmap = stringSetFind(e,"GL_ATI_envmap_bumpmap");
-  gl_ati_fragment_shader = stringSetFind(e,"GL_ATI_fragment_shader");
-  gl_ati_map_object_buffer = stringSetFind(e,"GL_ATI_map_object_buffer");
-  gl_ati_meminfo = stringSetFind(e,"GL_ATI_meminfo");
-  gl_ati_pn_triangles = stringSetFind(e,"GL_ATI_pn_triangles");
-  gl_ati_separate_stencil = stringSetFind(e,"GL_ATI_separate_stencil");
-  gl_ati_text_fragment_shader = stringSetFind(e,"GL_ATI_text_fragment_shader");
-  gl_ati_texture_compression_3dc = stringSetFind(e,"GL_ATI_texture_compression_3dc");
-  gl_ati_texture_env_combine3 = stringSetFind(e,"GL_ATI_texture_env_combine3");
-  gl_ati_texture_float = stringSetFind(e,"GL_ATI_texture_float");
-  gl_ati_texture_mirror_once = stringSetFind(e,"GL_ATI_texture_mirror_once");
-  gl_ati_vertex_array_object = stringSetFind(e,"GL_ATI_vertex_array_object");
-  gl_ati_vertex_attrib_array_object = stringSetFind(e,"GL_ATI_vertex_attrib_array_object");
-  gl_ati_vertex_streams = stringSetFind(e,"GL_ATI_vertex_streams");
-  gl_dmp_shader_binary = stringSetFind(e,"GL_DMP_shader_binary");
-  gl_ext_422_pixels = stringSetFind(e,"GL_EXT_422_pixels");
-  gl_ext_cg_shader = stringSetFind(e,"GL_EXT_Cg_shader");
-  gl_ext_abgr = stringSetFind(e,"GL_EXT_abgr");
-  gl_ext_bgra = stringSetFind(e,"GL_EXT_bgra");
-  gl_ext_bindable_uniform = stringSetFind(e,"GL_EXT_bindable_uniform");
-  gl_ext_blend_color = stringSetFind(e,"GL_EXT_blend_color");
-  gl_ext_blend_equation_separate = stringSetFind(e,"GL_EXT_blend_equation_separate");
-  gl_ext_blend_func_separate = stringSetFind(e,"GL_EXT_blend_func_separate");
-  gl_ext_blend_minmax = stringSetFind(e,"GL_EXT_blend_minmax");
-  gl_ext_blend_subtract = stringSetFind(e,"GL_EXT_blend_subtract");
-  gl_ext_clip_volume_hint = stringSetFind(e,"GL_EXT_clip_volume_hint");
-  gl_ext_cmyka = stringSetFind(e,"GL_EXT_cmyka");
-  gl_ext_color_buffer_half_float = stringSetFind(e,"GL_EXT_color_buffer_half_float");
-  gl_ext_color_subtable = stringSetFind(e,"GL_EXT_color_subtable");
-  gl_ext_compiled_vertex_array = stringSetFind(e,"GL_EXT_compiled_vertex_array");
-  gl_ext_convolution = stringSetFind(e,"GL_EXT_convolution");
-  gl_ext_coordinate_frame = stringSetFind(e,"GL_EXT_coordinate_frame");
-  gl_ext_copy_texture = stringSetFind(e,"GL_EXT_copy_texture");
-  gl_ext_cull_vertex = stringSetFind(e,"GL_EXT_cull_vertex");
-  gl_ext_debug_label = stringSetFind(e,"GL_EXT_debug_label");
-  gl_ext_debug_marker = stringSetFind(e,"GL_EXT_debug_marker");
-  gl_ext_depth_bounds_test = stringSetFind(e,"GL_EXT_depth_bounds_test");
-  gl_ext_direct_state_access = stringSetFind(e,"GL_EXT_direct_state_access");
-  gl_ext_discard_framebuffer = stringSetFind(e,"GL_EXT_discard_framebuffer");
-  gl_ext_disjoint_timer_query = stringSetFind(e,"GL_EXT_disjoint_timer_query");
-  gl_ext_draw_buffers2 = stringSetFind(e,"GL_EXT_draw_buffers2");
-  gl_ext_draw_instanced = stringSetFind(e,"GL_EXT_draw_instanced");
-  gl_ext_draw_range_elements = stringSetFind(e,"GL_EXT_draw_range_elements");
-  gl_ext_fog_coord = stringSetFind(e,"GL_EXT_fog_coord");
-  gl_ext_fragment_lighting = stringSetFind(e,"GL_EXT_fragment_lighting");
-  gl_ext_framebuffer_blit = stringSetFind(e,"GL_EXT_framebuffer_blit");
-  gl_ext_framebuffer_multisample = stringSetFind(e,"GL_EXT_framebuffer_multisample");
-  gl_ext_framebuffer_multisample_blit_scaled = stringSetFind(e,"GL_EXT_framebuffer_multisample_blit_scaled");
-  gl_ext_framebuffer_object = stringSetFind(e,"GL_EXT_framebuffer_object");
-  gl_ext_framebuffer_srgb = stringSetFind(e,"GL_EXT_framebuffer_sRGB");
-  gl_ext_geometry_shader4 = stringSetFind(e,"GL_EXT_geometry_shader4");
-  gl_ext_gpu_program_parameters = stringSetFind(e,"GL_EXT_gpu_program_parameters");
-  gl_ext_gpu_shader4 = stringSetFind(e,"GL_EXT_gpu_shader4");
-  gl_ext_histogram = stringSetFind(e,"GL_EXT_histogram");
-  gl_ext_index_func = stringSetFind(e,"GL_EXT_index_func");
-  gl_ext_index_material = stringSetFind(e,"GL_EXT_index_material");
-  gl_ext_light_texture = stringSetFind(e,"GL_EXT_light_texture");
-  gl_ext_map_buffer_range = stringSetFind(e,"GL_EXT_map_buffer_range");
-  gl_ext_multi_draw_arrays = stringSetFind(e,"GL_EXT_multi_draw_arrays");
-  gl_ext_multisample = stringSetFind(e,"GL_EXT_multisample");
-  gl_ext_multisampled_render_to_texture = stringSetFind(e,"GL_EXT_multisampled_render_to_texture");
-  gl_ext_multiview_draw_buffers = stringSetFind(e,"GL_EXT_multiview_draw_buffers");
-  gl_ext_occlusion_query_boolean = stringSetFind(e,"GL_EXT_occlusion_query_boolean");
-  gl_ext_packed_depth_stencil = stringSetFind(e,"GL_EXT_packed_depth_stencil");
-  gl_ext_packed_float = stringSetFind(e,"GL_EXT_packed_float");
-  gl_ext_packed_pixels = stringSetFind(e,"GL_EXT_packed_pixels");
-  gl_ext_paletted_texture = stringSetFind(e,"GL_EXT_paletted_texture");
-  gl_ext_pixel_buffer_object = stringSetFind(e,"GL_EXT_pixel_buffer_object");
-  gl_ext_pixel_transform = stringSetFind(e,"GL_EXT_pixel_transform");
-  gl_ext_point_parameters = stringSetFind(e,"GL_EXT_point_parameters");
-  gl_ext_polygon_offset = stringSetFind(e,"GL_EXT_polygon_offset");
-  gl_ext_provoking_vertex = stringSetFind(e,"GL_EXT_provoking_vertex");
-  gl_ext_read_format_bgra = stringSetFind(e,"GL_EXT_read_format_bgra");
-  gl_ext_rescale_normal = stringSetFind(e,"GL_EXT_rescale_normal");
-  gl_ext_robustness = stringSetFind(e,"GL_EXT_robustness");
-  gl_ext_srgb = stringSetFind(e,"GL_EXT_sRGB");
-  gl_ext_scene_marker = stringSetFind(e,"GL_EXT_scene_marker");
-  gl_ext_secondary_color = stringSetFind(e,"GL_EXT_secondary_color");
-  gl_ext_separate_shader_objects = stringSetFind(e,"GL_EXT_separate_shader_objects");
-  gl_ext_separate_specular_color = stringSetFind(e,"GL_EXT_separate_specular_color");
-  gl_ext_shader_framebuffer_fetch = stringSetFind(e,"GL_EXT_shader_framebuffer_fetch");
-  gl_ext_shader_image_load_store = stringSetFind(e,"GL_EXT_shader_image_load_store");
-  gl_ext_shadow_samplers = stringSetFind(e,"GL_EXT_shadow_samplers");
-  gl_ext_shared_texture_palette = stringSetFind(e,"GL_EXT_shared_texture_palette");
-  gl_ext_stencil_clear_tag = stringSetFind(e,"GL_EXT_stencil_clear_tag");
-  gl_ext_stencil_two_side = stringSetFind(e,"GL_EXT_stencil_two_side");
-  gl_ext_stencil_wrap = stringSetFind(e,"GL_EXT_stencil_wrap");
-  gl_ext_subtexture = stringSetFind(e,"GL_EXT_subtexture");
-  gl_ext_texture = stringSetFind(e,"GL_EXT_texture");
-  gl_ext_texture3d = stringSetFind(e,"GL_EXT_texture3D");
-  gl_ext_texture_array = stringSetFind(e,"GL_EXT_texture_array");
-  gl_ext_texture_buffer_object = stringSetFind(e,"GL_EXT_texture_buffer_object");
-  gl_ext_texture_compression_latc = stringSetFind(e,"GL_EXT_texture_compression_latc");
-  gl_ext_texture_compression_rgtc = stringSetFind(e,"GL_EXT_texture_compression_rgtc");
-  gl_ext_texture_compression_s3tc = stringSetFind(e,"GL_EXT_texture_compression_s3tc");
-  gl_ext_texture_cube_map = stringSetFind(e,"GL_EXT_texture_cube_map");
-  gl_ext_texture_edge_clamp = stringSetFind(e,"GL_EXT_texture_edge_clamp");
-  gl_ext_texture_env_combine = stringSetFind(e,"GL_EXT_texture_env_combine");
-  gl_ext_texture_env_dot3 = stringSetFind(e,"GL_EXT_texture_env_dot3");
-  gl_ext_texture_filter_anisotropic = stringSetFind(e,"GL_EXT_texture_filter_anisotropic");
-  gl_ext_texture_format_bgra8888 = stringSetFind(e,"GL_EXT_texture_format_BGRA8888");
-  gl_ext_texture_integer = stringSetFind(e,"GL_EXT_texture_integer");
-  gl_ext_texture_lod_bias = stringSetFind(e,"GL_EXT_texture_lod_bias");
-  gl_ext_texture_mirror_clamp = stringSetFind(e,"GL_EXT_texture_mirror_clamp");
-  gl_ext_texture_object = stringSetFind(e,"GL_EXT_texture_object");
-  gl_ext_texture_perturb_normal = stringSetFind(e,"GL_EXT_texture_perturb_normal");
-  gl_ext_texture_rectangle = stringSetFind(e,"GL_EXT_texture_rectangle");
-  gl_ext_texture_rg = stringSetFind(e,"GL_EXT_texture_rg");
-  gl_ext_texture_srgb = stringSetFind(e,"GL_EXT_texture_sRGB");
-  gl_ext_texture_srgb_decode = stringSetFind(e,"GL_EXT_texture_sRGB_decode");
-  gl_ext_texture_shared_exponent = stringSetFind(e,"GL_EXT_texture_shared_exponent");
-  gl_ext_texture_snorm = stringSetFind(e,"GL_EXT_texture_snorm");
-  gl_ext_texture_storage = stringSetFind(e,"GL_EXT_texture_storage");
-  gl_ext_texture_swizzle = stringSetFind(e,"GL_EXT_texture_swizzle");
-  gl_ext_texture_type_2_10_10_10_rev = stringSetFind(e,"GL_EXT_texture_type_2_10_10_10_REV");
-  gl_ext_timer_query = stringSetFind(e,"GL_EXT_timer_query");
-  gl_ext_transform_feedback = stringSetFind(e,"GL_EXT_transform_feedback");
-  gl_ext_unpack_subimage = stringSetFind(e,"GL_EXT_unpack_subimage");
-  gl_ext_vertex_array = stringSetFind(e,"GL_EXT_vertex_array");
-  gl_ext_vertex_attrib_64bit = stringSetFind(e,"GL_EXT_vertex_attrib_64bit");
-  gl_ext_vertex_shader = stringSetFind(e,"GL_EXT_vertex_shader");
-  gl_ext_vertex_weighting = stringSetFind(e,"GL_EXT_vertex_weighting");
-  gl_ext_x11_sync_object = stringSetFind(e,"GL_EXT_x11_sync_object");
-  gl_fj_shader_binary_gccso = stringSetFind(e,"GL_FJ_shader_binary_GCCSO");
-  gl_gremedy_frame_terminator = stringSetFind(e,"GL_GREMEDY_frame_terminator");
-  gl_gremedy_string_marker = stringSetFind(e,"GL_GREMEDY_string_marker");
-  gl_hp_image_transform = stringSetFind(e,"GL_HP_image_transform");
-  gl_hp_occlusion_test = stringSetFind(e,"GL_HP_occlusion_test");
-  gl_ibm_cull_vertex = stringSetFind(e,"GL_IBM_cull_vertex");
-  gl_ibm_multimode_draw_arrays = stringSetFind(e,"GL_IBM_multimode_draw_arrays");
-  gl_ibm_rasterpos_clip = stringSetFind(e,"GL_IBM_rasterpos_clip");
-  gl_ibm_static_data = stringSetFind(e,"GL_IBM_static_data");
-  gl_ibm_texture_mirrored_repeat = stringSetFind(e,"GL_IBM_texture_mirrored_repeat");
-  gl_ibm_vertex_array_lists = stringSetFind(e,"GL_IBM_vertex_array_lists");
-  gl_img_multisampled_render_to_texture = stringSetFind(e,"GL_IMG_multisampled_render_to_texture");
-  gl_img_program_binary = stringSetFind(e,"GL_IMG_program_binary");
-  gl_img_read_format = stringSetFind(e,"GL_IMG_read_format");
-  gl_img_shader_binary = stringSetFind(e,"GL_IMG_shader_binary");
-  gl_img_texture_compression_pvrtc = stringSetFind(e,"GL_IMG_texture_compression_pvrtc");
-  gl_img_texture_compression_pvrtc2 = stringSetFind(e,"GL_IMG_texture_compression_pvrtc2");
-  gl_img_texture_env_enhanced_fixed_function = stringSetFind(e,"GL_IMG_texture_env_enhanced_fixed_function");
-  gl_img_user_clip_plane = stringSetFind(e,"GL_IMG_user_clip_plane");
-  gl_ingr_blend_func_separate = stringSetFind(e,"GL_INGR_blend_func_separate");
-  gl_ingr_color_clamp = stringSetFind(e,"GL_INGR_color_clamp");
-  gl_ingr_interlace_read = stringSetFind(e,"GL_INGR_interlace_read");
-  gl_intel_map_texture = stringSetFind(e,"GL_INTEL_map_texture");
-  gl_intel_parallel_arrays = stringSetFind(e,"GL_INTEL_parallel_arrays");
-  gl_intel_texture_scissor = stringSetFind(e,"GL_INTEL_texture_scissor");
-  gl_khr_debug = stringSetFind(e,"GL_KHR_debug");
-  gl_khr_texture_compression_astc_ldr = stringSetFind(e,"GL_KHR_texture_compression_astc_ldr");
-  gl_ktx_buffer_region = stringSetFind(e,"GL_KTX_buffer_region");
-  gl_mesax_texture_stack = stringSetFind(e,"GL_MESAX_texture_stack");
-  gl_mesa_pack_invert = stringSetFind(e,"GL_MESA_pack_invert");
-  gl_mesa_resize_buffers = stringSetFind(e,"GL_MESA_resize_buffers");
-  gl_mesa_window_pos = stringSetFind(e,"GL_MESA_window_pos");
-  gl_mesa_ycbcr_texture = stringSetFind(e,"GL_MESA_ycbcr_texture");
-  gl_nvx_conditional_render = stringSetFind(e,"GL_NVX_conditional_render");
-  gl_nvx_gpu_memory_info = stringSetFind(e,"GL_NVX_gpu_memory_info");
-  gl_nv_3dvision_settings = stringSetFind(e,"GL_NV_3dvision_settings");
-  gl_nv_bgr = stringSetFind(e,"GL_NV_bgr");
-  gl_nv_bindless_texture = stringSetFind(e,"GL_NV_bindless_texture");
-  gl_nv_blend_equation_advanced = stringSetFind(e,"GL_NV_blend_equation_advanced");
-  gl_nv_blend_square = stringSetFind(e,"GL_NV_blend_square");
-  gl_nv_compute_program5 = stringSetFind(e,"GL_NV_compute_program5");
-  gl_nv_conditional_render = stringSetFind(e,"GL_NV_conditional_render");
-  gl_nv_copy_buffer = stringSetFind(e,"GL_NV_copy_buffer");
-  gl_nv_copy_depth_to_color = stringSetFind(e,"GL_NV_copy_depth_to_color");
-  gl_nv_copy_image = stringSetFind(e,"GL_NV_copy_image");
-  gl_nv_coverage_sample = stringSetFind(e,"GL_NV_coverage_sample");
-  gl_nv_deep_texture3d = stringSetFind(e,"GL_NV_deep_texture3D");
-  gl_nv_depth_buffer_float = stringSetFind(e,"GL_NV_depth_buffer_float");
-  gl_nv_depth_clamp = stringSetFind(e,"GL_NV_depth_clamp");
-  gl_nv_depth_nonlinear = stringSetFind(e,"GL_NV_depth_nonlinear");
-  gl_nv_depth_range_unclamped = stringSetFind(e,"GL_NV_depth_range_unclamped");
-  gl_nv_draw_buffers = stringSetFind(e,"GL_NV_draw_buffers");
-  gl_nv_draw_texture = stringSetFind(e,"GL_NV_draw_texture");
-  gl_nv_evaluators = stringSetFind(e,"GL_NV_evaluators");
-  gl_nv_explicit_multisample = stringSetFind(e,"GL_NV_explicit_multisample");
-  gl_nv_fbo_color_attachments = stringSetFind(e,"GL_NV_fbo_color_attachments");
-  gl_nv_fence = stringSetFind(e,"GL_NV_fence");
-  gl_nv_float_buffer = stringSetFind(e,"GL_NV_float_buffer");
-  gl_nv_fog_distance = stringSetFind(e,"GL_NV_fog_distance");
-  gl_nv_fragment_program = stringSetFind(e,"GL_NV_fragment_program");
-  gl_nv_fragment_program2 = stringSetFind(e,"GL_NV_fragment_program2");
-  gl_nv_framebuffer_blit = stringSetFind(e,"GL_NV_framebuffer_blit");
-  gl_nv_framebuffer_multisample = stringSetFind(e,"GL_NV_framebuffer_multisample");
-  gl_nv_framebuffer_multisample_coverage = stringSetFind(e,"GL_NV_framebuffer_multisample_coverage");
-  gl_nv_geometry_program4 = stringSetFind(e,"GL_NV_geometry_program4");
-  gl_nv_gpu_program4 = stringSetFind(e,"GL_NV_gpu_program4");
-  gl_nv_gpu_program5 = stringSetFind(e,"GL_NV_gpu_program5");
-  gl_nv_gpu_shader5 = stringSetFind(e,"GL_NV_gpu_shader5");
-  gl_nv_half_float = stringSetFind(e,"GL_NV_half_float");
-  gl_nv_instanced_arrays = stringSetFind(e,"GL_NV_instanced_arrays");
-  gl_nv_light_max_exponent = stringSetFind(e,"GL_NV_light_max_exponent");
-  gl_nv_multisample_coverage = stringSetFind(e,"GL_NV_multisample_coverage");
-  gl_nv_multisample_filter_hint = stringSetFind(e,"GL_NV_multisample_filter_hint");
-  gl_nv_non_square_matrices = stringSetFind(e,"GL_NV_non_square_matrices");
-  gl_nv_occlusion_query = stringSetFind(e,"GL_NV_occlusion_query");
-  gl_nv_pack_subimage = stringSetFind(e,"GL_NV_pack_subimage");
-  gl_nv_packed_depth_stencil = stringSetFind(e,"GL_NV_packed_depth_stencil");
-  gl_nv_packed_float_linear = stringSetFind(e,"GL_NV_packed_float_linear");
-  gl_nv_parameter_buffer_object = stringSetFind(e,"GL_NV_parameter_buffer_object");
-  gl_nv_path_rendering = stringSetFind(e,"GL_NV_path_rendering");
-  gl_nv_pixel_buffer_object = stringSetFind(e,"GL_NV_pixel_buffer_object");
-  gl_nv_pixel_data_range = stringSetFind(e,"GL_NV_pixel_data_range");
-  gl_nv_platform_binary = stringSetFind(e,"GL_NV_platform_binary");
-  gl_nv_point_sprite = stringSetFind(e,"GL_NV_point_sprite");
-  gl_nv_present_video = stringSetFind(e,"GL_NV_present_video");
-  gl_nv_primitive_restart = stringSetFind(e,"GL_NV_primitive_restart");
-  gl_nv_read_buffer = stringSetFind(e,"GL_NV_read_buffer");
-  gl_nv_read_buffer_front = stringSetFind(e,"GL_NV_read_buffer_front");
-  gl_nv_register_combiners = stringSetFind(e,"GL_NV_register_combiners");
-  gl_nv_register_combiners2 = stringSetFind(e,"GL_NV_register_combiners2");
-  gl_nv_srgb_formats = stringSetFind(e,"GL_NV_sRGB_formats");
-  gl_nv_shader_buffer_load = stringSetFind(e,"GL_NV_shader_buffer_load");
-  gl_nv_shadow_samplers_array = stringSetFind(e,"GL_NV_shadow_samplers_array");
-  gl_nv_shadow_samplers_cube = stringSetFind(e,"GL_NV_shadow_samplers_cube");
-  gl_nv_tessellation_program5 = stringSetFind(e,"GL_NV_tessellation_program5");
-  gl_nv_texgen_emboss = stringSetFind(e,"GL_NV_texgen_emboss");
-  gl_nv_texgen_reflection = stringSetFind(e,"GL_NV_texgen_reflection");
-  gl_nv_texture_array = stringSetFind(e,"GL_NV_texture_array");
-  gl_nv_texture_barrier = stringSetFind(e,"GL_NV_texture_barrier");
-  gl_nv_texture_border_clamp = stringSetFind(e,"GL_NV_texture_border_clamp");
-  gl_nv_texture_compression_latc = stringSetFind(e,"GL_NV_texture_compression_latc");
-  gl_nv_texture_compression_s3tc = stringSetFind(e,"GL_NV_texture_compression_s3tc");
-  gl_nv_texture_env_combine4 = stringSetFind(e,"GL_NV_texture_env_combine4");
-  gl_nv_texture_expand_normal = stringSetFind(e,"GL_NV_texture_expand_normal");
-  gl_nv_texture_multisample = stringSetFind(e,"GL_NV_texture_multisample");
-  gl_nv_texture_rectangle = stringSetFind(e,"GL_NV_texture_rectangle");
-  gl_nv_texture_shader = stringSetFind(e,"GL_NV_texture_shader");
-  gl_nv_texture_shader2 = stringSetFind(e,"GL_NV_texture_shader2");
-  gl_nv_texture_shader3 = stringSetFind(e,"GL_NV_texture_shader3");
-  gl_nv_transform_feedback = stringSetFind(e,"GL_NV_transform_feedback");
-  gl_nv_transform_feedback2 = stringSetFind(e,"GL_NV_transform_feedback2");
-  gl_nv_vdpau_interop = stringSetFind(e,"GL_NV_vdpau_interop");
-  gl_nv_vertex_array_range = stringSetFind(e,"GL_NV_vertex_array_range");
-  gl_nv_vertex_array_range2 = stringSetFind(e,"GL_NV_vertex_array_range2");
-  gl_nv_vertex_attrib_integer_64bit = stringSetFind(e,"GL_NV_vertex_attrib_integer_64bit");
-  gl_nv_vertex_buffer_unified_memory = stringSetFind(e,"GL_NV_vertex_buffer_unified_memory");
-  gl_nv_vertex_program = stringSetFind(e,"GL_NV_vertex_program");
-  gl_nv_vertex_program2_option = stringSetFind(e,"GL_NV_vertex_program2_option");
-  gl_nv_vertex_program3 = stringSetFind(e,"GL_NV_vertex_program3");
-  gl_nv_vertex_program4 = stringSetFind(e,"GL_NV_vertex_program4");
-  gl_nv_video_capture = stringSetFind(e,"GL_NV_video_capture");
-  gl_oes_egl_image_external = stringSetFind(e,"GL_OES_EGL_image_external");
-  gl_oes_blend_equation_separate = stringSetFind(e,"GL_OES_blend_equation_separate");
-  gl_oes_blend_func_separate = stringSetFind(e,"GL_OES_blend_func_separate");
-  gl_oes_blend_subtract = stringSetFind(e,"GL_OES_blend_subtract");
-  gl_oes_compressed_etc1_rgb8_texture = stringSetFind(e,"GL_OES_compressed_ETC1_RGB8_texture");
-  gl_oes_compressed_paletted_texture = stringSetFind(e,"GL_OES_compressed_paletted_texture");
-  gl_oes_depth_texture = stringSetFind(e,"GL_OES_depth_texture");
-  gl_oes_draw_texture = stringSetFind(e,"GL_OES_draw_texture");
-  gl_oes_element_index_uint = stringSetFind(e,"GL_OES_element_index_uint");
-  gl_oes_fbo_render_mipmap = stringSetFind(e,"GL_OES_fbo_render_mipmap");
-  gl_oes_framebuffer_object = stringSetFind(e,"GL_OES_framebuffer_object");
-  gl_oes_get_program_binary = stringSetFind(e,"GL_OES_get_program_binary");
-  gl_oes_mapbuffer = stringSetFind(e,"GL_OES_mapbuffer");
-  gl_oes_matrix_get = stringSetFind(e,"GL_OES_matrix_get");
-  gl_oes_matrix_palette = stringSetFind(e,"GL_OES_matrix_palette");
-  gl_oes_packed_depth_stencil = stringSetFind(e,"GL_OES_packed_depth_stencil");
-  gl_oes_point_size_array = stringSetFind(e,"GL_OES_point_size_array");
-  gl_oes_point_sprite = stringSetFind(e,"GL_OES_point_sprite");
-  gl_oes_read_format = stringSetFind(e,"GL_OES_read_format");
-  gl_oes_required_internalformat = stringSetFind(e,"GL_OES_required_internalformat");
-  gl_oes_rgb8_rgba8 = stringSetFind(e,"GL_OES_rgb8_rgba8");
-  gl_oes_single_precision = stringSetFind(e,"GL_OES_single_precision");
-  gl_oes_standard_derivatives = stringSetFind(e,"GL_OES_standard_derivatives");
-  gl_oes_stencil1 = stringSetFind(e,"GL_OES_stencil1");
-  gl_oes_stencil4 = stringSetFind(e,"GL_OES_stencil4");
-  gl_oes_stencil8 = stringSetFind(e,"GL_OES_stencil8");
-  gl_oes_surfaceless_context = stringSetFind(e,"GL_OES_surfaceless_context");
-  gl_oes_texture_3d = stringSetFind(e,"GL_OES_texture_3D");
-  gl_oes_texture_cube_map = stringSetFind(e,"GL_OES_texture_cube_map");
-  gl_oes_texture_mirrored_repeat = stringSetFind(e,"GL_OES_texture_mirrored_repeat");
-  gl_oes_vertex_array_object = stringSetFind(e,"GL_OES_vertex_array_object");
-  gl_oes_vertex_half_float = stringSetFind(e,"GL_OES_vertex_half_float");
-  gl_oes_vertex_type_10_10_10_2 = stringSetFind(e,"GL_OES_vertex_type_10_10_10_2");
-  gl_oml_interlace = stringSetFind(e,"GL_OML_interlace");
-  gl_oml_resample = stringSetFind(e,"GL_OML_resample");
-  gl_oml_subsample = stringSetFind(e,"GL_OML_subsample");
-  gl_pgi_misc_hints = stringSetFind(e,"GL_PGI_misc_hints");
-  gl_pgi_vertex_hints = stringSetFind(e,"GL_PGI_vertex_hints");
-  gl_qcom_alpha_test = stringSetFind(e,"GL_QCOM_alpha_test");
-  gl_qcom_binning_control = stringSetFind(e,"GL_QCOM_binning_control");
-  gl_qcom_driver_control = stringSetFind(e,"GL_QCOM_driver_control");
-  gl_qcom_extended_get = stringSetFind(e,"GL_QCOM_extended_get");
-  gl_qcom_extended_get2 = stringSetFind(e,"GL_QCOM_extended_get2");
-  gl_qcom_perfmon_global_mode = stringSetFind(e,"GL_QCOM_perfmon_global_mode");
-  gl_qcom_tiled_rendering = stringSetFind(e,"GL_QCOM_tiled_rendering");
-  gl_qcom_writeonly_rendering = stringSetFind(e,"GL_QCOM_writeonly_rendering");
-  gl_regal_es1_0_compatibility = stringSetFind(e,"GL_REGAL_ES1_0_compatibility");
-  gl_regal_es1_1_compatibility = stringSetFind(e,"GL_REGAL_ES1_1_compatibility");
-  gl_regal_enable = stringSetFind(e,"GL_REGAL_enable");
-  gl_regal_error_string = stringSetFind(e,"GL_REGAL_error_string");
-  gl_regal_extension_query = stringSetFind(e,"GL_REGAL_extension_query");
-  gl_regal_log = stringSetFind(e,"GL_REGAL_log");
-  gl_rend_screen_coordinates = stringSetFind(e,"GL_REND_screen_coordinates");
-  gl_s3_s3tc = stringSetFind(e,"GL_S3_s3tc");
-  gl_sgis_color_range = stringSetFind(e,"GL_SGIS_color_range");
-  gl_sgis_detail_texture = stringSetFind(e,"GL_SGIS_detail_texture");
-  gl_sgis_fog_function = stringSetFind(e,"GL_SGIS_fog_function");
-  gl_sgis_generate_mipmap = stringSetFind(e,"GL_SGIS_generate_mipmap");
-  gl_sgis_multisample = stringSetFind(e,"GL_SGIS_multisample");
-  gl_sgis_pixel_texture = stringSetFind(e,"GL_SGIS_pixel_texture");
-  gl_sgis_point_line_texgen = stringSetFind(e,"GL_SGIS_point_line_texgen");
-  gl_sgis_point_parameters = stringSetFind(e,"GL_SGIS_point_parameters");
-  gl_sgis_sharpen_texture = stringSetFind(e,"GL_SGIS_sharpen_texture");
-  gl_sgis_texture4d = stringSetFind(e,"GL_SGIS_texture4D");
-  gl_sgis_texture_border_clamp = stringSetFind(e,"GL_SGIS_texture_border_clamp");
-  gl_sgis_texture_color_mask = stringSetFind(e,"GL_SGIS_texture_color_mask");
-  gl_sgis_texture_edge_clamp = stringSetFind(e,"GL_SGIS_texture_edge_clamp");
-  gl_sgis_texture_filter4 = stringSetFind(e,"GL_SGIS_texture_filter4");
-  gl_sgis_texture_lod = stringSetFind(e,"GL_SGIS_texture_lod");
-  gl_sgix_async = stringSetFind(e,"GL_SGIX_async");
-  gl_sgix_async_histogram = stringSetFind(e,"GL_SGIX_async_histogram");
-  gl_sgix_async_pixel = stringSetFind(e,"GL_SGIX_async_pixel");
-  gl_sgix_blend_alpha_minmax = stringSetFind(e,"GL_SGIX_blend_alpha_minmax");
-  gl_sgix_convolution_accuracy = stringSetFind(e,"GL_SGIX_convolution_accuracy");
-  gl_sgix_depth_texture = stringSetFind(e,"GL_SGIX_depth_texture");
-  gl_sgix_flush_raster = stringSetFind(e,"GL_SGIX_flush_raster");
-  gl_sgix_fog_offset = stringSetFind(e,"GL_SGIX_fog_offset");
-  gl_sgix_fog_texture = stringSetFind(e,"GL_SGIX_fog_texture");
-  gl_sgix_fragment_lighting = stringSetFind(e,"GL_SGIX_fragment_lighting");
-  gl_sgix_fragment_specular_lighting = stringSetFind(e,"GL_SGIX_fragment_specular_lighting");
-  gl_sgix_framezoom = stringSetFind(e,"GL_SGIX_framezoom");
-  gl_sgix_igloo_interface = stringSetFind(e,"GL_SGIX_igloo_interface");
-  gl_sgix_instruments = stringSetFind(e,"GL_SGIX_instruments");
-  gl_sgix_interlace = stringSetFind(e,"GL_SGIX_interlace");
-  gl_sgix_list_priority = stringSetFind(e,"GL_SGIX_list_priority");
-  gl_sgix_pixel_texture = stringSetFind(e,"GL_SGIX_pixel_texture");
-  gl_sgix_polynomial_ffd = stringSetFind(e,"GL_SGIX_polynomial_ffd");
-  gl_sgix_reference_plane = stringSetFind(e,"GL_SGIX_reference_plane");
-  gl_sgix_resample = stringSetFind(e,"GL_SGIX_resample");
-  gl_sgix_shadow = stringSetFind(e,"GL_SGIX_shadow");
-  gl_sgix_shadow_ambient = stringSetFind(e,"GL_SGIX_shadow_ambient");
-  gl_sgix_sprite = stringSetFind(e,"GL_SGIX_sprite");
-  gl_sgix_tag_sample_buffer = stringSetFind(e,"GL_SGIX_tag_sample_buffer");
-  gl_sgix_texture_coordinate_clamp = stringSetFind(e,"GL_SGIX_texture_coordinate_clamp");
-  gl_sgix_texture_multi_buffer = stringSetFind(e,"GL_SGIX_texture_multi_buffer");
-  gl_sgix_texture_range = stringSetFind(e,"GL_SGIX_texture_range");
-  gl_sgix_texture_scale_bias = stringSetFind(e,"GL_SGIX_texture_scale_bias");
-  gl_sgix_vertex_preclip_hint = stringSetFind(e,"GL_SGIX_vertex_preclip_hint");
-  gl_sgix_ycrcb = stringSetFind(e,"GL_SGIX_ycrcb");
-  gl_sgi_color_matrix = stringSetFind(e,"GL_SGI_color_matrix");
-  gl_sgi_color_table = stringSetFind(e,"GL_SGI_color_table");
-  gl_sgi_texture_color_table = stringSetFind(e,"GL_SGI_texture_color_table");
-  gl_sunx_constant_data = stringSetFind(e,"GL_SUNX_constant_data");
-  gl_sun_convolution_border_modes = stringSetFind(e,"GL_SUN_convolution_border_modes");
-  gl_sun_global_alpha = stringSetFind(e,"GL_SUN_global_alpha");
-  gl_sun_mesh_array = stringSetFind(e,"GL_SUN_mesh_array");
-  gl_sun_read_video_pixels = stringSetFind(e,"GL_SUN_read_video_pixels");
-  gl_sun_slice_accum = stringSetFind(e,"GL_SUN_slice_accum");
-  gl_sun_triangle_list = stringSetFind(e,"GL_SUN_triangle_list");
-  gl_sun_vertex = stringSetFind(e,"GL_SUN_vertex");
-  gl_viv_shader_binary = stringSetFind(e,"GL_VIV_shader_binary");
-  gl_win_phong_shading = stringSetFind(e,"GL_WIN_phong_shading");
-  gl_win_specular_fog = stringSetFind(e,"GL_WIN_specular_fog");
-  gl_win_swap_hint = stringSetFind(e,"GL_WIN_swap_hint");
+  gl_3dfx_multisample                                = stringSetFind(e,"GL_3DFX_multisample");
+  gl_3dfx_tbuffer                                    = stringSetFind(e,"GL_3DFX_tbuffer");
+  gl_3dfx_texture_compression_fxt1                   = stringSetFind(e,"GL_3DFX_texture_compression_FXT1");
+  gl_amd_blend_minmax_factor                         = stringSetFind(e,"GL_AMD_blend_minmax_factor");
+  gl_amd_compressed_3dc_texture                      = stringSetFind(e,"GL_AMD_compressed_3DC_texture");
+  gl_amd_compressed_atc_texture                      = stringSetFind(e,"GL_AMD_compressed_ATC_texture");
+  gl_amd_debug_output                                = stringSetFind(e,"GL_AMD_debug_output");
+  gl_amd_depth_clamp_separate                        = stringSetFind(e,"GL_AMD_depth_clamp_separate");
+  gl_amd_draw_buffers_blend                          = stringSetFind(e,"GL_AMD_draw_buffers_blend");
+  gl_amd_interleaved_elements                        = stringSetFind(e,"GL_AMD_interleaved_elements");
+  gl_amd_multi_draw_indirect                         = stringSetFind(e,"GL_AMD_multi_draw_indirect");
+  gl_amd_name_gen_delete                             = stringSetFind(e,"GL_AMD_name_gen_delete");
+  gl_amd_performance_monitor                         = stringSetFind(e,"GL_AMD_performance_monitor");
+  gl_amd_pinned_memory                               = stringSetFind(e,"GL_AMD_pinned_memory");
+  gl_amd_program_binary_z400                         = stringSetFind(e,"GL_AMD_program_binary_Z400");
+  gl_amd_query_buffer_object                         = stringSetFind(e,"GL_AMD_query_buffer_object");
+  gl_amd_sample_positions                            = stringSetFind(e,"GL_AMD_sample_positions");
+  gl_amd_seamless_cubemap_per_texture                = stringSetFind(e,"GL_AMD_seamless_cubemap_per_texture");
+  gl_amd_sparse_texture                              = stringSetFind(e,"GL_AMD_sparse_texture");
+  gl_amd_stencil_operation_extended                  = stringSetFind(e,"GL_AMD_stencil_operation_extended");
+  gl_amd_vertex_shader_tessellator                   = stringSetFind(e,"GL_AMD_vertex_shader_tessellator");
+  gl_angle_framebuffer_blit                          = stringSetFind(e,"GL_ANGLE_framebuffer_blit");
+  gl_angle_framebuffer_multisample                   = stringSetFind(e,"GL_ANGLE_framebuffer_multisample");
+  gl_angle_instanced_arrays                          = stringSetFind(e,"GL_ANGLE_instanced_arrays");
+  gl_angle_pack_reverse_row_order                    = stringSetFind(e,"GL_ANGLE_pack_reverse_row_order");
+  gl_angle_program_binary                            = stringSetFind(e,"GL_ANGLE_program_binary");
+  gl_angle_texture_compression_dxt1                  = stringSetFind(e,"GL_ANGLE_texture_compression_dxt1");
+  gl_angle_texture_compression_dxt3                  = stringSetFind(e,"GL_ANGLE_texture_compression_dxt3");
+  gl_angle_texture_compression_dxt5                  = stringSetFind(e,"GL_ANGLE_texture_compression_dxt5");
+  gl_angle_texture_usage                             = stringSetFind(e,"GL_ANGLE_texture_usage");
+  gl_angle_timer_query                               = stringSetFind(e,"GL_ANGLE_timer_query");
+  gl_angle_translated_shader_source                  = stringSetFind(e,"GL_ANGLE_translated_shader_source");
+  gl_apple_aux_depth_stencil                         = stringSetFind(e,"GL_APPLE_aux_depth_stencil");
+  gl_apple_client_storage                            = stringSetFind(e,"GL_APPLE_client_storage");
+  gl_apple_copy_texture_levels                       = stringSetFind(e,"GL_APPLE_copy_texture_levels");
+  gl_apple_element_array                             = stringSetFind(e,"GL_APPLE_element_array");
+  gl_apple_fence                                     = stringSetFind(e,"GL_APPLE_fence");
+  gl_apple_float_pixels                              = stringSetFind(e,"GL_APPLE_float_pixels");
+  gl_apple_flush_buffer_range                        = stringSetFind(e,"GL_APPLE_flush_buffer_range");
+  gl_apple_flush_render                              = stringSetFind(e,"GL_APPLE_flush_render");
+  gl_apple_framebuffer_multisample                   = stringSetFind(e,"GL_APPLE_framebuffer_multisample");
+  gl_apple_object_purgeable                          = stringSetFind(e,"GL_APPLE_object_purgeable");
+  gl_apple_pixel_buffer                              = stringSetFind(e,"GL_APPLE_pixel_buffer");
+  gl_apple_rgb_422                                   = stringSetFind(e,"GL_APPLE_rgb_422");
+  gl_apple_row_bytes                                 = stringSetFind(e,"GL_APPLE_row_bytes");
+  gl_apple_specular_vector                           = stringSetFind(e,"GL_APPLE_specular_vector");
+  gl_apple_sync                                      = stringSetFind(e,"GL_APPLE_sync");
+  gl_apple_texture_max_level                         = stringSetFind(e,"GL_APPLE_texture_max_level");
+  gl_apple_texture_range                             = stringSetFind(e,"GL_APPLE_texture_range");
+  gl_apple_transform_hint                            = stringSetFind(e,"GL_APPLE_transform_hint");
+  gl_apple_vertex_array_object                       = stringSetFind(e,"GL_APPLE_vertex_array_object");
+  gl_apple_vertex_array_range                        = stringSetFind(e,"GL_APPLE_vertex_array_range");
+  gl_apple_vertex_program_evaluators                 = stringSetFind(e,"GL_APPLE_vertex_program_evaluators");
+  gl_apple_ycbcr_422                                 = stringSetFind(e,"GL_APPLE_ycbcr_422");
+  gl_arb_es2_compatibility                           = stringSetFind(e,"GL_ARB_ES2_compatibility");
+  gl_arb_es3_compatibility                           = stringSetFind(e,"GL_ARB_ES3_compatibility");
+  gl_arb_base_instance                               = stringSetFind(e,"GL_ARB_base_instance");
+  gl_arb_bindless_texture                            = stringSetFind(e,"GL_ARB_bindless_texture");
+  gl_arb_blend_func_extended                         = stringSetFind(e,"GL_ARB_blend_func_extended");
+  gl_arb_buffer_storage                              = stringSetFind(e,"GL_ARB_buffer_storage");
+  gl_arb_cl_event                                    = stringSetFind(e,"GL_ARB_cl_event");
+  gl_arb_clear_buffer_object                         = stringSetFind(e,"GL_ARB_clear_buffer_object");
+  gl_arb_clear_texture                               = stringSetFind(e,"GL_ARB_clear_texture");
+  gl_arb_color_buffer_float                          = stringSetFind(e,"GL_ARB_color_buffer_float");
+  gl_arb_compressed_texture_pixel_storage            = stringSetFind(e,"GL_ARB_compressed_texture_pixel_storage");
+  gl_arb_compute_shader                              = stringSetFind(e,"GL_ARB_compute_shader");
+  gl_arb_compute_variable_group_size                 = stringSetFind(e,"GL_ARB_compute_variable_group_size");
+  gl_arb_copy_buffer                                 = stringSetFind(e,"GL_ARB_copy_buffer");
+  gl_arb_copy_image                                  = stringSetFind(e,"GL_ARB_copy_image");
+  gl_arb_debug_output                                = stringSetFind(e,"GL_ARB_debug_output");
+  gl_arb_depth_buffer_float                          = stringSetFind(e,"GL_ARB_depth_buffer_float");
+  gl_arb_depth_clamp                                 = stringSetFind(e,"GL_ARB_depth_clamp");
+  gl_arb_depth_texture                               = stringSetFind(e,"GL_ARB_depth_texture");
+  gl_arb_draw_buffers                                = stringSetFind(e,"GL_ARB_draw_buffers");
+  gl_arb_draw_buffers_blend                          = stringSetFind(e,"GL_ARB_draw_buffers_blend");
+  gl_arb_draw_elements_base_vertex                   = stringSetFind(e,"GL_ARB_draw_elements_base_vertex");
+  gl_arb_draw_indirect                               = stringSetFind(e,"GL_ARB_draw_indirect");
+  gl_arb_draw_instanced                              = stringSetFind(e,"GL_ARB_draw_instanced");
+  gl_arb_enhanced_layouts                            = stringSetFind(e,"GL_ARB_enhanced_layouts");
+  gl_arb_explicit_uniform_location                   = stringSetFind(e,"GL_ARB_explicit_uniform_location");
+  gl_arb_fragment_program                            = stringSetFind(e,"GL_ARB_fragment_program");
+  gl_arb_fragment_shader                             = stringSetFind(e,"GL_ARB_fragment_shader");
+  gl_arb_framebuffer_no_attachments                  = stringSetFind(e,"GL_ARB_framebuffer_no_attachments");
+  gl_arb_framebuffer_object                          = stringSetFind(e,"GL_ARB_framebuffer_object");
+  gl_arb_framebuffer_srgb                            = stringSetFind(e,"GL_ARB_framebuffer_sRGB");
+  gl_arb_geometry_shader4                            = stringSetFind(e,"GL_ARB_geometry_shader4");
+  gl_arb_get_program_binary                          = stringSetFind(e,"GL_ARB_get_program_binary");
+  gl_arb_gpu_shader5                                 = stringSetFind(e,"GL_ARB_gpu_shader5");
+  gl_arb_gpu_shader_fp64                             = stringSetFind(e,"GL_ARB_gpu_shader_fp64");
+  gl_arb_half_float_pixel                            = stringSetFind(e,"GL_ARB_half_float_pixel");
+  gl_arb_half_float_vertex                           = stringSetFind(e,"GL_ARB_half_float_vertex");
+  gl_arb_imaging                                     = stringSetFind(e,"GL_ARB_imaging");
+  gl_arb_indirect_parameters                         = stringSetFind(e,"GL_ARB_indirect_parameters");
+  gl_arb_instanced_arrays                            = stringSetFind(e,"GL_ARB_instanced_arrays");
+  gl_arb_internalformat_query                        = stringSetFind(e,"GL_ARB_internalformat_query");
+  gl_arb_internalformat_query2                       = stringSetFind(e,"GL_ARB_internalformat_query2");
+  gl_arb_invalidate_subdata                          = stringSetFind(e,"GL_ARB_invalidate_subdata");
+  gl_arb_map_buffer_alignment                        = stringSetFind(e,"GL_ARB_map_buffer_alignment");
+  gl_arb_map_buffer_range                            = stringSetFind(e,"GL_ARB_map_buffer_range");
+  gl_arb_matrix_palette                              = stringSetFind(e,"GL_ARB_matrix_palette");
+  gl_arb_multi_bind                                  = stringSetFind(e,"GL_ARB_multi_bind");
+  gl_arb_multi_draw_indirect                         = stringSetFind(e,"GL_ARB_multi_draw_indirect");
+  gl_arb_multisample                                 = stringSetFind(e,"GL_ARB_multisample");
+  gl_arb_multitexture                                = stringSetFind(e,"GL_ARB_multitexture");
+  gl_arb_occlusion_query                             = stringSetFind(e,"GL_ARB_occlusion_query");
+  gl_arb_occlusion_query2                            = stringSetFind(e,"GL_ARB_occlusion_query2");
+  gl_arb_pixel_buffer_object                         = stringSetFind(e,"GL_ARB_pixel_buffer_object");
+  gl_arb_point_parameters                            = stringSetFind(e,"GL_ARB_point_parameters");
+  gl_arb_point_sprite                                = stringSetFind(e,"GL_ARB_point_sprite");
+  gl_arb_program_interface_query                     = stringSetFind(e,"GL_ARB_program_interface_query");
+  gl_arb_provoking_vertex                            = stringSetFind(e,"GL_ARB_provoking_vertex");
+  gl_arb_query_buffer_object                         = stringSetFind(e,"GL_ARB_query_buffer_object");
+  gl_arb_robustness                                  = stringSetFind(e,"GL_ARB_robustness");
+  gl_arb_sample_shading                              = stringSetFind(e,"GL_ARB_sample_shading");
+  gl_arb_sampler_objects                             = stringSetFind(e,"GL_ARB_sampler_objects");
+  gl_arb_seamless_cube_map                           = stringSetFind(e,"GL_ARB_seamless_cube_map");
+  gl_arb_separate_shader_objects                     = stringSetFind(e,"GL_ARB_separate_shader_objects");
+  gl_arb_shader_atomic_counters                      = stringSetFind(e,"GL_ARB_shader_atomic_counters");
+  gl_arb_shader_image_load_store                     = stringSetFind(e,"GL_ARB_shader_image_load_store");
+  gl_arb_shader_objects                              = stringSetFind(e,"GL_ARB_shader_objects");
+  gl_arb_shader_storage_buffer_object                = stringSetFind(e,"GL_ARB_shader_storage_buffer_object");
+  gl_arb_shader_subroutine                           = stringSetFind(e,"GL_ARB_shader_subroutine");
+  gl_arb_shading_language_100                        = stringSetFind(e,"GL_ARB_shading_language_100");
+  gl_arb_shading_language_include                    = stringSetFind(e,"GL_ARB_shading_language_include");
+  gl_arb_shadow                                      = stringSetFind(e,"GL_ARB_shadow");
+  gl_arb_shadow_ambient                              = stringSetFind(e,"GL_ARB_shadow_ambient");
+  gl_arb_sparse_texture                              = stringSetFind(e,"GL_ARB_sparse_texture");
+  gl_arb_stencil_texturing                           = stringSetFind(e,"GL_ARB_stencil_texturing");
+  gl_arb_sync                                        = stringSetFind(e,"GL_ARB_sync");
+  gl_arb_tessellation_shader                         = stringSetFind(e,"GL_ARB_tessellation_shader");
+  gl_arb_texture_border_clamp                        = stringSetFind(e,"GL_ARB_texture_border_clamp");
+  gl_arb_texture_buffer_object                       = stringSetFind(e,"GL_ARB_texture_buffer_object");
+  gl_arb_texture_buffer_range                        = stringSetFind(e,"GL_ARB_texture_buffer_range");
+  gl_arb_texture_compression                         = stringSetFind(e,"GL_ARB_texture_compression");
+  gl_arb_texture_compression_bptc                    = stringSetFind(e,"GL_ARB_texture_compression_bptc");
+  gl_arb_texture_compression_rgtc                    = stringSetFind(e,"GL_ARB_texture_compression_rgtc");
+  gl_arb_texture_cube_map                            = stringSetFind(e,"GL_ARB_texture_cube_map");
+  gl_arb_texture_cube_map_array                      = stringSetFind(e,"GL_ARB_texture_cube_map_array");
+  gl_arb_texture_env_combine                         = stringSetFind(e,"GL_ARB_texture_env_combine");
+  gl_arb_texture_env_dot3                            = stringSetFind(e,"GL_ARB_texture_env_dot3");
+  gl_arb_texture_float                               = stringSetFind(e,"GL_ARB_texture_float");
+  gl_arb_texture_gather                              = stringSetFind(e,"GL_ARB_texture_gather");
+  gl_arb_texture_mirror_clamp_to_edge                = stringSetFind(e,"GL_ARB_texture_mirror_clamp_to_edge");
+  gl_arb_texture_mirrored_repeat                     = stringSetFind(e,"GL_ARB_texture_mirrored_repeat");
+  gl_arb_texture_multisample                         = stringSetFind(e,"GL_ARB_texture_multisample");
+  gl_arb_texture_rectangle                           = stringSetFind(e,"GL_ARB_texture_rectangle");
+  gl_arb_texture_rg                                  = stringSetFind(e,"GL_ARB_texture_rg");
+  gl_arb_texture_rgb10_a2ui                          = stringSetFind(e,"GL_ARB_texture_rgb10_a2ui");
+  gl_arb_texture_storage                             = stringSetFind(e,"GL_ARB_texture_storage");
+  gl_arb_texture_storage_multisample                 = stringSetFind(e,"GL_ARB_texture_storage_multisample");
+  gl_arb_texture_swizzle                             = stringSetFind(e,"GL_ARB_texture_swizzle");
+  gl_arb_texture_view                                = stringSetFind(e,"GL_ARB_texture_view");
+  gl_arb_timer_query                                 = stringSetFind(e,"GL_ARB_timer_query");
+  gl_arb_transform_feedback2                         = stringSetFind(e,"GL_ARB_transform_feedback2");
+  gl_arb_transform_feedback3                         = stringSetFind(e,"GL_ARB_transform_feedback3");
+  gl_arb_transform_feedback_instanced                = stringSetFind(e,"GL_ARB_transform_feedback_instanced");
+  gl_arb_transpose_matrix                            = stringSetFind(e,"GL_ARB_transpose_matrix");
+  gl_arb_uniform_buffer_object                       = stringSetFind(e,"GL_ARB_uniform_buffer_object");
+  gl_arb_vertex_array_object                         = stringSetFind(e,"GL_ARB_vertex_array_object");
+  gl_arb_vertex_attrib_64bit                         = stringSetFind(e,"GL_ARB_vertex_attrib_64bit");
+  gl_arb_vertex_attrib_binding                       = stringSetFind(e,"GL_ARB_vertex_attrib_binding");
+  gl_arb_vertex_blend                                = stringSetFind(e,"GL_ARB_vertex_blend");
+  gl_arb_vertex_buffer_object                        = stringSetFind(e,"GL_ARB_vertex_buffer_object");
+  gl_arb_vertex_program                              = stringSetFind(e,"GL_ARB_vertex_program");
+  gl_arb_vertex_shader                               = stringSetFind(e,"GL_ARB_vertex_shader");
+  gl_arb_vertex_type_2_10_10_10_rev                  = stringSetFind(e,"GL_ARB_vertex_type_2_10_10_10_rev");
+  gl_arb_viewport_array                              = stringSetFind(e,"GL_ARB_viewport_array");
+  gl_arb_window_pos                                  = stringSetFind(e,"GL_ARB_window_pos");
+  gl_arm_mali_program_binary                         = stringSetFind(e,"GL_ARM_mali_program_binary");
+  gl_arm_mali_shader_binary                          = stringSetFind(e,"GL_ARM_mali_shader_binary");
+  gl_ati_draw_buffers                                = stringSetFind(e,"GL_ATI_draw_buffers");
+  gl_ati_element_array                               = stringSetFind(e,"GL_ATI_element_array");
+  gl_ati_envmap_bumpmap                              = stringSetFind(e,"GL_ATI_envmap_bumpmap");
+  gl_ati_fragment_shader                             = stringSetFind(e,"GL_ATI_fragment_shader");
+  gl_ati_map_object_buffer                           = stringSetFind(e,"GL_ATI_map_object_buffer");
+  gl_ati_meminfo                                     = stringSetFind(e,"GL_ATI_meminfo");
+  gl_ati_pn_triangles                                = stringSetFind(e,"GL_ATI_pn_triangles");
+  gl_ati_separate_stencil                            = stringSetFind(e,"GL_ATI_separate_stencil");
+  gl_ati_text_fragment_shader                        = stringSetFind(e,"GL_ATI_text_fragment_shader");
+  gl_ati_texture_compression_3dc                     = stringSetFind(e,"GL_ATI_texture_compression_3dc");
+  gl_ati_texture_env_combine3                        = stringSetFind(e,"GL_ATI_texture_env_combine3");
+  gl_ati_texture_float                               = stringSetFind(e,"GL_ATI_texture_float");
+  gl_ati_texture_mirror_once                         = stringSetFind(e,"GL_ATI_texture_mirror_once");
+  gl_ati_vertex_array_object                         = stringSetFind(e,"GL_ATI_vertex_array_object");
+  gl_ati_vertex_attrib_array_object                  = stringSetFind(e,"GL_ATI_vertex_attrib_array_object");
+  gl_ati_vertex_streams                              = stringSetFind(e,"GL_ATI_vertex_streams");
+  gl_dmp_shader_binary                               = stringSetFind(e,"GL_DMP_shader_binary");
+  gl_ext_422_pixels                                  = stringSetFind(e,"GL_EXT_422_pixels");
+  gl_ext_cg_shader                                   = stringSetFind(e,"GL_EXT_Cg_shader");
+  gl_ext_abgr                                        = stringSetFind(e,"GL_EXT_abgr");
+  gl_ext_bgra                                        = stringSetFind(e,"GL_EXT_bgra");
+  gl_ext_bindable_uniform                            = stringSetFind(e,"GL_EXT_bindable_uniform");
+  gl_ext_blend_color                                 = stringSetFind(e,"GL_EXT_blend_color");
+  gl_ext_blend_equation_separate                     = stringSetFind(e,"GL_EXT_blend_equation_separate");
+  gl_ext_blend_func_separate                         = stringSetFind(e,"GL_EXT_blend_func_separate");
+  gl_ext_blend_minmax                                = stringSetFind(e,"GL_EXT_blend_minmax");
+  gl_ext_blend_subtract                              = stringSetFind(e,"GL_EXT_blend_subtract");
+  gl_ext_clip_volume_hint                            = stringSetFind(e,"GL_EXT_clip_volume_hint");
+  gl_ext_cmyka                                       = stringSetFind(e,"GL_EXT_cmyka");
+  gl_ext_color_buffer_half_float                     = stringSetFind(e,"GL_EXT_color_buffer_half_float");
+  gl_ext_color_subtable                              = stringSetFind(e,"GL_EXT_color_subtable");
+  gl_ext_compiled_vertex_array                       = stringSetFind(e,"GL_EXT_compiled_vertex_array");
+  gl_ext_convolution                                 = stringSetFind(e,"GL_EXT_convolution");
+  gl_ext_coordinate_frame                            = stringSetFind(e,"GL_EXT_coordinate_frame");
+  gl_ext_copy_texture                                = stringSetFind(e,"GL_EXT_copy_texture");
+  gl_ext_cull_vertex                                 = stringSetFind(e,"GL_EXT_cull_vertex");
+  gl_ext_debug_label                                 = stringSetFind(e,"GL_EXT_debug_label");
+  gl_ext_debug_marker                                = stringSetFind(e,"GL_EXT_debug_marker");
+  gl_ext_depth_bounds_test                           = stringSetFind(e,"GL_EXT_depth_bounds_test");
+  gl_ext_direct_state_access                         = stringSetFind(e,"GL_EXT_direct_state_access");
+  gl_ext_discard_framebuffer                         = stringSetFind(e,"GL_EXT_discard_framebuffer");
+  gl_ext_disjoint_timer_query                        = stringSetFind(e,"GL_EXT_disjoint_timer_query");
+  gl_ext_draw_buffers2                               = stringSetFind(e,"GL_EXT_draw_buffers2");
+  gl_ext_draw_instanced                              = stringSetFind(e,"GL_EXT_draw_instanced");
+  gl_ext_draw_range_elements                         = stringSetFind(e,"GL_EXT_draw_range_elements");
+  gl_ext_fog_coord                                   = stringSetFind(e,"GL_EXT_fog_coord");
+  gl_ext_fragment_lighting                           = stringSetFind(e,"GL_EXT_fragment_lighting");
+  gl_ext_framebuffer_blit                            = stringSetFind(e,"GL_EXT_framebuffer_blit");
+  gl_ext_framebuffer_multisample                     = stringSetFind(e,"GL_EXT_framebuffer_multisample");
+  gl_ext_framebuffer_multisample_blit_scaled         = stringSetFind(e,"GL_EXT_framebuffer_multisample_blit_scaled");
+  gl_ext_framebuffer_object                          = stringSetFind(e,"GL_EXT_framebuffer_object");
+  gl_ext_framebuffer_srgb                            = stringSetFind(e,"GL_EXT_framebuffer_sRGB");
+  gl_ext_geometry_shader4                            = stringSetFind(e,"GL_EXT_geometry_shader4");
+  gl_ext_gpu_program_parameters                      = stringSetFind(e,"GL_EXT_gpu_program_parameters");
+  gl_ext_gpu_shader4                                 = stringSetFind(e,"GL_EXT_gpu_shader4");
+  gl_ext_histogram                                   = stringSetFind(e,"GL_EXT_histogram");
+  gl_ext_index_func                                  = stringSetFind(e,"GL_EXT_index_func");
+  gl_ext_index_material                              = stringSetFind(e,"GL_EXT_index_material");
+  gl_ext_light_texture                               = stringSetFind(e,"GL_EXT_light_texture");
+  gl_ext_map_buffer_range                            = stringSetFind(e,"GL_EXT_map_buffer_range");
+  gl_ext_multi_draw_arrays                           = stringSetFind(e,"GL_EXT_multi_draw_arrays");
+  gl_ext_multisample                                 = stringSetFind(e,"GL_EXT_multisample");
+  gl_ext_multisampled_render_to_texture              = stringSetFind(e,"GL_EXT_multisampled_render_to_texture");
+  gl_ext_multiview_draw_buffers                      = stringSetFind(e,"GL_EXT_multiview_draw_buffers");
+  gl_ext_occlusion_query_boolean                     = stringSetFind(e,"GL_EXT_occlusion_query_boolean");
+  gl_ext_packed_depth_stencil                        = stringSetFind(e,"GL_EXT_packed_depth_stencil");
+  gl_ext_packed_float                                = stringSetFind(e,"GL_EXT_packed_float");
+  gl_ext_packed_pixels                               = stringSetFind(e,"GL_EXT_packed_pixels");
+  gl_ext_paletted_texture                            = stringSetFind(e,"GL_EXT_paletted_texture");
+  gl_ext_pixel_buffer_object                         = stringSetFind(e,"GL_EXT_pixel_buffer_object");
+  gl_ext_pixel_transform                             = stringSetFind(e,"GL_EXT_pixel_transform");
+  gl_ext_point_parameters                            = stringSetFind(e,"GL_EXT_point_parameters");
+  gl_ext_polygon_offset                              = stringSetFind(e,"GL_EXT_polygon_offset");
+  gl_ext_provoking_vertex                            = stringSetFind(e,"GL_EXT_provoking_vertex");
+  gl_ext_read_format_bgra                            = stringSetFind(e,"GL_EXT_read_format_bgra");
+  gl_ext_rescale_normal                              = stringSetFind(e,"GL_EXT_rescale_normal");
+  gl_ext_robustness                                  = stringSetFind(e,"GL_EXT_robustness");
+  gl_ext_srgb                                        = stringSetFind(e,"GL_EXT_sRGB");
+  gl_ext_scene_marker                                = stringSetFind(e,"GL_EXT_scene_marker");
+  gl_ext_secondary_color                             = stringSetFind(e,"GL_EXT_secondary_color");
+  gl_ext_separate_shader_objects                     = stringSetFind(e,"GL_EXT_separate_shader_objects");
+  gl_ext_separate_specular_color                     = stringSetFind(e,"GL_EXT_separate_specular_color");
+  gl_ext_shader_framebuffer_fetch                    = stringSetFind(e,"GL_EXT_shader_framebuffer_fetch");
+  gl_ext_shader_image_load_store                     = stringSetFind(e,"GL_EXT_shader_image_load_store");
+  gl_ext_shadow_samplers                             = stringSetFind(e,"GL_EXT_shadow_samplers");
+  gl_ext_shared_texture_palette                      = stringSetFind(e,"GL_EXT_shared_texture_palette");
+  gl_ext_stencil_clear_tag                           = stringSetFind(e,"GL_EXT_stencil_clear_tag");
+  gl_ext_stencil_two_side                            = stringSetFind(e,"GL_EXT_stencil_two_side");
+  gl_ext_stencil_wrap                                = stringSetFind(e,"GL_EXT_stencil_wrap");
+  gl_ext_subtexture                                  = stringSetFind(e,"GL_EXT_subtexture");
+  gl_ext_texture                                     = stringSetFind(e,"GL_EXT_texture");
+  gl_ext_texture3d                                   = stringSetFind(e,"GL_EXT_texture3D");
+  gl_ext_texture_array                               = stringSetFind(e,"GL_EXT_texture_array");
+  gl_ext_texture_buffer_object                       = stringSetFind(e,"GL_EXT_texture_buffer_object");
+  gl_ext_texture_compression_latc                    = stringSetFind(e,"GL_EXT_texture_compression_latc");
+  gl_ext_texture_compression_rgtc                    = stringSetFind(e,"GL_EXT_texture_compression_rgtc");
+  gl_ext_texture_compression_s3tc                    = stringSetFind(e,"GL_EXT_texture_compression_s3tc");
+  gl_ext_texture_cube_map                            = stringSetFind(e,"GL_EXT_texture_cube_map");
+  gl_ext_texture_edge_clamp                          = stringSetFind(e,"GL_EXT_texture_edge_clamp");
+  gl_ext_texture_env_combine                         = stringSetFind(e,"GL_EXT_texture_env_combine");
+  gl_ext_texture_env_dot3                            = stringSetFind(e,"GL_EXT_texture_env_dot3");
+  gl_ext_texture_filter_anisotropic                  = stringSetFind(e,"GL_EXT_texture_filter_anisotropic");
+  gl_ext_texture_format_bgra8888                     = stringSetFind(e,"GL_EXT_texture_format_BGRA8888");
+  gl_ext_texture_integer                             = stringSetFind(e,"GL_EXT_texture_integer");
+  gl_ext_texture_lod_bias                            = stringSetFind(e,"GL_EXT_texture_lod_bias");
+  gl_ext_texture_mirror_clamp                        = stringSetFind(e,"GL_EXT_texture_mirror_clamp");
+  gl_ext_texture_object                              = stringSetFind(e,"GL_EXT_texture_object");
+  gl_ext_texture_perturb_normal                      = stringSetFind(e,"GL_EXT_texture_perturb_normal");
+  gl_ext_texture_rectangle                           = stringSetFind(e,"GL_EXT_texture_rectangle");
+  gl_ext_texture_rg                                  = stringSetFind(e,"GL_EXT_texture_rg");
+  gl_ext_texture_srgb                                = stringSetFind(e,"GL_EXT_texture_sRGB");
+  gl_ext_texture_srgb_decode                         = stringSetFind(e,"GL_EXT_texture_sRGB_decode");
+  gl_ext_texture_shared_exponent                     = stringSetFind(e,"GL_EXT_texture_shared_exponent");
+  gl_ext_texture_snorm                               = stringSetFind(e,"GL_EXT_texture_snorm");
+  gl_ext_texture_storage                             = stringSetFind(e,"GL_EXT_texture_storage");
+  gl_ext_texture_swizzle                             = stringSetFind(e,"GL_EXT_texture_swizzle");
+  gl_ext_texture_type_2_10_10_10_rev                 = stringSetFind(e,"GL_EXT_texture_type_2_10_10_10_REV");
+  gl_ext_timer_query                                 = stringSetFind(e,"GL_EXT_timer_query");
+  gl_ext_transform_feedback                          = stringSetFind(e,"GL_EXT_transform_feedback");
+  gl_ext_unpack_subimage                             = stringSetFind(e,"GL_EXT_unpack_subimage");
+  gl_ext_vertex_array                                = stringSetFind(e,"GL_EXT_vertex_array");
+  gl_ext_vertex_attrib_64bit                         = stringSetFind(e,"GL_EXT_vertex_attrib_64bit");
+  gl_ext_vertex_shader                               = stringSetFind(e,"GL_EXT_vertex_shader");
+  gl_ext_vertex_weighting                            = stringSetFind(e,"GL_EXT_vertex_weighting");
+  gl_ext_x11_sync_object                             = stringSetFind(e,"GL_EXT_x11_sync_object");
+  gl_fj_shader_binary_gccso                          = stringSetFind(e,"GL_FJ_shader_binary_GCCSO");
+  gl_gremedy_frame_terminator                        = stringSetFind(e,"GL_GREMEDY_frame_terminator");
+  gl_gremedy_string_marker                           = stringSetFind(e,"GL_GREMEDY_string_marker");
+  gl_hp_image_transform                              = stringSetFind(e,"GL_HP_image_transform");
+  gl_hp_occlusion_test                               = stringSetFind(e,"GL_HP_occlusion_test");
+  gl_ibm_cull_vertex                                 = stringSetFind(e,"GL_IBM_cull_vertex");
+  gl_ibm_multimode_draw_arrays                       = stringSetFind(e,"GL_IBM_multimode_draw_arrays");
+  gl_ibm_rasterpos_clip                              = stringSetFind(e,"GL_IBM_rasterpos_clip");
+  gl_ibm_static_data                                 = stringSetFind(e,"GL_IBM_static_data");
+  gl_ibm_texture_mirrored_repeat                     = stringSetFind(e,"GL_IBM_texture_mirrored_repeat");
+  gl_ibm_vertex_array_lists                          = stringSetFind(e,"GL_IBM_vertex_array_lists");
+  gl_img_multisampled_render_to_texture              = stringSetFind(e,"GL_IMG_multisampled_render_to_texture");
+  gl_img_program_binary                              = stringSetFind(e,"GL_IMG_program_binary");
+  gl_img_read_format                                 = stringSetFind(e,"GL_IMG_read_format");
+  gl_img_shader_binary                               = stringSetFind(e,"GL_IMG_shader_binary");
+  gl_img_texture_compression_pvrtc                   = stringSetFind(e,"GL_IMG_texture_compression_pvrtc");
+  gl_img_texture_compression_pvrtc2                  = stringSetFind(e,"GL_IMG_texture_compression_pvrtc2");
+  gl_img_texture_env_enhanced_fixed_function         = stringSetFind(e,"GL_IMG_texture_env_enhanced_fixed_function");
+  gl_img_user_clip_plane                             = stringSetFind(e,"GL_IMG_user_clip_plane");
+  gl_ingr_blend_func_separate                        = stringSetFind(e,"GL_INGR_blend_func_separate");
+  gl_ingr_color_clamp                                = stringSetFind(e,"GL_INGR_color_clamp");
+  gl_ingr_interlace_read                             = stringSetFind(e,"GL_INGR_interlace_read");
+  gl_intel_map_texture                               = stringSetFind(e,"GL_INTEL_map_texture");
+  gl_intel_parallel_arrays                           = stringSetFind(e,"GL_INTEL_parallel_arrays");
+  gl_intel_texture_scissor                           = stringSetFind(e,"GL_INTEL_texture_scissor");
+  gl_khr_debug                                       = stringSetFind(e,"GL_KHR_debug");
+  gl_khr_texture_compression_astc_ldr                = stringSetFind(e,"GL_KHR_texture_compression_astc_ldr");
+  gl_ktx_buffer_region                               = stringSetFind(e,"GL_KTX_buffer_region");
+  gl_mesax_texture_stack                             = stringSetFind(e,"GL_MESAX_texture_stack");
+  gl_mesa_pack_invert                                = stringSetFind(e,"GL_MESA_pack_invert");
+  gl_mesa_resize_buffers                             = stringSetFind(e,"GL_MESA_resize_buffers");
+  gl_mesa_window_pos                                 = stringSetFind(e,"GL_MESA_window_pos");
+  gl_mesa_ycbcr_texture                              = stringSetFind(e,"GL_MESA_ycbcr_texture");
+  gl_nvx_conditional_render                          = stringSetFind(e,"GL_NVX_conditional_render");
+  gl_nvx_gpu_memory_info                             = stringSetFind(e,"GL_NVX_gpu_memory_info");
+  gl_nv_3dvision_settings                            = stringSetFind(e,"GL_NV_3dvision_settings");
+  gl_nv_bgr                                          = stringSetFind(e,"GL_NV_bgr");
+  gl_nv_bindless_texture                             = stringSetFind(e,"GL_NV_bindless_texture");
+  gl_nv_blend_equation_advanced                      = stringSetFind(e,"GL_NV_blend_equation_advanced");
+  gl_nv_blend_square                                 = stringSetFind(e,"GL_NV_blend_square");
+  gl_nv_compute_program5                             = stringSetFind(e,"GL_NV_compute_program5");
+  gl_nv_conditional_render                           = stringSetFind(e,"GL_NV_conditional_render");
+  gl_nv_copy_buffer                                  = stringSetFind(e,"GL_NV_copy_buffer");
+  gl_nv_copy_depth_to_color                          = stringSetFind(e,"GL_NV_copy_depth_to_color");
+  gl_nv_copy_image                                   = stringSetFind(e,"GL_NV_copy_image");
+  gl_nv_coverage_sample                              = stringSetFind(e,"GL_NV_coverage_sample");
+  gl_nv_deep_texture3d                               = stringSetFind(e,"GL_NV_deep_texture3D");
+  gl_nv_depth_buffer_float                           = stringSetFind(e,"GL_NV_depth_buffer_float");
+  gl_nv_depth_clamp                                  = stringSetFind(e,"GL_NV_depth_clamp");
+  gl_nv_depth_nonlinear                              = stringSetFind(e,"GL_NV_depth_nonlinear");
+  gl_nv_depth_range_unclamped                        = stringSetFind(e,"GL_NV_depth_range_unclamped");
+  gl_nv_draw_buffers                                 = stringSetFind(e,"GL_NV_draw_buffers");
+  gl_nv_draw_texture                                 = stringSetFind(e,"GL_NV_draw_texture");
+  gl_nv_evaluators                                   = stringSetFind(e,"GL_NV_evaluators");
+  gl_nv_explicit_multisample                         = stringSetFind(e,"GL_NV_explicit_multisample");
+  gl_nv_fbo_color_attachments                        = stringSetFind(e,"GL_NV_fbo_color_attachments");
+  gl_nv_fence                                        = stringSetFind(e,"GL_NV_fence");
+  gl_nv_float_buffer                                 = stringSetFind(e,"GL_NV_float_buffer");
+  gl_nv_fog_distance                                 = stringSetFind(e,"GL_NV_fog_distance");
+  gl_nv_fragment_program                             = stringSetFind(e,"GL_NV_fragment_program");
+  gl_nv_fragment_program2                            = stringSetFind(e,"GL_NV_fragment_program2");
+  gl_nv_framebuffer_blit                             = stringSetFind(e,"GL_NV_framebuffer_blit");
+  gl_nv_framebuffer_multisample                      = stringSetFind(e,"GL_NV_framebuffer_multisample");
+  gl_nv_framebuffer_multisample_coverage             = stringSetFind(e,"GL_NV_framebuffer_multisample_coverage");
+  gl_nv_geometry_program4                            = stringSetFind(e,"GL_NV_geometry_program4");
+  gl_nv_gpu_program4                                 = stringSetFind(e,"GL_NV_gpu_program4");
+  gl_nv_gpu_program5                                 = stringSetFind(e,"GL_NV_gpu_program5");
+  gl_nv_gpu_shader5                                  = stringSetFind(e,"GL_NV_gpu_shader5");
+  gl_nv_half_float                                   = stringSetFind(e,"GL_NV_half_float");
+  gl_nv_instanced_arrays                             = stringSetFind(e,"GL_NV_instanced_arrays");
+  gl_nv_light_max_exponent                           = stringSetFind(e,"GL_NV_light_max_exponent");
+  gl_nv_multisample_coverage                         = stringSetFind(e,"GL_NV_multisample_coverage");
+  gl_nv_multisample_filter_hint                      = stringSetFind(e,"GL_NV_multisample_filter_hint");
+  gl_nv_non_square_matrices                          = stringSetFind(e,"GL_NV_non_square_matrices");
+  gl_nv_occlusion_query                              = stringSetFind(e,"GL_NV_occlusion_query");
+  gl_nv_pack_subimage                                = stringSetFind(e,"GL_NV_pack_subimage");
+  gl_nv_packed_depth_stencil                         = stringSetFind(e,"GL_NV_packed_depth_stencil");
+  gl_nv_packed_float_linear                          = stringSetFind(e,"GL_NV_packed_float_linear");
+  gl_nv_parameter_buffer_object                      = stringSetFind(e,"GL_NV_parameter_buffer_object");
+  gl_nv_path_rendering                               = stringSetFind(e,"GL_NV_path_rendering");
+  gl_nv_pixel_buffer_object                          = stringSetFind(e,"GL_NV_pixel_buffer_object");
+  gl_nv_pixel_data_range                             = stringSetFind(e,"GL_NV_pixel_data_range");
+  gl_nv_platform_binary                              = stringSetFind(e,"GL_NV_platform_binary");
+  gl_nv_point_sprite                                 = stringSetFind(e,"GL_NV_point_sprite");
+  gl_nv_present_video                                = stringSetFind(e,"GL_NV_present_video");
+  gl_nv_primitive_restart                            = stringSetFind(e,"GL_NV_primitive_restart");
+  gl_nv_read_buffer                                  = stringSetFind(e,"GL_NV_read_buffer");
+  gl_nv_read_buffer_front                            = stringSetFind(e,"GL_NV_read_buffer_front");
+  gl_nv_register_combiners                           = stringSetFind(e,"GL_NV_register_combiners");
+  gl_nv_register_combiners2                          = stringSetFind(e,"GL_NV_register_combiners2");
+  gl_nv_srgb_formats                                 = stringSetFind(e,"GL_NV_sRGB_formats");
+  gl_nv_shader_buffer_load                           = stringSetFind(e,"GL_NV_shader_buffer_load");
+  gl_nv_shadow_samplers_array                        = stringSetFind(e,"GL_NV_shadow_samplers_array");
+  gl_nv_shadow_samplers_cube                         = stringSetFind(e,"GL_NV_shadow_samplers_cube");
+  gl_nv_tessellation_program5                        = stringSetFind(e,"GL_NV_tessellation_program5");
+  gl_nv_texgen_emboss                                = stringSetFind(e,"GL_NV_texgen_emboss");
+  gl_nv_texgen_reflection                            = stringSetFind(e,"GL_NV_texgen_reflection");
+  gl_nv_texture_array                                = stringSetFind(e,"GL_NV_texture_array");
+  gl_nv_texture_barrier                              = stringSetFind(e,"GL_NV_texture_barrier");
+  gl_nv_texture_border_clamp                         = stringSetFind(e,"GL_NV_texture_border_clamp");
+  gl_nv_texture_compression_latc                     = stringSetFind(e,"GL_NV_texture_compression_latc");
+  gl_nv_texture_compression_s3tc                     = stringSetFind(e,"GL_NV_texture_compression_s3tc");
+  gl_nv_texture_env_combine4                         = stringSetFind(e,"GL_NV_texture_env_combine4");
+  gl_nv_texture_expand_normal                        = stringSetFind(e,"GL_NV_texture_expand_normal");
+  gl_nv_texture_multisample                          = stringSetFind(e,"GL_NV_texture_multisample");
+  gl_nv_texture_rectangle                            = stringSetFind(e,"GL_NV_texture_rectangle");
+  gl_nv_texture_shader                               = stringSetFind(e,"GL_NV_texture_shader");
+  gl_nv_texture_shader2                              = stringSetFind(e,"GL_NV_texture_shader2");
+  gl_nv_texture_shader3                              = stringSetFind(e,"GL_NV_texture_shader3");
+  gl_nv_transform_feedback                           = stringSetFind(e,"GL_NV_transform_feedback");
+  gl_nv_transform_feedback2                          = stringSetFind(e,"GL_NV_transform_feedback2");
+  gl_nv_vdpau_interop                                = stringSetFind(e,"GL_NV_vdpau_interop");
+  gl_nv_vertex_array_range                           = stringSetFind(e,"GL_NV_vertex_array_range");
+  gl_nv_vertex_array_range2                          = stringSetFind(e,"GL_NV_vertex_array_range2");
+  gl_nv_vertex_attrib_integer_64bit                  = stringSetFind(e,"GL_NV_vertex_attrib_integer_64bit");
+  gl_nv_vertex_buffer_unified_memory                 = stringSetFind(e,"GL_NV_vertex_buffer_unified_memory");
+  gl_nv_vertex_program                               = stringSetFind(e,"GL_NV_vertex_program");
+  gl_nv_vertex_program2_option                       = stringSetFind(e,"GL_NV_vertex_program2_option");
+  gl_nv_vertex_program3                              = stringSetFind(e,"GL_NV_vertex_program3");
+  gl_nv_vertex_program4                              = stringSetFind(e,"GL_NV_vertex_program4");
+  gl_nv_video_capture                                = stringSetFind(e,"GL_NV_video_capture");
+  gl_oes_egl_image_external                          = stringSetFind(e,"GL_OES_EGL_image_external");
+  gl_oes_blend_equation_separate                     = stringSetFind(e,"GL_OES_blend_equation_separate");
+  gl_oes_blend_func_separate                         = stringSetFind(e,"GL_OES_blend_func_separate");
+  gl_oes_blend_subtract                              = stringSetFind(e,"GL_OES_blend_subtract");
+  gl_oes_compressed_etc1_rgb8_texture                = stringSetFind(e,"GL_OES_compressed_ETC1_RGB8_texture");
+  gl_oes_compressed_paletted_texture                 = stringSetFind(e,"GL_OES_compressed_paletted_texture");
+  gl_oes_depth_texture                               = stringSetFind(e,"GL_OES_depth_texture");
+  gl_oes_draw_texture                                = stringSetFind(e,"GL_OES_draw_texture");
+  gl_oes_element_index_uint                          = stringSetFind(e,"GL_OES_element_index_uint");
+  gl_oes_fbo_render_mipmap                           = stringSetFind(e,"GL_OES_fbo_render_mipmap");
+  gl_oes_framebuffer_object                          = stringSetFind(e,"GL_OES_framebuffer_object");
+  gl_oes_get_program_binary                          = stringSetFind(e,"GL_OES_get_program_binary");
+  gl_oes_mapbuffer                                   = stringSetFind(e,"GL_OES_mapbuffer");
+  gl_oes_matrix_get                                  = stringSetFind(e,"GL_OES_matrix_get");
+  gl_oes_matrix_palette                              = stringSetFind(e,"GL_OES_matrix_palette");
+  gl_oes_packed_depth_stencil                        = stringSetFind(e,"GL_OES_packed_depth_stencil");
+  gl_oes_point_size_array                            = stringSetFind(e,"GL_OES_point_size_array");
+  gl_oes_point_sprite                                = stringSetFind(e,"GL_OES_point_sprite");
+  gl_oes_read_format                                 = stringSetFind(e,"GL_OES_read_format");
+  gl_oes_required_internalformat                     = stringSetFind(e,"GL_OES_required_internalformat");
+  gl_oes_rgb8_rgba8                                  = stringSetFind(e,"GL_OES_rgb8_rgba8");
+  gl_oes_single_precision                            = stringSetFind(e,"GL_OES_single_precision");
+  gl_oes_standard_derivatives                        = stringSetFind(e,"GL_OES_standard_derivatives");
+  gl_oes_stencil1                                    = stringSetFind(e,"GL_OES_stencil1");
+  gl_oes_stencil4                                    = stringSetFind(e,"GL_OES_stencil4");
+  gl_oes_stencil8                                    = stringSetFind(e,"GL_OES_stencil8");
+  gl_oes_surfaceless_context                         = stringSetFind(e,"GL_OES_surfaceless_context");
+  gl_oes_texture_3d                                  = stringSetFind(e,"GL_OES_texture_3D");
+  gl_oes_texture_cube_map                            = stringSetFind(e,"GL_OES_texture_cube_map");
+  gl_oes_texture_mirrored_repeat                     = stringSetFind(e,"GL_OES_texture_mirrored_repeat");
+  gl_oes_vertex_array_object                         = stringSetFind(e,"GL_OES_vertex_array_object");
+  gl_oes_vertex_half_float                           = stringSetFind(e,"GL_OES_vertex_half_float");
+  gl_oes_vertex_type_10_10_10_2                      = stringSetFind(e,"GL_OES_vertex_type_10_10_10_2");
+  gl_oml_interlace                                   = stringSetFind(e,"GL_OML_interlace");
+  gl_oml_resample                                    = stringSetFind(e,"GL_OML_resample");
+  gl_oml_subsample                                   = stringSetFind(e,"GL_OML_subsample");
+  gl_pgi_misc_hints                                  = stringSetFind(e,"GL_PGI_misc_hints");
+  gl_pgi_vertex_hints                                = stringSetFind(e,"GL_PGI_vertex_hints");
+  gl_qcom_alpha_test                                 = stringSetFind(e,"GL_QCOM_alpha_test");
+  gl_qcom_binning_control                            = stringSetFind(e,"GL_QCOM_binning_control");
+  gl_qcom_driver_control                             = stringSetFind(e,"GL_QCOM_driver_control");
+  gl_qcom_extended_get                               = stringSetFind(e,"GL_QCOM_extended_get");
+  gl_qcom_extended_get2                              = stringSetFind(e,"GL_QCOM_extended_get2");
+  gl_qcom_perfmon_global_mode                        = stringSetFind(e,"GL_QCOM_perfmon_global_mode");
+  gl_qcom_tiled_rendering                            = stringSetFind(e,"GL_QCOM_tiled_rendering");
+  gl_qcom_writeonly_rendering                        = stringSetFind(e,"GL_QCOM_writeonly_rendering");
+  gl_regal_es1_0_compatibility                       = stringSetFind(e,"GL_REGAL_ES1_0_compatibility");
+  gl_regal_es1_1_compatibility                       = stringSetFind(e,"GL_REGAL_ES1_1_compatibility");
+  gl_regal_enable                                    = stringSetFind(e,"GL_REGAL_enable");
+  gl_regal_error_string                              = stringSetFind(e,"GL_REGAL_error_string");
+  gl_regal_extension_query                           = stringSetFind(e,"GL_REGAL_extension_query");
+  gl_regal_log                                       = stringSetFind(e,"GL_REGAL_log");
+  gl_rend_screen_coordinates                         = stringSetFind(e,"GL_REND_screen_coordinates");
+  gl_s3_s3tc                                         = stringSetFind(e,"GL_S3_s3tc");
+  gl_sgis_color_range                                = stringSetFind(e,"GL_SGIS_color_range");
+  gl_sgis_detail_texture                             = stringSetFind(e,"GL_SGIS_detail_texture");
+  gl_sgis_fog_function                               = stringSetFind(e,"GL_SGIS_fog_function");
+  gl_sgis_generate_mipmap                            = stringSetFind(e,"GL_SGIS_generate_mipmap");
+  gl_sgis_multisample                                = stringSetFind(e,"GL_SGIS_multisample");
+  gl_sgis_pixel_texture                              = stringSetFind(e,"GL_SGIS_pixel_texture");
+  gl_sgis_point_line_texgen                          = stringSetFind(e,"GL_SGIS_point_line_texgen");
+  gl_sgis_point_parameters                           = stringSetFind(e,"GL_SGIS_point_parameters");
+  gl_sgis_sharpen_texture                            = stringSetFind(e,"GL_SGIS_sharpen_texture");
+  gl_sgis_texture4d                                  = stringSetFind(e,"GL_SGIS_texture4D");
+  gl_sgis_texture_border_clamp                       = stringSetFind(e,"GL_SGIS_texture_border_clamp");
+  gl_sgis_texture_color_mask                         = stringSetFind(e,"GL_SGIS_texture_color_mask");
+  gl_sgis_texture_edge_clamp                         = stringSetFind(e,"GL_SGIS_texture_edge_clamp");
+  gl_sgis_texture_filter4                            = stringSetFind(e,"GL_SGIS_texture_filter4");
+  gl_sgis_texture_lod                                = stringSetFind(e,"GL_SGIS_texture_lod");
+  gl_sgix_async                                      = stringSetFind(e,"GL_SGIX_async");
+  gl_sgix_async_histogram                            = stringSetFind(e,"GL_SGIX_async_histogram");
+  gl_sgix_async_pixel                                = stringSetFind(e,"GL_SGIX_async_pixel");
+  gl_sgix_blend_alpha_minmax                         = stringSetFind(e,"GL_SGIX_blend_alpha_minmax");
+  gl_sgix_convolution_accuracy                       = stringSetFind(e,"GL_SGIX_convolution_accuracy");
+  gl_sgix_depth_texture                              = stringSetFind(e,"GL_SGIX_depth_texture");
+  gl_sgix_flush_raster                               = stringSetFind(e,"GL_SGIX_flush_raster");
+  gl_sgix_fog_offset                                 = stringSetFind(e,"GL_SGIX_fog_offset");
+  gl_sgix_fog_texture                                = stringSetFind(e,"GL_SGIX_fog_texture");
+  gl_sgix_fragment_lighting                          = stringSetFind(e,"GL_SGIX_fragment_lighting");
+  gl_sgix_fragment_specular_lighting                 = stringSetFind(e,"GL_SGIX_fragment_specular_lighting");
+  gl_sgix_framezoom                                  = stringSetFind(e,"GL_SGIX_framezoom");
+  gl_sgix_igloo_interface                            = stringSetFind(e,"GL_SGIX_igloo_interface");
+  gl_sgix_instruments                                = stringSetFind(e,"GL_SGIX_instruments");
+  gl_sgix_interlace                                  = stringSetFind(e,"GL_SGIX_interlace");
+  gl_sgix_list_priority                              = stringSetFind(e,"GL_SGIX_list_priority");
+  gl_sgix_pixel_texture                              = stringSetFind(e,"GL_SGIX_pixel_texture");
+  gl_sgix_polynomial_ffd                             = stringSetFind(e,"GL_SGIX_polynomial_ffd");
+  gl_sgix_reference_plane                            = stringSetFind(e,"GL_SGIX_reference_plane");
+  gl_sgix_resample                                   = stringSetFind(e,"GL_SGIX_resample");
+  gl_sgix_shadow                                     = stringSetFind(e,"GL_SGIX_shadow");
+  gl_sgix_shadow_ambient                             = stringSetFind(e,"GL_SGIX_shadow_ambient");
+  gl_sgix_sprite                                     = stringSetFind(e,"GL_SGIX_sprite");
+  gl_sgix_tag_sample_buffer                          = stringSetFind(e,"GL_SGIX_tag_sample_buffer");
+  gl_sgix_texture_coordinate_clamp                   = stringSetFind(e,"GL_SGIX_texture_coordinate_clamp");
+  gl_sgix_texture_multi_buffer                       = stringSetFind(e,"GL_SGIX_texture_multi_buffer");
+  gl_sgix_texture_range                              = stringSetFind(e,"GL_SGIX_texture_range");
+  gl_sgix_texture_scale_bias                         = stringSetFind(e,"GL_SGIX_texture_scale_bias");
+  gl_sgix_vertex_preclip_hint                        = stringSetFind(e,"GL_SGIX_vertex_preclip_hint");
+  gl_sgix_ycrcb                                      = stringSetFind(e,"GL_SGIX_ycrcb");
+  gl_sgi_color_matrix                                = stringSetFind(e,"GL_SGI_color_matrix");
+  gl_sgi_color_table                                 = stringSetFind(e,"GL_SGI_color_table");
+  gl_sgi_texture_color_table                         = stringSetFind(e,"GL_SGI_texture_color_table");
+  gl_sunx_constant_data                              = stringSetFind(e,"GL_SUNX_constant_data");
+  gl_sun_convolution_border_modes                    = stringSetFind(e,"GL_SUN_convolution_border_modes");
+  gl_sun_global_alpha                                = stringSetFind(e,"GL_SUN_global_alpha");
+  gl_sun_mesh_array                                  = stringSetFind(e,"GL_SUN_mesh_array");
+  gl_sun_read_video_pixels                           = stringSetFind(e,"GL_SUN_read_video_pixels");
+  gl_sun_slice_accum                                 = stringSetFind(e,"GL_SUN_slice_accum");
+  gl_sun_triangle_list                               = stringSetFind(e,"GL_SUN_triangle_list");
+  gl_sun_vertex                                      = stringSetFind(e,"GL_SUN_vertex");
+  gl_viv_shader_binary                               = stringSetFind(e,"GL_VIV_shader_binary");
+  gl_win_phong_shading                               = stringSetFind(e,"GL_WIN_phong_shading");
+  gl_win_specular_fog                                = stringSetFind(e,"GL_WIN_specular_fog");
+  gl_win_swap_hint                                   = stringSetFind(e,"GL_WIN_swap_hint");
 
 #if REGAL_SYS_WGL
-  wgl_3dl_stereo_control = stringSetFind(e,"WGL_3DL_stereo_control");
-  wgl_amd_gpu_association = stringSetFind(e,"WGL_AMD_gpu_association");
-  wgl_arb_buffer_region = stringSetFind(e,"WGL_ARB_buffer_region");
-  wgl_arb_create_context = stringSetFind(e,"WGL_ARB_create_context");
-  wgl_arb_create_context_profile = stringSetFind(e,"WGL_ARB_create_context_profile");
-  wgl_arb_create_context_robustness = stringSetFind(e,"WGL_ARB_create_context_robustness");
-  wgl_arb_extensions_string = stringSetFind(e,"WGL_ARB_extensions_string");
-  wgl_arb_framebuffer_srgb = stringSetFind(e,"WGL_ARB_framebuffer_sRGB");
-  wgl_arb_make_current_read = stringSetFind(e,"WGL_ARB_make_current_read");
-  wgl_arb_multisample = stringSetFind(e,"WGL_ARB_multisample");
-  wgl_arb_pbuffer = stringSetFind(e,"WGL_ARB_pbuffer");
-  wgl_arb_pixel_format = stringSetFind(e,"WGL_ARB_pixel_format");
-  wgl_arb_pixel_format_float = stringSetFind(e,"WGL_ARB_pixel_format_float");
-  wgl_arb_render_texture = stringSetFind(e,"WGL_ARB_render_texture");
-  wgl_arb_robustness_share_group_isolation = stringSetFind(e,"WGL_ARB_robustness_share_group_isolation");
-  wgl_ati_pixel_format_float = stringSetFind(e,"WGL_ATI_pixel_format_float");
-  wgl_ati_render_texture_rectangle = stringSetFind(e,"WGL_ATI_render_texture_rectangle");
-  wgl_ext_create_context_es2_profile = stringSetFind(e,"WGL_EXT_create_context_es2_profile");
-  wgl_ext_create_context_es_profile = stringSetFind(e,"WGL_EXT_create_context_es_profile");
-  wgl_ext_depth_float = stringSetFind(e,"WGL_EXT_depth_float");
-  wgl_ext_display_color_table = stringSetFind(e,"WGL_EXT_display_color_table");
-  wgl_ext_extensions_string = stringSetFind(e,"WGL_EXT_extensions_string");
-  wgl_ext_framebuffer_srgb = stringSetFind(e,"WGL_EXT_framebuffer_sRGB");
-  wgl_ext_make_current_read = stringSetFind(e,"WGL_EXT_make_current_read");
-  wgl_ext_multisample = stringSetFind(e,"WGL_EXT_multisample");
-  wgl_ext_pbuffer = stringSetFind(e,"WGL_EXT_pbuffer");
-  wgl_ext_pixel_format = stringSetFind(e,"WGL_EXT_pixel_format");
-  wgl_ext_pixel_format_packed_float = stringSetFind(e,"WGL_EXT_pixel_format_packed_float");
-  wgl_ext_swap_control = stringSetFind(e,"WGL_EXT_swap_control");
-  wgl_gdi = stringSetFind(e,"WGL_GDI");
-  wgl_i3d_digital_video_control = stringSetFind(e,"WGL_I3D_digital_video_control");
-  wgl_i3d_gamma = stringSetFind(e,"WGL_I3D_gamma");
-  wgl_i3d_genlock = stringSetFind(e,"WGL_I3D_genlock");
-  wgl_i3d_image_buffer = stringSetFind(e,"WGL_I3D_image_buffer");
-  wgl_i3d_swap_frame_lock = stringSetFind(e,"WGL_I3D_swap_frame_lock");
-  wgl_i3d_swap_frame_usage = stringSetFind(e,"WGL_I3D_swap_frame_usage");
-  wgl_nv_dx_interop = stringSetFind(e,"WGL_NV_DX_interop");
-  wgl_nv_copy_image = stringSetFind(e,"WGL_NV_copy_image");
-  wgl_nv_float_buffer = stringSetFind(e,"WGL_NV_float_buffer");
-  wgl_nv_gpu_affinity = stringSetFind(e,"WGL_NV_gpu_affinity");
-  wgl_nv_multisample_coverage = stringSetFind(e,"WGL_NV_multisample_coverage");
-  wgl_nv_present_video = stringSetFind(e,"WGL_NV_present_video");
-  wgl_nv_render_depth_texture = stringSetFind(e,"WGL_NV_render_depth_texture");
-  wgl_nv_render_texture_rectangle = stringSetFind(e,"WGL_NV_render_texture_rectangle");
-  wgl_nv_swap_group = stringSetFind(e,"WGL_NV_swap_group");
-  wgl_nv_vertex_array_range = stringSetFind(e,"WGL_NV_vertex_array_range");
-  wgl_nv_video_capture = stringSetFind(e,"WGL_NV_video_capture");
-  wgl_nv_video_output = stringSetFind(e,"WGL_NV_video_output");
-  wgl_oml_sync_control = stringSetFind(e,"WGL_OML_sync_control");
-#endif
+  wgl_3dl_stereo_control                             = stringSetFind(e,"WGL_3DL_stereo_control");
+  wgl_amd_gpu_association                            = stringSetFind(e,"WGL_AMD_gpu_association");
+  wgl_arb_buffer_region                              = stringSetFind(e,"WGL_ARB_buffer_region");
+  wgl_arb_create_context                             = stringSetFind(e,"WGL_ARB_create_context");
+  wgl_arb_create_context_profile                     = stringSetFind(e,"WGL_ARB_create_context_profile");
+  wgl_arb_create_context_robustness                  = stringSetFind(e,"WGL_ARB_create_context_robustness");
+  wgl_arb_extensions_string                          = stringSetFind(e,"WGL_ARB_extensions_string");
+  wgl_arb_framebuffer_srgb                           = stringSetFind(e,"WGL_ARB_framebuffer_sRGB");
+  wgl_arb_make_current_read                          = stringSetFind(e,"WGL_ARB_make_current_read");
+  wgl_arb_multisample                                = stringSetFind(e,"WGL_ARB_multisample");
+  wgl_arb_pbuffer                                    = stringSetFind(e,"WGL_ARB_pbuffer");
+  wgl_arb_pixel_format                               = stringSetFind(e,"WGL_ARB_pixel_format");
+  wgl_arb_pixel_format_float                         = stringSetFind(e,"WGL_ARB_pixel_format_float");
+  wgl_arb_render_texture                             = stringSetFind(e,"WGL_ARB_render_texture");
+  wgl_arb_robustness_share_group_isolation           = stringSetFind(e,"WGL_ARB_robustness_share_group_isolation");
+  wgl_ati_pixel_format_float                         = stringSetFind(e,"WGL_ATI_pixel_format_float");
+  wgl_ati_render_texture_rectangle                   = stringSetFind(e,"WGL_ATI_render_texture_rectangle");
+  wgl_ext_create_context_es2_profile                 = stringSetFind(e,"WGL_EXT_create_context_es2_profile");
+  wgl_ext_create_context_es_profile                  = stringSetFind(e,"WGL_EXT_create_context_es_profile");
+  wgl_ext_depth_float                                = stringSetFind(e,"WGL_EXT_depth_float");
+  wgl_ext_display_color_table                        = stringSetFind(e,"WGL_EXT_display_color_table");
+  wgl_ext_extensions_string                          = stringSetFind(e,"WGL_EXT_extensions_string");
+  wgl_ext_framebuffer_srgb                           = stringSetFind(e,"WGL_EXT_framebuffer_sRGB");
+  wgl_ext_make_current_read                          = stringSetFind(e,"WGL_EXT_make_current_read");
+  wgl_ext_multisample                                = stringSetFind(e,"WGL_EXT_multisample");
+  wgl_ext_pbuffer                                    = stringSetFind(e,"WGL_EXT_pbuffer");
+  wgl_ext_pixel_format                               = stringSetFind(e,"WGL_EXT_pixel_format");
+  wgl_ext_pixel_format_packed_float                  = stringSetFind(e,"WGL_EXT_pixel_format_packed_float");
+  wgl_ext_swap_control                               = stringSetFind(e,"WGL_EXT_swap_control");
+  wgl_gdi                                            = stringSetFind(e,"WGL_GDI");
+  wgl_i3d_digital_video_control                      = stringSetFind(e,"WGL_I3D_digital_video_control");
+  wgl_i3d_gamma                                      = stringSetFind(e,"WGL_I3D_gamma");
+  wgl_i3d_genlock                                    = stringSetFind(e,"WGL_I3D_genlock");
+  wgl_i3d_image_buffer                               = stringSetFind(e,"WGL_I3D_image_buffer");
+  wgl_i3d_swap_frame_lock                            = stringSetFind(e,"WGL_I3D_swap_frame_lock");
+  wgl_i3d_swap_frame_usage                           = stringSetFind(e,"WGL_I3D_swap_frame_usage");
+  wgl_nv_dx_interop                                  = stringSetFind(e,"WGL_NV_DX_interop");
+  wgl_nv_copy_image                                  = stringSetFind(e,"WGL_NV_copy_image");
+  wgl_nv_float_buffer                                = stringSetFind(e,"WGL_NV_float_buffer");
+  wgl_nv_gpu_affinity                                = stringSetFind(e,"WGL_NV_gpu_affinity");
+  wgl_nv_multisample_coverage                        = stringSetFind(e,"WGL_NV_multisample_coverage");
+  wgl_nv_present_video                               = stringSetFind(e,"WGL_NV_present_video");
+  wgl_nv_render_depth_texture                        = stringSetFind(e,"WGL_NV_render_depth_texture");
+  wgl_nv_render_texture_rectangle                    = stringSetFind(e,"WGL_NV_render_texture_rectangle");
+  wgl_nv_swap_group                                  = stringSetFind(e,"WGL_NV_swap_group");
+  wgl_nv_vertex_array_range                          = stringSetFind(e,"WGL_NV_vertex_array_range");
+  wgl_nv_video_capture                               = stringSetFind(e,"WGL_NV_video_capture");
+  wgl_nv_video_output                                = stringSetFind(e,"WGL_NV_video_output");
+  wgl_oml_sync_control                               = stringSetFind(e,"WGL_OML_sync_control");
+#endif /* REGAL_SYS_WGL */
 
 #if REGAL_SYS_GLX
-  glx_3dfx_multisample = stringSetFind(e,"GLX_3DFX_multisample");
-  glx_amd_gpu_association = stringSetFind(e,"GLX_AMD_gpu_association");
-  glx_arb_create_context = stringSetFind(e,"GLX_ARB_create_context");
-  glx_arb_create_context_profile = stringSetFind(e,"GLX_ARB_create_context_profile");
-  glx_arb_create_context_robustness = stringSetFind(e,"GLX_ARB_create_context_robustness");
-  glx_arb_fbconfig_float = stringSetFind(e,"GLX_ARB_fbconfig_float");
-  glx_arb_framebuffer_srgb = stringSetFind(e,"GLX_ARB_framebuffer_sRGB");
-  glx_arb_get_proc_address = stringSetFind(e,"GLX_ARB_get_proc_address");
-  glx_arb_multisample = stringSetFind(e,"GLX_ARB_multisample");
-  glx_arb_robustness_share_group_isolation = stringSetFind(e,"GLX_ARB_robustness_share_group_isolation");
-  glx_arb_vertex_buffer_object = stringSetFind(e,"GLX_ARB_vertex_buffer_object");
-  glx_ati_pixel_format_float = stringSetFind(e,"GLX_ATI_pixel_format_float");
-  glx_ati_render_texture = stringSetFind(e,"GLX_ATI_render_texture");
-  glx_ext_create_context_es2_profile = stringSetFind(e,"GLX_EXT_create_context_es2_profile");
-  glx_ext_create_context_es_profile = stringSetFind(e,"GLX_EXT_create_context_es_profile");
-  glx_ext_fbconfig_packed_float = stringSetFind(e,"GLX_EXT_fbconfig_packed_float");
-  glx_ext_framebuffer_srgb = stringSetFind(e,"GLX_EXT_framebuffer_sRGB");
-  glx_ext_import_context = stringSetFind(e,"GLX_EXT_import_context");
-  glx_ext_swap_control = stringSetFind(e,"GLX_EXT_swap_control");
-  glx_ext_swap_control_tear = stringSetFind(e,"GLX_EXT_swap_control_tear");
-  glx_ext_texture_from_pixmap = stringSetFind(e,"GLX_EXT_texture_from_pixmap");
-  glx_ext_visual_info = stringSetFind(e,"GLX_EXT_visual_info");
-  glx_ext_visual_rating = stringSetFind(e,"GLX_EXT_visual_rating");
-  glx_intel_swap_event = stringSetFind(e,"GLX_INTEL_swap_event");
-  glx_mesa_agp_offset = stringSetFind(e,"GLX_MESA_agp_offset");
-  glx_mesa_copy_sub_buffer = stringSetFind(e,"GLX_MESA_copy_sub_buffer");
-  glx_mesa_pixmap_colormap = stringSetFind(e,"GLX_MESA_pixmap_colormap");
-  glx_mesa_release_buffers = stringSetFind(e,"GLX_MESA_release_buffers");
-  glx_mesa_set_3dfx_mode = stringSetFind(e,"GLX_MESA_set_3dfx_mode");
-  glx_mesa_swap_control = stringSetFind(e,"GLX_MESA_swap_control");
-  glx_nv_copy_image = stringSetFind(e,"GLX_NV_copy_image");
-  glx_nv_float_buffer = stringSetFind(e,"GLX_NV_float_buffer");
-  glx_nv_multisample_coverage = stringSetFind(e,"GLX_NV_multisample_coverage");
-  glx_nv_present_video = stringSetFind(e,"GLX_NV_present_video");
-  glx_nv_swap_group = stringSetFind(e,"GLX_NV_swap_group");
-  glx_nv_vertex_array_range = stringSetFind(e,"GLX_NV_vertex_array_range");
-  glx_nv_video_capture = stringSetFind(e,"GLX_NV_video_capture");
-  glx_nv_video_output = stringSetFind(e,"GLX_NV_video_output");
-  glx_oml_swap_method = stringSetFind(e,"GLX_OML_swap_method");
-  glx_oml_sync_control = stringSetFind(e,"GLX_OML_sync_control");
-  glx_sgis_blended_overlay = stringSetFind(e,"GLX_SGIS_blended_overlay");
-  glx_sgis_color_range = stringSetFind(e,"GLX_SGIS_color_range");
-  glx_sgis_multisample = stringSetFind(e,"GLX_SGIS_multisample");
-  glx_sgis_shared_multisample = stringSetFind(e,"GLX_SGIS_shared_multisample");
-  glx_sgix_fbconfig = stringSetFind(e,"GLX_SGIX_fbconfig");
-  glx_sgix_hyperpipe = stringSetFind(e,"GLX_SGIX_hyperpipe");
-  glx_sgix_pbuffer = stringSetFind(e,"GLX_SGIX_pbuffer");
-  glx_sgix_swap_barrier = stringSetFind(e,"GLX_SGIX_swap_barrier");
-  glx_sgix_swap_group = stringSetFind(e,"GLX_SGIX_swap_group");
-  glx_sgix_video_resize = stringSetFind(e,"GLX_SGIX_video_resize");
-  glx_sgix_visual_select_group = stringSetFind(e,"GLX_SGIX_visual_select_group");
-  glx_sgi_cushion = stringSetFind(e,"GLX_SGI_cushion");
-  glx_sgi_make_current_read = stringSetFind(e,"GLX_SGI_make_current_read");
-  glx_sgi_swap_control = stringSetFind(e,"GLX_SGI_swap_control");
-  glx_sgi_video_sync = stringSetFind(e,"GLX_SGI_video_sync");
-  glx_sun_get_transparent_index = stringSetFind(e,"GLX_SUN_get_transparent_index");
-  glx_sun_video_resize = stringSetFind(e,"GLX_SUN_video_resize");
-#endif
+  glx_3dfx_multisample                               = stringSetFind(e,"GLX_3DFX_multisample");
+  glx_amd_gpu_association                            = stringSetFind(e,"GLX_AMD_gpu_association");
+  glx_arb_create_context                             = stringSetFind(e,"GLX_ARB_create_context");
+  glx_arb_create_context_profile                     = stringSetFind(e,"GLX_ARB_create_context_profile");
+  glx_arb_create_context_robustness                  = stringSetFind(e,"GLX_ARB_create_context_robustness");
+  glx_arb_fbconfig_float                             = stringSetFind(e,"GLX_ARB_fbconfig_float");
+  glx_arb_framebuffer_srgb                           = stringSetFind(e,"GLX_ARB_framebuffer_sRGB");
+  glx_arb_get_proc_address                           = stringSetFind(e,"GLX_ARB_get_proc_address");
+  glx_arb_multisample                                = stringSetFind(e,"GLX_ARB_multisample");
+  glx_arb_robustness_share_group_isolation           = stringSetFind(e,"GLX_ARB_robustness_share_group_isolation");
+  glx_arb_vertex_buffer_object                       = stringSetFind(e,"GLX_ARB_vertex_buffer_object");
+  glx_ati_pixel_format_float                         = stringSetFind(e,"GLX_ATI_pixel_format_float");
+  glx_ati_render_texture                             = stringSetFind(e,"GLX_ATI_render_texture");
+  glx_ext_create_context_es2_profile                 = stringSetFind(e,"GLX_EXT_create_context_es2_profile");
+  glx_ext_create_context_es_profile                  = stringSetFind(e,"GLX_EXT_create_context_es_profile");
+  glx_ext_fbconfig_packed_float                      = stringSetFind(e,"GLX_EXT_fbconfig_packed_float");
+  glx_ext_framebuffer_srgb                           = stringSetFind(e,"GLX_EXT_framebuffer_sRGB");
+  glx_ext_import_context                             = stringSetFind(e,"GLX_EXT_import_context");
+  glx_ext_swap_control                               = stringSetFind(e,"GLX_EXT_swap_control");
+  glx_ext_swap_control_tear                          = stringSetFind(e,"GLX_EXT_swap_control_tear");
+  glx_ext_texture_from_pixmap                        = stringSetFind(e,"GLX_EXT_texture_from_pixmap");
+  glx_ext_visual_info                                = stringSetFind(e,"GLX_EXT_visual_info");
+  glx_ext_visual_rating                              = stringSetFind(e,"GLX_EXT_visual_rating");
+  glx_intel_swap_event                               = stringSetFind(e,"GLX_INTEL_swap_event");
+  glx_mesa_agp_offset                                = stringSetFind(e,"GLX_MESA_agp_offset");
+  glx_mesa_copy_sub_buffer                           = stringSetFind(e,"GLX_MESA_copy_sub_buffer");
+  glx_mesa_pixmap_colormap                           = stringSetFind(e,"GLX_MESA_pixmap_colormap");
+  glx_mesa_release_buffers                           = stringSetFind(e,"GLX_MESA_release_buffers");
+  glx_mesa_set_3dfx_mode                             = stringSetFind(e,"GLX_MESA_set_3dfx_mode");
+  glx_mesa_swap_control                              = stringSetFind(e,"GLX_MESA_swap_control");
+  glx_nv_copy_image                                  = stringSetFind(e,"GLX_NV_copy_image");
+  glx_nv_float_buffer                                = stringSetFind(e,"GLX_NV_float_buffer");
+  glx_nv_multisample_coverage                        = stringSetFind(e,"GLX_NV_multisample_coverage");
+  glx_nv_present_video                               = stringSetFind(e,"GLX_NV_present_video");
+  glx_nv_swap_group                                  = stringSetFind(e,"GLX_NV_swap_group");
+  glx_nv_vertex_array_range                          = stringSetFind(e,"GLX_NV_vertex_array_range");
+  glx_nv_video_capture                               = stringSetFind(e,"GLX_NV_video_capture");
+  glx_nv_video_output                                = stringSetFind(e,"GLX_NV_video_output");
+  glx_oml_swap_method                                = stringSetFind(e,"GLX_OML_swap_method");
+  glx_oml_sync_control                               = stringSetFind(e,"GLX_OML_sync_control");
+  glx_sgis_blended_overlay                           = stringSetFind(e,"GLX_SGIS_blended_overlay");
+  glx_sgis_color_range                               = stringSetFind(e,"GLX_SGIS_color_range");
+  glx_sgis_multisample                               = stringSetFind(e,"GLX_SGIS_multisample");
+  glx_sgis_shared_multisample                        = stringSetFind(e,"GLX_SGIS_shared_multisample");
+  glx_sgix_fbconfig                                  = stringSetFind(e,"GLX_SGIX_fbconfig");
+  glx_sgix_hyperpipe                                 = stringSetFind(e,"GLX_SGIX_hyperpipe");
+  glx_sgix_pbuffer                                   = stringSetFind(e,"GLX_SGIX_pbuffer");
+  glx_sgix_swap_barrier                              = stringSetFind(e,"GLX_SGIX_swap_barrier");
+  glx_sgix_swap_group                                = stringSetFind(e,"GLX_SGIX_swap_group");
+  glx_sgix_video_resize                              = stringSetFind(e,"GLX_SGIX_video_resize");
+  glx_sgix_visual_select_group                       = stringSetFind(e,"GLX_SGIX_visual_select_group");
+  glx_sgi_cushion                                    = stringSetFind(e,"GLX_SGI_cushion");
+  glx_sgi_make_current_read                          = stringSetFind(e,"GLX_SGI_make_current_read");
+  glx_sgi_swap_control                               = stringSetFind(e,"GLX_SGI_swap_control");
+  glx_sgi_video_sync                                 = stringSetFind(e,"GLX_SGI_video_sync");
+  glx_sun_get_transparent_index                      = stringSetFind(e,"GLX_SUN_get_transparent_index");
+  glx_sun_video_resize                               = stringSetFind(e,"GLX_SUN_video_resize");
+#endif /* REGAL_SYS_GLX */
 
 #if REGAL_SYS_EGL
-  egl_angle_query_surface_pointer = stringSetFind(e,"EGL_ANGLE_query_surface_pointer");
-  egl_angle_surface_d3d_texture_2d_share_handle = stringSetFind(e,"EGL_ANGLE_surface_d3d_texture_2d_share_handle");
-  egl_ext_create_context_robustness = stringSetFind(e,"EGL_EXT_create_context_robustness");
-  egl_ext_multiview_window = stringSetFind(e,"EGL_EXT_multiview_window");
-  egl_hi_colorformats = stringSetFind(e,"EGL_HI_colorformats");
-  egl_img_context_priority = stringSetFind(e,"EGL_IMG_context_priority");
-  egl_khr_config_attribs = stringSetFind(e,"EGL_KHR_config_attribs");
-  egl_khr_create_context = stringSetFind(e,"EGL_KHR_create_context");
-  egl_khr_fence_sync = stringSetFind(e,"EGL_KHR_fence_sync");
-  egl_khr_gl_texture_cubemap_image = stringSetFind(e,"EGL_KHR_gl_texture_cubemap_image");
-  egl_khr_image_base = stringSetFind(e,"EGL_KHR_image_base");
-  egl_khr_image_pixmap = stringSetFind(e,"EGL_KHR_image_pixmap");
-  egl_khr_lock_surface = stringSetFind(e,"EGL_KHR_lock_surface");
-  egl_khr_lock_surface2 = stringSetFind(e,"EGL_KHR_lock_surface2");
-  egl_khr_reusable_sync = stringSetFind(e,"EGL_KHR_reusable_sync");
-  egl_khr_stream = stringSetFind(e,"EGL_KHR_stream");
-  egl_khr_stream_consumer_gltexture = stringSetFind(e,"EGL_KHR_stream_consumer_gltexture");
-  egl_khr_stream_cross_process_fd = stringSetFind(e,"EGL_KHR_stream_cross_process_fd");
-  egl_khr_stream_fifo = stringSetFind(e,"EGL_KHR_stream_fifo");
-  egl_khr_stream_producer_eglsurface = stringSetFind(e,"EGL_KHR_stream_producer_eglsurface");
-  egl_khr_vg_parent_image = stringSetFind(e,"EGL_KHR_vg_parent_image");
-  egl_khr_wait_sync = stringSetFind(e,"EGL_KHR_wait_sync");
-  egl_mesa_drm_image = stringSetFind(e,"EGL_MESA_drm_image");
-  egl_nv_coverage_sample = stringSetFind(e,"EGL_NV_coverage_sample");
-  egl_nv_coverage_sample_resolve = stringSetFind(e,"EGL_NV_coverage_sample_resolve");
-  egl_nv_post_sub_buffer = stringSetFind(e,"EGL_NV_post_sub_buffer");
-  egl_nv_sync = stringSetFind(e,"EGL_NV_sync");
-  egl_nv_system_time = stringSetFind(e,"EGL_NV_system_time");
-#endif
+  egl_angle_query_surface_pointer                    = stringSetFind(e,"EGL_ANGLE_query_surface_pointer");
+  egl_angle_surface_d3d_texture_2d_share_handle      = stringSetFind(e,"EGL_ANGLE_surface_d3d_texture_2d_share_handle");
+  egl_ext_create_context_robustness                  = stringSetFind(e,"EGL_EXT_create_context_robustness");
+  egl_ext_multiview_window                           = stringSetFind(e,"EGL_EXT_multiview_window");
+  egl_hi_colorformats                                = stringSetFind(e,"EGL_HI_colorformats");
+  egl_img_context_priority                           = stringSetFind(e,"EGL_IMG_context_priority");
+  egl_khr_config_attribs                             = stringSetFind(e,"EGL_KHR_config_attribs");
+  egl_khr_create_context                             = stringSetFind(e,"EGL_KHR_create_context");
+  egl_khr_fence_sync                                 = stringSetFind(e,"EGL_KHR_fence_sync");
+  egl_khr_gl_texture_cubemap_image                   = stringSetFind(e,"EGL_KHR_gl_texture_cubemap_image");
+  egl_khr_image_base                                 = stringSetFind(e,"EGL_KHR_image_base");
+  egl_khr_image_pixmap                               = stringSetFind(e,"EGL_KHR_image_pixmap");
+  egl_khr_lock_surface                               = stringSetFind(e,"EGL_KHR_lock_surface");
+  egl_khr_lock_surface2                              = stringSetFind(e,"EGL_KHR_lock_surface2");
+  egl_khr_reusable_sync                              = stringSetFind(e,"EGL_KHR_reusable_sync");
+  egl_khr_stream                                     = stringSetFind(e,"EGL_KHR_stream");
+  egl_khr_stream_consumer_gltexture                  = stringSetFind(e,"EGL_KHR_stream_consumer_gltexture");
+  egl_khr_stream_cross_process_fd                    = stringSetFind(e,"EGL_KHR_stream_cross_process_fd");
+  egl_khr_stream_fifo                                = stringSetFind(e,"EGL_KHR_stream_fifo");
+  egl_khr_stream_producer_eglsurface                 = stringSetFind(e,"EGL_KHR_stream_producer_eglsurface");
+  egl_khr_vg_parent_image                            = stringSetFind(e,"EGL_KHR_vg_parent_image");
+  egl_khr_wait_sync                                  = stringSetFind(e,"EGL_KHR_wait_sync");
+  egl_mesa_drm_image                                 = stringSetFind(e,"EGL_MESA_drm_image");
+  egl_nv_coverage_sample                             = stringSetFind(e,"EGL_NV_coverage_sample");
+  egl_nv_coverage_sample_resolve                     = stringSetFind(e,"EGL_NV_coverage_sample_resolve");
+  egl_nv_post_sub_buffer                             = stringSetFind(e,"EGL_NV_post_sub_buffer");
+  egl_nv_sync                                        = stringSetFind(e,"EGL_NV_sync");
+  egl_nv_system_time                                 = stringSetFind(e,"EGL_NV_system_time");
+#endif /* REGAL_SYS_EGL */
 
   RegalAssert(context.dispatcher.driver.glGetIntegerv);
   RegalAssert(context.dispatcher.driver.glGetBooleanv);
@@ -1771,681 +1771,681 @@
 {
   Internal("ContextInfo::getExtension ",boost::print::quote(ext,'"'));
 
-  if (!strcmp(ext,"GL_3DFX_multisample")) return gl_3dfx_multisample;
-  if (!strcmp(ext,"GL_3DFX_tbuffer")) return gl_3dfx_tbuffer;
-  if (!strcmp(ext,"GL_3DFX_texture_compression_FXT1")) return gl_3dfx_texture_compression_fxt1;
-  if (!strcmp(ext,"GL_AMD_blend_minmax_factor")) return gl_amd_blend_minmax_factor;
-  if (!strcmp(ext,"GL_AMD_compressed_3DC_texture")) return gl_amd_compressed_3dc_texture;
-  if (!strcmp(ext,"GL_AMD_compressed_ATC_texture")) return gl_amd_compressed_atc_texture;
-  if (!strcmp(ext,"GL_AMD_debug_output")) return gl_amd_debug_output;
-  if (!strcmp(ext,"GL_AMD_depth_clamp_separate")) return gl_amd_depth_clamp_separate;
-  if (!strcmp(ext,"GL_AMD_draw_buffers_blend")) return gl_amd_draw_buffers_blend;
-  if (!strcmp(ext,"GL_AMD_interleaved_elements")) return gl_amd_interleaved_elements;
-  if (!strcmp(ext,"GL_AMD_multi_draw_indirect")) return gl_amd_multi_draw_indirect;
-  if (!strcmp(ext,"GL_AMD_name_gen_delete")) return gl_amd_name_gen_delete;
-  if (!strcmp(ext,"GL_AMD_performance_monitor")) return gl_amd_performance_monitor;
-  if (!strcmp(ext,"GL_AMD_pinned_memory")) return gl_amd_pinned_memory;
-  if (!strcmp(ext,"GL_AMD_program_binary_Z400")) return gl_amd_program_binary_z400;
-  if (!strcmp(ext,"GL_AMD_query_buffer_object")) return gl_amd_query_buffer_object;
-  if (!strcmp(ext,"GL_AMD_sample_positions")) return gl_amd_sample_positions;
-  if (!strcmp(ext,"GL_AMD_seamless_cubemap_per_texture")) return gl_amd_seamless_cubemap_per_texture;
-  if (!strcmp(ext,"GL_AMD_sparse_texture")) return gl_amd_sparse_texture;
-  if (!strcmp(ext,"GL_AMD_stencil_operation_extended")) return gl_amd_stencil_operation_extended;
-  if (!strcmp(ext,"GL_AMD_vertex_shader_tessellator")) return gl_amd_vertex_shader_tessellator;
-  if (!strcmp(ext,"GL_ANGLE_framebuffer_blit")) return gl_angle_framebuffer_blit;
-  if (!strcmp(ext,"GL_ANGLE_framebuffer_multisample")) return gl_angle_framebuffer_multisample;
-  if (!strcmp(ext,"GL_ANGLE_instanced_arrays")) return gl_angle_instanced_arrays;
-  if (!strcmp(ext,"GL_ANGLE_pack_reverse_row_order")) return gl_angle_pack_reverse_row_order;
-  if (!strcmp(ext,"GL_ANGLE_program_binary")) return gl_angle_program_binary;
-  if (!strcmp(ext,"GL_ANGLE_texture_compression_dxt1")) return gl_angle_texture_compression_dxt1;
-  if (!strcmp(ext,"GL_ANGLE_texture_compression_dxt3")) return gl_angle_texture_compression_dxt3;
-  if (!strcmp(ext,"GL_ANGLE_texture_compression_dxt5")) return gl_angle_texture_compression_dxt5;
-  if (!strcmp(ext,"GL_ANGLE_texture_usage")) return gl_angle_texture_usage;
-  if (!strcmp(ext,"GL_ANGLE_timer_query")) return gl_angle_timer_query;
-  if (!strcmp(ext,"GL_ANGLE_translated_shader_source")) return gl_angle_translated_shader_source;
-  if (!strcmp(ext,"GL_APPLE_aux_depth_stencil")) return gl_apple_aux_depth_stencil;
-  if (!strcmp(ext,"GL_APPLE_client_storage")) return gl_apple_client_storage;
-  if (!strcmp(ext,"GL_APPLE_copy_texture_levels")) return gl_apple_copy_texture_levels;
-  if (!strcmp(ext,"GL_APPLE_element_array")) return gl_apple_element_array;
-  if (!strcmp(ext,"GL_APPLE_fence")) return gl_apple_fence;
-  if (!strcmp(ext,"GL_APPLE_float_pixels")) return gl_apple_float_pixels;
-  if (!strcmp(ext,"GL_APPLE_flush_buffer_range")) return gl_apple_flush_buffer_range;
-  if (!strcmp(ext,"GL_APPLE_flush_render")) return gl_apple_flush_render;
-  if (!strcmp(ext,"GL_APPLE_framebuffer_multisample")) return gl_apple_framebuffer_multisample;
-  if (!strcmp(ext,"GL_APPLE_object_purgeable")) return gl_apple_object_purgeable;
-  if (!strcmp(ext,"GL_APPLE_pixel_buffer")) return gl_apple_pixel_buffer;
-  if (!strcmp(ext,"GL_APPLE_rgb_422")) return gl_apple_rgb_422;
-  if (!strcmp(ext,"GL_APPLE_row_bytes")) return gl_apple_row_bytes;
-  if (!strcmp(ext,"GL_APPLE_specular_vector")) return gl_apple_specular_vector;
-  if (!strcmp(ext,"GL_APPLE_sync")) return gl_apple_sync;
-  if (!strcmp(ext,"GL_APPLE_texture_max_level")) return gl_apple_texture_max_level;
-  if (!strcmp(ext,"GL_APPLE_texture_range")) return gl_apple_texture_range;
-  if (!strcmp(ext,"GL_APPLE_transform_hint")) return gl_apple_transform_hint;
-  if (!strcmp(ext,"GL_APPLE_vertex_array_object")) return gl_apple_vertex_array_object;
-  if (!strcmp(ext,"GL_APPLE_vertex_array_range")) return gl_apple_vertex_array_range;
-  if (!strcmp(ext,"GL_APPLE_vertex_program_evaluators")) return gl_apple_vertex_program_evaluators;
-  if (!strcmp(ext,"GL_APPLE_ycbcr_422")) return gl_apple_ycbcr_422;
-  if (!strcmp(ext,"GL_ARB_ES2_compatibility")) return gl_arb_es2_compatibility;
-  if (!strcmp(ext,"GL_ARB_ES3_compatibility")) return gl_arb_es3_compatibility;
-  if (!strcmp(ext,"GL_ARB_base_instance")) return gl_arb_base_instance;
-  if (!strcmp(ext,"GL_ARB_bindless_texture")) return gl_arb_bindless_texture;
-  if (!strcmp(ext,"GL_ARB_blend_func_extended")) return gl_arb_blend_func_extended;
-  if (!strcmp(ext,"GL_ARB_buffer_storage")) return gl_arb_buffer_storage;
-  if (!strcmp(ext,"GL_ARB_cl_event")) return gl_arb_cl_event;
-  if (!strcmp(ext,"GL_ARB_clear_buffer_object")) return gl_arb_clear_buffer_object;
-  if (!strcmp(ext,"GL_ARB_clear_texture")) return gl_arb_clear_texture;
-  if (!strcmp(ext,"GL_ARB_color_buffer_float")) return gl_arb_color_buffer_float;
-  if (!strcmp(ext,"GL_ARB_compressed_texture_pixel_storage")) return gl_arb_compressed_texture_pixel_storage;
-  if (!strcmp(ext,"GL_ARB_compute_shader")) return gl_arb_compute_shader;
-  if (!strcmp(ext,"GL_ARB_compute_variable_group_size")) return gl_arb_compute_variable_group_size;
-  if (!strcmp(ext,"GL_ARB_copy_buffer")) return gl_arb_copy_buffer;
-  if (!strcmp(ext,"GL_ARB_copy_image")) return gl_arb_copy_image;
-  if (!strcmp(ext,"GL_ARB_debug_output")) return gl_arb_debug_output;
-  if (!strcmp(ext,"GL_ARB_depth_buffer_float")) return gl_arb_depth_buffer_float;
-  if (!strcmp(ext,"GL_ARB_depth_clamp")) return gl_arb_depth_clamp;
-  if (!strcmp(ext,"GL_ARB_depth_texture")) return gl_arb_depth_texture;
-  if (!strcmp(ext,"GL_ARB_draw_buffers")) return gl_arb_draw_buffers;
-  if (!strcmp(ext,"GL_ARB_draw_buffers_blend")) return gl_arb_draw_buffers_blend;
-  if (!strcmp(ext,"GL_ARB_draw_elements_base_vertex")) return gl_arb_draw_elements_base_vertex;
-  if (!strcmp(ext,"GL_ARB_draw_indirect")) return gl_arb_draw_indirect;
-  if (!strcmp(ext,"GL_ARB_draw_instanced")) return gl_arb_draw_instanced;
-  if (!strcmp(ext,"GL_ARB_enhanced_layouts")) return gl_arb_enhanced_layouts;
-  if (!strcmp(ext,"GL_ARB_explicit_uniform_location")) return gl_arb_explicit_uniform_location;
-  if (!strcmp(ext,"GL_ARB_fragment_program")) return gl_arb_fragment_program;
-  if (!strcmp(ext,"GL_ARB_fragment_shader")) return gl_arb_fragment_shader;
-  if (!strcmp(ext,"GL_ARB_framebuffer_no_attachments")) return gl_arb_framebuffer_no_attachments;
-  if (!strcmp(ext,"GL_ARB_framebuffer_object")) return gl_arb_framebuffer_object;
-  if (!strcmp(ext,"GL_ARB_framebuffer_sRGB")) return gl_arb_framebuffer_srgb;
-  if (!strcmp(ext,"GL_ARB_geometry_shader4")) return gl_arb_geometry_shader4;
-  if (!strcmp(ext,"GL_ARB_get_program_binary")) return gl_arb_get_program_binary;
-  if (!strcmp(ext,"GL_ARB_gpu_shader5")) return gl_arb_gpu_shader5;
-  if (!strcmp(ext,"GL_ARB_gpu_shader_fp64")) return gl_arb_gpu_shader_fp64;
-  if (!strcmp(ext,"GL_ARB_half_float_pixel")) return gl_arb_half_float_pixel;
-  if (!strcmp(ext,"GL_ARB_half_float_vertex")) return gl_arb_half_float_vertex;
-  if (!strcmp(ext,"GL_ARB_imaging")) return gl_arb_imaging;
-  if (!strcmp(ext,"GL_ARB_indirect_parameters")) return gl_arb_indirect_parameters;
-  if (!strcmp(ext,"GL_ARB_instanced_arrays")) return gl_arb_instanced_arrays;
-  if (!strcmp(ext,"GL_ARB_internalformat_query")) return gl_arb_internalformat_query;
-  if (!strcmp(ext,"GL_ARB_internalformat_query2")) return gl_arb_internalformat_query2;
-  if (!strcmp(ext,"GL_ARB_invalidate_subdata")) return gl_arb_invalidate_subdata;
-  if (!strcmp(ext,"GL_ARB_map_buffer_alignment")) return gl_arb_map_buffer_alignment;
-  if (!strcmp(ext,"GL_ARB_map_buffer_range")) return gl_arb_map_buffer_range;
-  if (!strcmp(ext,"GL_ARB_matrix_palette")) return gl_arb_matrix_palette;
-  if (!strcmp(ext,"GL_ARB_multi_bind")) return gl_arb_multi_bind;
-  if (!strcmp(ext,"GL_ARB_multi_draw_indirect")) return gl_arb_multi_draw_indirect;
-  if (!strcmp(ext,"GL_ARB_multisample")) return gl_arb_multisample;
-  if (!strcmp(ext,"GL_ARB_multitexture")) return gl_arb_multitexture;
-  if (!strcmp(ext,"GL_ARB_occlusion_query")) return gl_arb_occlusion_query;
-  if (!strcmp(ext,"GL_ARB_occlusion_query2")) return gl_arb_occlusion_query2;
-  if (!strcmp(ext,"GL_ARB_pixel_buffer_object")) return gl_arb_pixel_buffer_object;
-  if (!strcmp(ext,"GL_ARB_point_parameters")) return gl_arb_point_parameters;
-  if (!strcmp(ext,"GL_ARB_point_sprite")) return gl_arb_point_sprite;
-  if (!strcmp(ext,"GL_ARB_program_interface_query")) return gl_arb_program_interface_query;
-  if (!strcmp(ext,"GL_ARB_provoking_vertex")) return gl_arb_provoking_vertex;
-  if (!strcmp(ext,"GL_ARB_query_buffer_object")) return gl_arb_query_buffer_object;
-  if (!strcmp(ext,"GL_ARB_robustness")) return gl_arb_robustness;
-  if (!strcmp(ext,"GL_ARB_sample_shading")) return gl_arb_sample_shading;
-  if (!strcmp(ext,"GL_ARB_sampler_objects")) return gl_arb_sampler_objects;
-  if (!strcmp(ext,"GL_ARB_seamless_cube_map")) return gl_arb_seamless_cube_map;
-  if (!strcmp(ext,"GL_ARB_separate_shader_objects")) return gl_arb_separate_shader_objects;
-  if (!strcmp(ext,"GL_ARB_shader_atomic_counters")) return gl_arb_shader_atomic_counters;
-  if (!strcmp(ext,"GL_ARB_shader_image_load_store")) return gl_arb_shader_image_load_store;
-  if (!strcmp(ext,"GL_ARB_shader_objects")) return gl_arb_shader_objects;
-  if (!strcmp(ext,"GL_ARB_shader_storage_buffer_object")) return gl_arb_shader_storage_buffer_object;
-  if (!strcmp(ext,"GL_ARB_shader_subroutine")) return gl_arb_shader_subroutine;
-  if (!strcmp(ext,"GL_ARB_shading_language_100")) return gl_arb_shading_language_100;
-  if (!strcmp(ext,"GL_ARB_shading_language_include")) return gl_arb_shading_language_include;
-  if (!strcmp(ext,"GL_ARB_shadow")) return gl_arb_shadow;
-  if (!strcmp(ext,"GL_ARB_shadow_ambient")) return gl_arb_shadow_ambient;
-  if (!strcmp(ext,"GL_ARB_sparse_texture")) return gl_arb_sparse_texture;
-  if (!strcmp(ext,"GL_ARB_stencil_texturing")) return gl_arb_stencil_texturing;
-  if (!strcmp(ext,"GL_ARB_sync")) return gl_arb_sync;
-  if (!strcmp(ext,"GL_ARB_tessellation_shader")) return gl_arb_tessellation_shader;
-  if (!strcmp(ext,"GL_ARB_texture_border_clamp")) return gl_arb_texture_border_clamp;
-  if (!strcmp(ext,"GL_ARB_texture_buffer_object")) return gl_arb_texture_buffer_object;
-  if (!strcmp(ext,"GL_ARB_texture_buffer_range")) return gl_arb_texture_buffer_range;
-  if (!strcmp(ext,"GL_ARB_texture_compression")) return gl_arb_texture_compression;
-  if (!strcmp(ext,"GL_ARB_texture_compression_bptc")) return gl_arb_texture_compression_bptc;
-  if (!strcmp(ext,"GL_ARB_texture_compression_rgtc")) return gl_arb_texture_compression_rgtc;
-  if (!strcmp(ext,"GL_ARB_texture_cube_map")) return gl_arb_texture_cube_map;
-  if (!strcmp(ext,"GL_ARB_texture_cube_map_array")) return gl_arb_texture_cube_map_array;
-  if (!strcmp(ext,"GL_ARB_texture_env_combine")) return gl_arb_texture_env_combine;
-  if (!strcmp(ext,"GL_ARB_texture_env_dot3")) return gl_arb_texture_env_dot3;
-  if (!strcmp(ext,"GL_ARB_texture_float")) return gl_arb_texture_float;
-  if (!strcmp(ext,"GL_ARB_texture_gather")) return gl_arb_texture_gather;
-  if (!strcmp(ext,"GL_ARB_texture_mirror_clamp_to_edge")) return gl_arb_texture_mirror_clamp_to_edge;
-  if (!strcmp(ext,"GL_ARB_texture_mirrored_repeat")) return gl_arb_texture_mirrored_repeat;
-  if (!strcmp(ext,"GL_ARB_texture_multisample")) return gl_arb_texture_multisample;
-  if (!strcmp(ext,"GL_ARB_texture_rectangle")) return gl_arb_texture_rectangle;
-  if (!strcmp(ext,"GL_ARB_texture_rg")) return gl_arb_texture_rg;
-  if (!strcmp(ext,"GL_ARB_texture_rgb10_a2ui")) return gl_arb_texture_rgb10_a2ui;
-  if (!strcmp(ext,"GL_ARB_texture_storage")) return gl_arb_texture_storage;
-  if (!strcmp(ext,"GL_ARB_texture_storage_multisample")) return gl_arb_texture_storage_multisample;
-  if (!strcmp(ext,"GL_ARB_texture_swizzle")) return gl_arb_texture_swizzle;
-  if (!strcmp(ext,"GL_ARB_texture_view")) return gl_arb_texture_view;
-  if (!strcmp(ext,"GL_ARB_timer_query")) return gl_arb_timer_query;
-  if (!strcmp(ext,"GL_ARB_transform_feedback2")) return gl_arb_transform_feedback2;
-  if (!strcmp(ext,"GL_ARB_transform_feedback3")) return gl_arb_transform_feedback3;
-  if (!strcmp(ext,"GL_ARB_transform_feedback_instanced")) return gl_arb_transform_feedback_instanced;
-  if (!strcmp(ext,"GL_ARB_transpose_matrix")) return gl_arb_transpose_matrix;
-  if (!strcmp(ext,"GL_ARB_uniform_buffer_object")) return gl_arb_uniform_buffer_object;
-  if (!strcmp(ext,"GL_ARB_vertex_array_object")) return gl_arb_vertex_array_object;
-  if (!strcmp(ext,"GL_ARB_vertex_attrib_64bit")) return gl_arb_vertex_attrib_64bit;
-  if (!strcmp(ext,"GL_ARB_vertex_attrib_binding")) return gl_arb_vertex_attrib_binding;
-  if (!strcmp(ext,"GL_ARB_vertex_blend")) return gl_arb_vertex_blend;
-  if (!strcmp(ext,"GL_ARB_vertex_buffer_object")) return gl_arb_vertex_buffer_object;
-  if (!strcmp(ext,"GL_ARB_vertex_program")) return gl_arb_vertex_program;
-  if (!strcmp(ext,"GL_ARB_vertex_shader")) return gl_arb_vertex_shader;
-  if (!strcmp(ext,"GL_ARB_vertex_type_2_10_10_10_rev")) return gl_arb_vertex_type_2_10_10_10_rev;
-  if (!strcmp(ext,"GL_ARB_viewport_array")) return gl_arb_viewport_array;
-  if (!strcmp(ext,"GL_ARB_window_pos")) return gl_arb_window_pos;
-  if (!strcmp(ext,"GL_ARM_mali_program_binary")) return gl_arm_mali_program_binary;
-  if (!strcmp(ext,"GL_ARM_mali_shader_binary")) return gl_arm_mali_shader_binary;
-  if (!strcmp(ext,"GL_ATI_draw_buffers")) return gl_ati_draw_buffers;
-  if (!strcmp(ext,"GL_ATI_element_array")) return gl_ati_element_array;
-  if (!strcmp(ext,"GL_ATI_envmap_bumpmap")) return gl_ati_envmap_bumpmap;
-  if (!strcmp(ext,"GL_ATI_fragment_shader")) return gl_ati_fragment_shader;
-  if (!strcmp(ext,"GL_ATI_map_object_buffer")) return gl_ati_map_object_buffer;
-  if (!strcmp(ext,"GL_ATI_meminfo")) return gl_ati_meminfo;
-  if (!strcmp(ext,"GL_ATI_pn_triangles")) return gl_ati_pn_triangles;
-  if (!strcmp(ext,"GL_ATI_separate_stencil")) return gl_ati_separate_stencil;
-  if (!strcmp(ext,"GL_ATI_text_fragment_shader")) return gl_ati_text_fragment_shader;
-  if (!strcmp(ext,"GL_ATI_texture_compression_3dc")) return gl_ati_texture_compression_3dc;
-  if (!strcmp(ext,"GL_ATI_texture_env_combine3")) return gl_ati_texture_env_combine3;
-  if (!strcmp(ext,"GL_ATI_texture_float")) return gl_ati_texture_float;
-  if (!strcmp(ext,"GL_ATI_texture_mirror_once")) return gl_ati_texture_mirror_once;
-  if (!strcmp(ext,"GL_ATI_vertex_array_object")) return gl_ati_vertex_array_object;
-  if (!strcmp(ext,"GL_ATI_vertex_attrib_array_object")) return gl_ati_vertex_attrib_array_object;
-  if (!strcmp(ext,"GL_ATI_vertex_streams")) return gl_ati_vertex_streams;
-  if (!strcmp(ext,"GL_DMP_shader_binary")) return gl_dmp_shader_binary;
-  if (!strcmp(ext,"GL_EXT_422_pixels")) return gl_ext_422_pixels;
-  if (!strcmp(ext,"GL_EXT_Cg_shader")) return gl_ext_cg_shader;
-  if (!strcmp(ext,"GL_EXT_abgr")) return gl_ext_abgr;
-  if (!strcmp(ext,"GL_EXT_bgra")) return gl_ext_bgra;
-  if (!strcmp(ext,"GL_EXT_bindable_uniform")) return gl_ext_bindable_uniform;
-  if (!strcmp(ext,"GL_EXT_blend_color")) return gl_ext_blend_color;
-  if (!strcmp(ext,"GL_EXT_blend_equation_separate")) return gl_ext_blend_equation_separate;
-  if (!strcmp(ext,"GL_EXT_blend_func_separate")) return gl_ext_blend_func_separate;
-  if (!strcmp(ext,"GL_EXT_blend_minmax")) return gl_ext_blend_minmax;
-  if (!strcmp(ext,"GL_EXT_blend_subtract")) return gl_ext_blend_subtract;
-  if (!strcmp(ext,"GL_EXT_clip_volume_hint")) return gl_ext_clip_volume_hint;
-  if (!strcmp(ext,"GL_EXT_cmyka")) return gl_ext_cmyka;
-  if (!strcmp(ext,"GL_EXT_color_buffer_half_float")) return gl_ext_color_buffer_half_float;
-  if (!strcmp(ext,"GL_EXT_color_subtable")) return gl_ext_color_subtable;
-  if (!strcmp(ext,"GL_EXT_compiled_vertex_array")) return gl_ext_compiled_vertex_array;
-  if (!strcmp(ext,"GL_EXT_convolution")) return gl_ext_convolution;
-  if (!strcmp(ext,"GL_EXT_coordinate_frame")) return gl_ext_coordinate_frame;
-  if (!strcmp(ext,"GL_EXT_copy_texture")) return gl_ext_copy_texture;
-  if (!strcmp(ext,"GL_EXT_cull_vertex")) return gl_ext_cull_vertex;
-  if (!strcmp(ext,"GL_EXT_debug_label")) return gl_ext_debug_label;
-  if (!strcmp(ext,"GL_EXT_debug_marker")) return gl_ext_debug_marker;
-  if (!strcmp(ext,"GL_EXT_depth_bounds_test")) return gl_ext_depth_bounds_test;
-  if (!strcmp(ext,"GL_EXT_direct_state_access")) return gl_ext_direct_state_access;
-  if (!strcmp(ext,"GL_EXT_discard_framebuffer")) return gl_ext_discard_framebuffer;
-  if (!strcmp(ext,"GL_EXT_disjoint_timer_query")) return gl_ext_disjoint_timer_query;
-  if (!strcmp(ext,"GL_EXT_draw_buffers2")) return gl_ext_draw_buffers2;
-  if (!strcmp(ext,"GL_EXT_draw_instanced")) return gl_ext_draw_instanced;
-  if (!strcmp(ext,"GL_EXT_draw_range_elements")) return gl_ext_draw_range_elements;
-  if (!strcmp(ext,"GL_EXT_fog_coord")) return gl_ext_fog_coord;
-  if (!strcmp(ext,"GL_EXT_fragment_lighting")) return gl_ext_fragment_lighting;
-  if (!strcmp(ext,"GL_EXT_framebuffer_blit")) return gl_ext_framebuffer_blit;
-  if (!strcmp(ext,"GL_EXT_framebuffer_multisample")) return gl_ext_framebuffer_multisample;
+  if (!strcmp(ext,"GL_3DFX_multisample"))                      return gl_3dfx_multisample;
+  if (!strcmp(ext,"GL_3DFX_tbuffer"))                          return gl_3dfx_tbuffer;
+  if (!strcmp(ext,"GL_3DFX_texture_compression_FXT1"))         return gl_3dfx_texture_compression_fxt1;
+  if (!strcmp(ext,"GL_AMD_blend_minmax_factor"))               return gl_amd_blend_minmax_factor;
+  if (!strcmp(ext,"GL_AMD_compressed_3DC_texture"))            return gl_amd_compressed_3dc_texture;
+  if (!strcmp(ext,"GL_AMD_compressed_ATC_texture"))            return gl_amd_compressed_atc_texture;
+  if (!strcmp(ext,"GL_AMD_debug_output"))                      return gl_amd_debug_output;
+  if (!strcmp(ext,"GL_AMD_depth_clamp_separate"))              return gl_amd_depth_clamp_separate;
+  if (!strcmp(ext,"GL_AMD_draw_buffers_blend"))                return gl_amd_draw_buffers_blend;
+  if (!strcmp(ext,"GL_AMD_interleaved_elements"))              return gl_amd_interleaved_elements;
+  if (!strcmp(ext,"GL_AMD_multi_draw_indirect"))               return gl_amd_multi_draw_indirect;
+  if (!strcmp(ext,"GL_AMD_name_gen_delete"))                   return gl_amd_name_gen_delete;
+  if (!strcmp(ext,"GL_AMD_performance_monitor"))               return gl_amd_performance_monitor;
+  if (!strcmp(ext,"GL_AMD_pinned_memory"))                     return gl_amd_pinned_memory;
+  if (!strcmp(ext,"GL_AMD_program_binary_Z400"))               return gl_amd_program_binary_z400;
+  if (!strcmp(ext,"GL_AMD_query_buffer_object"))               return gl_amd_query_buffer_object;
+  if (!strcmp(ext,"GL_AMD_sample_positions"))                  return gl_amd_sample_positions;
+  if (!strcmp(ext,"GL_AMD_seamless_cubemap_per_texture"))      return gl_amd_seamless_cubemap_per_texture;
+  if (!strcmp(ext,"GL_AMD_sparse_texture"))                    return gl_amd_sparse_texture;
+  if (!strcmp(ext,"GL_AMD_stencil_operation_extended"))        return gl_amd_stencil_operation_extended;
+  if (!strcmp(ext,"GL_AMD_vertex_shader_tessellator"))         return gl_amd_vertex_shader_tessellator;
+  if (!strcmp(ext,"GL_ANGLE_framebuffer_blit"))                return gl_angle_framebuffer_blit;
+  if (!strcmp(ext,"GL_ANGLE_framebuffer_multisample"))         return gl_angle_framebuffer_multisample;
+  if (!strcmp(ext,"GL_ANGLE_instanced_arrays"))                return gl_angle_instanced_arrays;
+  if (!strcmp(ext,"GL_ANGLE_pack_reverse_row_order"))          return gl_angle_pack_reverse_row_order;
+  if (!strcmp(ext,"GL_ANGLE_program_binary"))                  return gl_angle_program_binary;
+  if (!strcmp(ext,"GL_ANGLE_texture_compression_dxt1"))        return gl_angle_texture_compression_dxt1;
+  if (!strcmp(ext,"GL_ANGLE_texture_compression_dxt3"))        return gl_angle_texture_compression_dxt3;
+  if (!strcmp(ext,"GL_ANGLE_texture_compression_dxt5"))        return gl_angle_texture_compression_dxt5;
+  if (!strcmp(ext,"GL_ANGLE_texture_usage"))                   return gl_angle_texture_usage;
+  if (!strcmp(ext,"GL_ANGLE_timer_query"))                     return gl_angle_timer_query;
+  if (!strcmp(ext,"GL_ANGLE_translated_shader_source"))        return gl_angle_translated_shader_source;
+  if (!strcmp(ext,"GL_APPLE_aux_depth_stencil"))               return gl_apple_aux_depth_stencil;
+  if (!strcmp(ext,"GL_APPLE_client_storage"))                  return gl_apple_client_storage;
+  if (!strcmp(ext,"GL_APPLE_copy_texture_levels"))             return gl_apple_copy_texture_levels;
+  if (!strcmp(ext,"GL_APPLE_element_array"))                   return gl_apple_element_array;
+  if (!strcmp(ext,"GL_APPLE_fence"))                           return gl_apple_fence;
+  if (!strcmp(ext,"GL_APPLE_float_pixels"))                    return gl_apple_float_pixels;
+  if (!strcmp(ext,"GL_APPLE_flush_buffer_range"))              return gl_apple_flush_buffer_range;
+  if (!strcmp(ext,"GL_APPLE_flush_render"))                    return gl_apple_flush_render;
+  if (!strcmp(ext,"GL_APPLE_framebuffer_multisample"))         return gl_apple_framebuffer_multisample;
+  if (!strcmp(ext,"GL_APPLE_object_purgeable"))                return gl_apple_object_purgeable;
+  if (!strcmp(ext,"GL_APPLE_pixel_buffer"))                    return gl_apple_pixel_buffer;
+  if (!strcmp(ext,"GL_APPLE_rgb_422"))                         return gl_apple_rgb_422;
+  if (!strcmp(ext,"GL_APPLE_row_bytes"))                       return gl_apple_row_bytes;
+  if (!strcmp(ext,"GL_APPLE_specular_vector"))                 return gl_apple_specular_vector;
+  if (!strcmp(ext,"GL_APPLE_sync"))                            return gl_apple_sync;
+  if (!strcmp(ext,"GL_APPLE_texture_max_level"))               return gl_apple_texture_max_level;
+  if (!strcmp(ext,"GL_APPLE_texture_range"))                   return gl_apple_texture_range;
+  if (!strcmp(ext,"GL_APPLE_transform_hint"))                  return gl_apple_transform_hint;
+  if (!strcmp(ext,"GL_APPLE_vertex_array_object"))             return gl_apple_vertex_array_object;
+  if (!strcmp(ext,"GL_APPLE_vertex_array_range"))              return gl_apple_vertex_array_range;
+  if (!strcmp(ext,"GL_APPLE_vertex_program_evaluators"))       return gl_apple_vertex_program_evaluators;
+  if (!strcmp(ext,"GL_APPLE_ycbcr_422"))                       return gl_apple_ycbcr_422;
+  if (!strcmp(ext,"GL_ARB_ES2_compatibility"))                 return gl_arb_es2_compatibility;
+  if (!strcmp(ext,"GL_ARB_ES3_compatibility"))                 return gl_arb_es3_compatibility;
+  if (!strcmp(ext,"GL_ARB_base_instance"))                     return gl_arb_base_instance;
+  if (!strcmp(ext,"GL_ARB_bindless_texture"))                  return gl_arb_bindless_texture;
+  if (!strcmp(ext,"GL_ARB_blend_func_extended"))               return gl_arb_blend_func_extended;
+  if (!strcmp(ext,"GL_ARB_buffer_storage"))                    return gl_arb_buffer_storage;
+  if (!strcmp(ext,"GL_ARB_cl_event"))                          return gl_arb_cl_event;
+  if (!strcmp(ext,"GL_ARB_clear_buffer_object"))               return gl_arb_clear_buffer_object;
+  if (!strcmp(ext,"GL_ARB_clear_texture"))                     return gl_arb_clear_texture;
+  if (!strcmp(ext,"GL_ARB_color_buffer_float"))                return gl_arb_color_buffer_float;
+  if (!strcmp(ext,"GL_ARB_compressed_texture_pixel_storage"))  return gl_arb_compressed_texture_pixel_storage;
+  if (!strcmp(ext,"GL_ARB_compute_shader"))                    return gl_arb_compute_shader;
+  if (!strcmp(ext,"GL_ARB_compute_variable_group_size"))       return gl_arb_compute_variable_group_size;
+  if (!strcmp(ext,"GL_ARB_copy_buffer"))                       return gl_arb_copy_buffer;
+  if (!strcmp(ext,"GL_ARB_copy_image"))                        return gl_arb_copy_image;
+  if (!strcmp(ext,"GL_ARB_debug_output"))                      return gl_arb_debug_output;
+  if (!strcmp(ext,"GL_ARB_depth_buffer_float"))                return gl_arb_depth_buffer_float;
+  if (!strcmp(ext,"GL_ARB_depth_clamp"))                       return gl_arb_depth_clamp;
+  if (!strcmp(ext,"GL_ARB_depth_texture"))                     return gl_arb_depth_texture;
+  if (!strcmp(ext,"GL_ARB_draw_buffers"))                      return gl_arb_draw_buffers;
+  if (!strcmp(ext,"GL_ARB_draw_buffers_blend"))                return gl_arb_draw_buffers_blend;
+  if (!strcmp(ext,"GL_ARB_draw_elements_base_vertex"))         return gl_arb_draw_elements_base_vertex;
+  if (!strcmp(ext,"GL_ARB_draw_indirect"))                     return gl_arb_draw_indirect;
+  if (!strcmp(ext,"GL_ARB_draw_instanced"))                    return gl_arb_draw_instanced;
+  if (!strcmp(ext,"GL_ARB_enhanced_layouts"))                  return gl_arb_enhanced_layouts;
+  if (!strcmp(ext,"GL_ARB_explicit_uniform_location"))         return gl_arb_explicit_uniform_location;
+  if (!strcmp(ext,"GL_ARB_fragment_program"))                  return gl_arb_fragment_program;
+  if (!strcmp(ext,"GL_ARB_fragment_shader"))                   return gl_arb_fragment_shader;
+  if (!strcmp(ext,"GL_ARB_framebuffer_no_attachments"))        return gl_arb_framebuffer_no_attachments;
+  if (!strcmp(ext,"GL_ARB_framebuffer_object"))                return gl_arb_framebuffer_object;
+  if (!strcmp(ext,"GL_ARB_framebuffer_sRGB"))                  return gl_arb_framebuffer_srgb;
+  if (!strcmp(ext,"GL_ARB_geometry_shader4"))                  return gl_arb_geometry_shader4;
+  if (!strcmp(ext,"GL_ARB_get_program_binary"))                return gl_arb_get_program_binary;
+  if (!strcmp(ext,"GL_ARB_gpu_shader5"))                       return gl_arb_gpu_shader5;
+  if (!strcmp(ext,"GL_ARB_gpu_shader_fp64"))                   return gl_arb_gpu_shader_fp64;
+  if (!strcmp(ext,"GL_ARB_half_float_pixel"))                  return gl_arb_half_float_pixel;
+  if (!strcmp(ext,"GL_ARB_half_float_vertex"))                 return gl_arb_half_float_vertex;
+  if (!strcmp(ext,"GL_ARB_imaging"))                           return gl_arb_imaging;
+  if (!strcmp(ext,"GL_ARB_indirect_parameters"))               return gl_arb_indirect_parameters;
+  if (!strcmp(ext,"GL_ARB_instanced_arrays"))                  return gl_arb_instanced_arrays;
+  if (!strcmp(ext,"GL_ARB_internalformat_query"))              return gl_arb_internalformat_query;
+  if (!strcmp(ext,"GL_ARB_internalformat_query2"))             return gl_arb_internalformat_query2;
+  if (!strcmp(ext,"GL_ARB_invalidate_subdata"))                return gl_arb_invalidate_subdata;
+  if (!strcmp(ext,"GL_ARB_map_buffer_alignment"))              return gl_arb_map_buffer_alignment;
+  if (!strcmp(ext,"GL_ARB_map_buffer_range"))                  return gl_arb_map_buffer_range;
+  if (!strcmp(ext,"GL_ARB_matrix_palette"))                    return gl_arb_matrix_palette;
+  if (!strcmp(ext,"GL_ARB_multi_bind"))                        return gl_arb_multi_bind;
+  if (!strcmp(ext,"GL_ARB_multi_draw_indirect"))               return gl_arb_multi_draw_indirect;
+  if (!strcmp(ext,"GL_ARB_multisample"))                       return gl_arb_multisample;
+  if (!strcmp(ext,"GL_ARB_multitexture"))                      return gl_arb_multitexture;
+  if (!strcmp(ext,"GL_ARB_occlusion_query"))                   return gl_arb_occlusion_query;
+  if (!strcmp(ext,"GL_ARB_occlusion_query2"))                  return gl_arb_occlusion_query2;
+  if (!strcmp(ext,"GL_ARB_pixel_buffer_object"))               return gl_arb_pixel_buffer_object;
+  if (!strcmp(ext,"GL_ARB_point_parameters"))                  return gl_arb_point_parameters;
+  if (!strcmp(ext,"GL_ARB_point_sprite"))                      return gl_arb_point_sprite;
+  if (!strcmp(ext,"GL_ARB_program_interface_query"))           return gl_arb_program_interface_query;
+  if (!strcmp(ext,"GL_ARB_provoking_vertex"))                  return gl_arb_provoking_vertex;
+  if (!strcmp(ext,"GL_ARB_query_buffer_object"))               return gl_arb_query_buffer_object;
+  if (!strcmp(ext,"GL_ARB_robustness"))                        return gl_arb_robustness;
+  if (!strcmp(ext,"GL_ARB_sample_shading"))                    return gl_arb_sample_shading;
+  if (!strcmp(ext,"GL_ARB_sampler_objects"))                   return gl_arb_sampler_objects;
+  if (!strcmp(ext,"GL_ARB_seamless_cube_map"))                 return gl_arb_seamless_cube_map;
+  if (!strcmp(ext,"GL_ARB_separate_shader_objects"))           return gl_arb_separate_shader_objects;
+  if (!strcmp(ext,"GL_ARB_shader_atomic_counters"))            return gl_arb_shader_atomic_counters;
+  if (!strcmp(ext,"GL_ARB_shader_image_load_store"))           return gl_arb_shader_image_load_store;
+  if (!strcmp(ext,"GL_ARB_shader_objects"))                    return gl_arb_shader_objects;
+  if (!strcmp(ext,"GL_ARB_shader_storage_buffer_object"))      return gl_arb_shader_storage_buffer_object;
+  if (!strcmp(ext,"GL_ARB_shader_subroutine"))                 return gl_arb_shader_subroutine;
+  if (!strcmp(ext,"GL_ARB_shading_language_100"))              return gl_arb_shading_language_100;
+  if (!strcmp(ext,"GL_ARB_shading_language_include"))          return gl_arb_shading_language_include;
+  if (!strcmp(ext,"GL_ARB_shadow"))                            return gl_arb_shadow;
+  if (!strcmp(ext,"GL_ARB_shadow_ambient"))                    return gl_arb_shadow_ambient;
+  if (!strcmp(ext,"GL_ARB_sparse_texture"))                    return gl_arb_sparse_texture;
+  if (!strcmp(ext,"GL_ARB_stencil_texturing"))                 return gl_arb_stencil_texturing;
+  if (!strcmp(ext,"GL_ARB_sync"))                              return gl_arb_sync;
+  if (!strcmp(ext,"GL_ARB_tessellation_shader"))               return gl_arb_tessellation_shader;
+  if (!strcmp(ext,"GL_ARB_texture_border_clamp"))              return gl_arb_texture_border_clamp;
+  if (!strcmp(ext,"GL_ARB_texture_buffer_object"))             return gl_arb_texture_buffer_object;
+  if (!strcmp(ext,"GL_ARB_texture_buffer_range"))              return gl_arb_texture_buffer_range;
+  if (!strcmp(ext,"GL_ARB_texture_compression"))               return gl_arb_texture_compression;
+  if (!strcmp(ext,"GL_ARB_texture_compression_bptc"))          return gl_arb_texture_compression_bptc;
+  if (!strcmp(ext,"GL_ARB_texture_compression_rgtc"))          return gl_arb_texture_compression_rgtc;
+  if (!strcmp(ext,"GL_ARB_texture_cube_map"))                  return gl_arb_texture_cube_map;
+  if (!strcmp(ext,"GL_ARB_texture_cube_map_array"))            return gl_arb_texture_cube_map_array;
+  if (!strcmp(ext,"GL_ARB_texture_env_combine"))               return gl_arb_texture_env_combine;
+  if (!strcmp(ext,"GL_ARB_texture_env_dot3"))                  return gl_arb_texture_env_dot3;
+  if (!strcmp(ext,"GL_ARB_texture_float"))                     return gl_arb_texture_float;
+  if (!strcmp(ext,"GL_ARB_texture_gather"))                    return gl_arb_texture_gather;
+  if (!strcmp(ext,"GL_ARB_texture_mirror_clamp_to_edge"))      return gl_arb_texture_mirror_clamp_to_edge;
+  if (!strcmp(ext,"GL_ARB_texture_mirrored_repeat"))           return gl_arb_texture_mirrored_repeat;
+  if (!strcmp(ext,"GL_ARB_texture_multisample"))               return gl_arb_texture_multisample;
+  if (!strcmp(ext,"GL_ARB_texture_rectangle"))                 return gl_arb_texture_rectangle;
+  if (!strcmp(ext,"GL_ARB_texture_rg"))                        return gl_arb_texture_rg;
+  if (!strcmp(ext,"GL_ARB_texture_rgb10_a2ui"))                return gl_arb_texture_rgb10_a2ui;
+  if (!strcmp(ext,"GL_ARB_texture_storage"))                   return gl_arb_texture_storage;
+  if (!strcmp(ext,"GL_ARB_texture_storage_multisample"))       return gl_arb_texture_storage_multisample;
+  if (!strcmp(ext,"GL_ARB_texture_swizzle"))                   return gl_arb_texture_swizzle;
+  if (!strcmp(ext,"GL_ARB_texture_view"))                      return gl_arb_texture_view;
+  if (!strcmp(ext,"GL_ARB_timer_query"))                       return gl_arb_timer_query;
+  if (!strcmp(ext,"GL_ARB_transform_feedback2"))               return gl_arb_transform_feedback2;
+  if (!strcmp(ext,"GL_ARB_transform_feedback3"))               return gl_arb_transform_feedback3;
+  if (!strcmp(ext,"GL_ARB_transform_feedback_instanced"))      return gl_arb_transform_feedback_instanced;
+  if (!strcmp(ext,"GL_ARB_transpose_matrix"))                  return gl_arb_transpose_matrix;
+  if (!strcmp(ext,"GL_ARB_uniform_buffer_object"))             return gl_arb_uniform_buffer_object;
+  if (!strcmp(ext,"GL_ARB_vertex_array_object"))               return gl_arb_vertex_array_object;
+  if (!strcmp(ext,"GL_ARB_vertex_attrib_64bit"))               return gl_arb_vertex_attrib_64bit;
+  if (!strcmp(ext,"GL_ARB_vertex_attrib_binding"))             return gl_arb_vertex_attrib_binding;
+  if (!strcmp(ext,"GL_ARB_vertex_blend"))                      return gl_arb_vertex_blend;
+  if (!strcmp(ext,"GL_ARB_vertex_buffer_object"))              return gl_arb_vertex_buffer_object;
+  if (!strcmp(ext,"GL_ARB_vertex_program"))                    return gl_arb_vertex_program;
+  if (!strcmp(ext,"GL_ARB_vertex_shader"))                     return gl_arb_vertex_shader;
+  if (!strcmp(ext,"GL_ARB_vertex_type_2_10_10_10_rev"))        return gl_arb_vertex_type_2_10_10_10_rev;
+  if (!strcmp(ext,"GL_ARB_viewport_array"))                    return gl_arb_viewport_array;
+  if (!strcmp(ext,"GL_ARB_window_pos"))                        return gl_arb_window_pos;
+  if (!strcmp(ext,"GL_ARM_mali_program_binary"))               return gl_arm_mali_program_binary;
+  if (!strcmp(ext,"GL_ARM_mali_shader_binary"))                return gl_arm_mali_shader_binary;
+  if (!strcmp(ext,"GL_ATI_draw_buffers"))                      return gl_ati_draw_buffers;
+  if (!strcmp(ext,"GL_ATI_element_array"))                     return gl_ati_element_array;
+  if (!strcmp(ext,"GL_ATI_envmap_bumpmap"))                    return gl_ati_envmap_bumpmap;
+  if (!strcmp(ext,"GL_ATI_fragment_shader"))                   return gl_ati_fragment_shader;
+  if (!strcmp(ext,"GL_ATI_map_object_buffer"))                 return gl_ati_map_object_buffer;
+  if (!strcmp(ext,"GL_ATI_meminfo"))                           return gl_ati_meminfo;
+  if (!strcmp(ext,"GL_ATI_pn_triangles"))                      return gl_ati_pn_triangles;
+  if (!strcmp(ext,"GL_ATI_separate_stencil"))                  return gl_ati_separate_stencil;
+  if (!strcmp(ext,"GL_ATI_text_fragment_shader"))              return gl_ati_text_fragment_shader;
+  if (!strcmp(ext,"GL_ATI_texture_compression_3dc"))           return gl_ati_texture_compression_3dc;
+  if (!strcmp(ext,"GL_ATI_texture_env_combine3"))              return gl_ati_texture_env_combine3;
+  if (!strcmp(ext,"GL_ATI_texture_float"))                     return gl_ati_texture_float;
+  if (!strcmp(ext,"GL_ATI_texture_mirror_once"))               return gl_ati_texture_mirror_once;
+  if (!strcmp(ext,"GL_ATI_vertex_array_object"))               return gl_ati_vertex_array_object;
+  if (!strcmp(ext,"GL_ATI_vertex_attrib_array_object"))        return gl_ati_vertex_attrib_array_object;
+  if (!strcmp(ext,"GL_ATI_vertex_streams"))                    return gl_ati_vertex_streams;
+  if (!strcmp(ext,"GL_DMP_shader_binary"))                     return gl_dmp_shader_binary;
+  if (!strcmp(ext,"GL_EXT_422_pixels"))                        return gl_ext_422_pixels;
+  if (!strcmp(ext,"GL_EXT_Cg_shader"))                         return gl_ext_cg_shader;
+  if (!strcmp(ext,"GL_EXT_abgr"))                              return gl_ext_abgr;
+  if (!strcmp(ext,"GL_EXT_bgra"))                              return gl_ext_bgra;
+  if (!strcmp(ext,"GL_EXT_bindable_uniform"))                  return gl_ext_bindable_uniform;
+  if (!strcmp(ext,"GL_EXT_blend_color"))                       return gl_ext_blend_color;
+  if (!strcmp(ext,"GL_EXT_blend_equation_separate"))           return gl_ext_blend_equation_separate;
+  if (!strcmp(ext,"GL_EXT_blend_func_separate"))               return gl_ext_blend_func_separate;
+  if (!strcmp(ext,"GL_EXT_blend_minmax"))                      return gl_ext_blend_minmax;
+  if (!strcmp(ext,"GL_EXT_blend_subtract"))                    return gl_ext_blend_subtract;
+  if (!strcmp(ext,"GL_EXT_clip_volume_hint"))                  return gl_ext_clip_volume_hint;
+  if (!strcmp(ext,"GL_EXT_cmyka"))                             return gl_ext_cmyka;
+  if (!strcmp(ext,"GL_EXT_color_buffer_half_float"))           return gl_ext_color_buffer_half_float;
+  if (!strcmp(ext,"GL_EXT_color_subtable"))                    return gl_ext_color_subtable;
+  if (!strcmp(ext,"GL_EXT_compiled_vertex_array"))             return gl_ext_compiled_vertex_array;
+  if (!strcmp(ext,"GL_EXT_convolution"))                       return gl_ext_convolution;
+  if (!strcmp(ext,"GL_EXT_coordinate_frame"))                  return gl_ext_coordinate_frame;
+  if (!strcmp(ext,"GL_EXT_copy_texture"))                      return gl_ext_copy_texture;
+  if (!strcmp(ext,"GL_EXT_cull_vertex"))                       return gl_ext_cull_vertex;
+  if (!strcmp(ext,"GL_EXT_debug_label"))                       return gl_ext_debug_label;
+  if (!strcmp(ext,"GL_EXT_debug_marker"))                      return gl_ext_debug_marker;
+  if (!strcmp(ext,"GL_EXT_depth_bounds_test"))                 return gl_ext_depth_bounds_test;
+  if (!strcmp(ext,"GL_EXT_direct_state_access"))               return gl_ext_direct_state_access;
+  if (!strcmp(ext,"GL_EXT_discard_framebuffer"))               return gl_ext_discard_framebuffer;
+  if (!strcmp(ext,"GL_EXT_disjoint_timer_query"))              return gl_ext_disjoint_timer_query;
+  if (!strcmp(ext,"GL_EXT_draw_buffers2"))                     return gl_ext_draw_buffers2;
+  if (!strcmp(ext,"GL_EXT_draw_instanced"))                    return gl_ext_draw_instanced;
+  if (!strcmp(ext,"GL_EXT_draw_range_elements"))               return gl_ext_draw_range_elements;
+  if (!strcmp(ext,"GL_EXT_fog_coord"))                         return gl_ext_fog_coord;
+  if (!strcmp(ext,"GL_EXT_fragment_lighting"))                 return gl_ext_fragment_lighting;
+  if (!strcmp(ext,"GL_EXT_framebuffer_blit"))                  return gl_ext_framebuffer_blit;
+  if (!strcmp(ext,"GL_EXT_framebuffer_multisample"))           return gl_ext_framebuffer_multisample;
   if (!strcmp(ext,"GL_EXT_framebuffer_multisample_blit_scaled")) return gl_ext_framebuffer_multisample_blit_scaled;
-  if (!strcmp(ext,"GL_EXT_framebuffer_object")) return gl_ext_framebuffer_object;
-  if (!strcmp(ext,"GL_EXT_framebuffer_sRGB")) return gl_ext_framebuffer_srgb;
-  if (!strcmp(ext,"GL_EXT_geometry_shader4")) return gl_ext_geometry_shader4;
-  if (!strcmp(ext,"GL_EXT_gpu_program_parameters")) return gl_ext_gpu_program_parameters;
-  if (!strcmp(ext,"GL_EXT_gpu_shader4")) return gl_ext_gpu_shader4;
-  if (!strcmp(ext,"GL_EXT_histogram")) return gl_ext_histogram;
-  if (!strcmp(ext,"GL_EXT_index_func")) return gl_ext_index_func;
-  if (!strcmp(ext,"GL_EXT_index_material")) return gl_ext_index_material;
-  if (!strcmp(ext,"GL_EXT_light_texture")) return gl_ext_light_texture;
-  if (!strcmp(ext,"GL_EXT_map_buffer_range")) return gl_ext_map_buffer_range;
-  if (!strcmp(ext,"GL_EXT_multi_draw_arrays")) return gl_ext_multi_draw_arrays;
-  if (!strcmp(ext,"GL_EXT_multisample")) return gl_ext_multisample;
-  if (!strcmp(ext,"GL_EXT_multisampled_render_to_texture")) return gl_ext_multisampled_render_to_texture;
-  if (!strcmp(ext,"GL_EXT_multiview_draw_buffers")) return gl_ext_multiview_draw_buffers;
-  if (!strcmp(ext,"GL_EXT_occlusion_query_boolean")) return gl_ext_occlusion_query_boolean;
-  if (!strcmp(ext,"GL_EXT_packed_depth_stencil")) return gl_ext_packed_depth_stencil;
-  if (!strcmp(ext,"GL_EXT_packed_float")) return gl_ext_packed_float;
-  if (!strcmp(ext,"GL_EXT_packed_pixels")) return gl_ext_packed_pixels;
-  if (!strcmp(ext,"GL_EXT_paletted_texture")) return gl_ext_paletted_texture;
-  if (!strcmp(ext,"GL_EXT_pixel_buffer_object")) return gl_ext_pixel_buffer_object;
-  if (!strcmp(ext,"GL_EXT_pixel_transform")) return gl_ext_pixel_transform;
-  if (!strcmp(ext,"GL_EXT_point_parameters")) return gl_ext_point_parameters;
-  if (!strcmp(ext,"GL_EXT_polygon_offset")) return gl_ext_polygon_offset;
-  if (!strcmp(ext,"GL_EXT_provoking_vertex")) return gl_ext_provoking_vertex;
-  if (!strcmp(ext,"GL_EXT_read_format_bgra")) return gl_ext_read_format_bgra;
-  if (!strcmp(ext,"GL_EXT_rescale_normal")) return gl_ext_rescale_normal;
-  if (!strcmp(ext,"GL_EXT_robustness")) return gl_ext_robustness;
-  if (!strcmp(ext,"GL_EXT_sRGB")) return gl_ext_srgb;
-  if (!strcmp(ext,"GL_EXT_scene_marker")) return gl_ext_scene_marker;
-  if (!strcmp(ext,"GL_EXT_secondary_color")) return gl_ext_secondary_color;
-  if (!strcmp(ext,"GL_EXT_separate_shader_objects")) return gl_ext_separate_shader_objects;
-  if (!strcmp(ext,"GL_EXT_separate_specular_color")) return gl_ext_separate_specular_color;
-  if (!strcmp(ext,"GL_EXT_shader_framebuffer_fetch")) return gl_ext_shader_framebuffer_fetch;
-  if (!strcmp(ext,"GL_EXT_shader_image_load_store")) return gl_ext_shader_image_load_store;
-  if (!strcmp(ext,"GL_EXT_shadow_samplers")) return gl_ext_shadow_samplers;
-  if (!strcmp(ext,"GL_EXT_shared_texture_palette")) return gl_ext_shared_texture_palette;
-  if (!strcmp(ext,"GL_EXT_stencil_clear_tag")) return gl_ext_stencil_clear_tag;
-  if (!strcmp(ext,"GL_EXT_stencil_two_side")) return gl_ext_stencil_two_side;
-  if (!strcmp(ext,"GL_EXT_stencil_wrap")) return gl_ext_stencil_wrap;
-  if (!strcmp(ext,"GL_EXT_subtexture")) return gl_ext_subtexture;
-  if (!strcmp(ext,"GL_EXT_texture")) return gl_ext_texture;
-  if (!strcmp(ext,"GL_EXT_texture3D")) return gl_ext_texture3d;
-  if (!strcmp(ext,"GL_EXT_texture_array")) return gl_ext_texture_array;
-  if (!strcmp(ext,"GL_EXT_texture_buffer_object")) return gl_ext_texture_buffer_object;
-  if (!strcmp(ext,"GL_EXT_texture_compression_latc")) return gl_ext_texture_compression_latc;
-  if (!strcmp(ext,"GL_EXT_texture_compression_rgtc")) return gl_ext_texture_compression_rgtc;
-  if (!strcmp(ext,"GL_EXT_texture_compression_s3tc")) return gl_ext_texture_compression_s3tc;
-  if (!strcmp(ext,"GL_EXT_texture_cube_map")) return gl_ext_texture_cube_map;
-  if (!strcmp(ext,"GL_EXT_texture_edge_clamp")) return gl_ext_texture_edge_clamp;
-  if (!strcmp(ext,"GL_EXT_texture_env_combine")) return gl_ext_texture_env_combine;
-  if (!strcmp(ext,"GL_EXT_texture_env_dot3")) return gl_ext_texture_env_dot3;
-  if (!strcmp(ext,"GL_EXT_texture_filter_anisotropic")) return gl_ext_texture_filter_anisotropic;
-  if (!strcmp(ext,"GL_EXT_texture_format_BGRA8888")) return gl_ext_texture_format_bgra8888;
-  if (!strcmp(ext,"GL_EXT_texture_integer")) return gl_ext_texture_integer;
-  if (!strcmp(ext,"GL_EXT_texture_lod_bias")) return gl_ext_texture_lod_bias;
-  if (!strcmp(ext,"GL_EXT_texture_mirror_clamp")) return gl_ext_texture_mirror_clamp;
-  if (!strcmp(ext,"GL_EXT_texture_object")) return gl_ext_texture_object;
-  if (!strcmp(ext,"GL_EXT_texture_perturb_normal")) return gl_ext_texture_perturb_normal;
-  if (!strcmp(ext,"GL_EXT_texture_rectangle")) return gl_ext_texture_rectangle;
-  if (!strcmp(ext,"GL_EXT_texture_rg")) return gl_ext_texture_rg;
-  if (!strcmp(ext,"GL_EXT_texture_sRGB")) return gl_ext_texture_srgb;
-  if (!strcmp(ext,"GL_EXT_texture_sRGB_decode")) return gl_ext_texture_srgb_decode;
-  if (!strcmp(ext,"GL_EXT_texture_shared_exponent")) return gl_ext_texture_shared_exponent;
-  if (!strcmp(ext,"GL_EXT_texture_snorm")) return gl_ext_texture_snorm;
-  if (!strcmp(ext,"GL_EXT_texture_storage")) return gl_ext_texture_storage;
-  if (!strcmp(ext,"GL_EXT_texture_swizzle")) return gl_ext_texture_swizzle;
-  if (!strcmp(ext,"GL_EXT_texture_type_2_10_10_10_REV")) return gl_ext_texture_type_2_10_10_10_rev;
-  if (!strcmp(ext,"GL_EXT_timer_query")) return gl_ext_timer_query;
-  if (!strcmp(ext,"GL_EXT_transform_feedback")) return gl_ext_transform_feedback;
-  if (!strcmp(ext,"GL_EXT_unpack_subimage")) return gl_ext_unpack_subimage;
-  if (!strcmp(ext,"GL_EXT_vertex_array")) return gl_ext_vertex_array;
-  if (!strcmp(ext,"GL_EXT_vertex_attrib_64bit")) return gl_ext_vertex_attrib_64bit;
-  if (!strcmp(ext,"GL_EXT_vertex_shader")) return gl_ext_vertex_shader;
-  if (!strcmp(ext,"GL_EXT_vertex_weighting")) return gl_ext_vertex_weighting;
-  if (!strcmp(ext,"GL_EXT_x11_sync_object")) return gl_ext_x11_sync_object;
-  if (!strcmp(ext,"GL_FJ_shader_binary_GCCSO")) return gl_fj_shader_binary_gccso;
-  if (!strcmp(ext,"GL_GREMEDY_frame_terminator")) return gl_gremedy_frame_terminator;
-  if (!strcmp(ext,"GL_GREMEDY_string_marker")) return gl_gremedy_string_marker;
-  if (!strcmp(ext,"GL_HP_image_transform")) return gl_hp_image_transform;
-  if (!strcmp(ext,"GL_HP_occlusion_test")) return gl_hp_occlusion_test;
-  if (!strcmp(ext,"GL_IBM_cull_vertex")) return gl_ibm_cull_vertex;
-  if (!strcmp(ext,"GL_IBM_multimode_draw_arrays")) return gl_ibm_multimode_draw_arrays;
-  if (!strcmp(ext,"GL_IBM_rasterpos_clip")) return gl_ibm_rasterpos_clip;
-  if (!strcmp(ext,"GL_IBM_static_data")) return gl_ibm_static_data;
-  if (!strcmp(ext,"GL_IBM_texture_mirrored_repeat")) return gl_ibm_texture_mirrored_repeat;
-  if (!strcmp(ext,"GL_IBM_vertex_array_lists")) return gl_ibm_vertex_array_lists;
-  if (!strcmp(ext,"GL_IMG_multisampled_render_to_texture")) return gl_img_multisampled_render_to_texture;
-  if (!strcmp(ext,"GL_IMG_program_binary")) return gl_img_program_binary;
-  if (!strcmp(ext,"GL_IMG_read_format")) return gl_img_read_format;
-  if (!strcmp(ext,"GL_IMG_shader_binary")) return gl_img_shader_binary;
-  if (!strcmp(ext,"GL_IMG_texture_compression_pvrtc")) return gl_img_texture_compression_pvrtc;
-  if (!strcmp(ext,"GL_IMG_texture_compression_pvrtc2")) return gl_img_texture_compression_pvrtc2;
+  if (!strcmp(ext,"GL_EXT_framebuffer_object"))                return gl_ext_framebuffer_object;
+  if (!strcmp(ext,"GL_EXT_framebuffer_sRGB"))                  return gl_ext_framebuffer_srgb;
+  if (!strcmp(ext,"GL_EXT_geometry_shader4"))                  return gl_ext_geometry_shader4;
+  if (!strcmp(ext,"GL_EXT_gpu_program_parameters"))            return gl_ext_gpu_program_parameters;
+  if (!strcmp(ext,"GL_EXT_gpu_shader4"))                       return gl_ext_gpu_shader4;
+  if (!strcmp(ext,"GL_EXT_histogram"))                         return gl_ext_histogram;
+  if (!strcmp(ext,"GL_EXT_index_func"))                        return gl_ext_index_func;
+  if (!strcmp(ext,"GL_EXT_index_material"))                    return gl_ext_index_material;
+  if (!strcmp(ext,"GL_EXT_light_texture"))                     return gl_ext_light_texture;
+  if (!strcmp(ext,"GL_EXT_map_buffer_range"))                  return gl_ext_map_buffer_range;
+  if (!strcmp(ext,"GL_EXT_multi_draw_arrays"))                 return gl_ext_multi_draw_arrays;
+  if (!strcmp(ext,"GL_EXT_multisample"))                       return gl_ext_multisample;
+  if (!strcmp(ext,"GL_EXT_multisampled_render_to_texture"))    return gl_ext_multisampled_render_to_texture;
+  if (!strcmp(ext,"GL_EXT_multiview_draw_buffers"))            return gl_ext_multiview_draw_buffers;
+  if (!strcmp(ext,"GL_EXT_occlusion_query_boolean"))           return gl_ext_occlusion_query_boolean;
+  if (!strcmp(ext,"GL_EXT_packed_depth_stencil"))              return gl_ext_packed_depth_stencil;
+  if (!strcmp(ext,"GL_EXT_packed_float"))                      return gl_ext_packed_float;
+  if (!strcmp(ext,"GL_EXT_packed_pixels"))                     return gl_ext_packed_pixels;
+  if (!strcmp(ext,"GL_EXT_paletted_texture"))                  return gl_ext_paletted_texture;
+  if (!strcmp(ext,"GL_EXT_pixel_buffer_object"))               return gl_ext_pixel_buffer_object;
+  if (!strcmp(ext,"GL_EXT_pixel_transform"))                   return gl_ext_pixel_transform;
+  if (!strcmp(ext,"GL_EXT_point_parameters"))                  return gl_ext_point_parameters;
+  if (!strcmp(ext,"GL_EXT_polygon_offset"))                    return gl_ext_polygon_offset;
+  if (!strcmp(ext,"GL_EXT_provoking_vertex"))                  return gl_ext_provoking_vertex;
+  if (!strcmp(ext,"GL_EXT_read_format_bgra"))                  return gl_ext_read_format_bgra;
+  if (!strcmp(ext,"GL_EXT_rescale_normal"))                    return gl_ext_rescale_normal;
+  if (!strcmp(ext,"GL_EXT_robustness"))                        return gl_ext_robustness;
+  if (!strcmp(ext,"GL_EXT_sRGB"))                              return gl_ext_srgb;
+  if (!strcmp(ext,"GL_EXT_scene_marker"))                      return gl_ext_scene_marker;
+  if (!strcmp(ext,"GL_EXT_secondary_color"))                   return gl_ext_secondary_color;
+  if (!strcmp(ext,"GL_EXT_separate_shader_objects"))           return gl_ext_separate_shader_objects;
+  if (!strcmp(ext,"GL_EXT_separate_specular_color"))           return gl_ext_separate_specular_color;
+  if (!strcmp(ext,"GL_EXT_shader_framebuffer_fetch"))          return gl_ext_shader_framebuffer_fetch;
+  if (!strcmp(ext,"GL_EXT_shader_image_load_store"))           return gl_ext_shader_image_load_store;
+  if (!strcmp(ext,"GL_EXT_shadow_samplers"))                   return gl_ext_shadow_samplers;
+  if (!strcmp(ext,"GL_EXT_shared_texture_palette"))            return gl_ext_shared_texture_palette;
+  if (!strcmp(ext,"GL_EXT_stencil_clear_tag"))                 return gl_ext_stencil_clear_tag;
+  if (!strcmp(ext,"GL_EXT_stencil_two_side"))                  return gl_ext_stencil_two_side;
+  if (!strcmp(ext,"GL_EXT_stencil_wrap"))                      return gl_ext_stencil_wrap;
+  if (!strcmp(ext,"GL_EXT_subtexture"))                        return gl_ext_subtexture;
+  if (!strcmp(ext,"GL_EXT_texture"))                           return gl_ext_texture;
+  if (!strcmp(ext,"GL_EXT_texture3D"))                         return gl_ext_texture3d;
+  if (!strcmp(ext,"GL_EXT_texture_array"))                     return gl_ext_texture_array;
+  if (!strcmp(ext,"GL_EXT_texture_buffer_object"))             return gl_ext_texture_buffer_object;
+  if (!strcmp(ext,"GL_EXT_texture_compression_latc"))          return gl_ext_texture_compression_latc;
+  if (!strcmp(ext,"GL_EXT_texture_compression_rgtc"))          return gl_ext_texture_compression_rgtc;
+  if (!strcmp(ext,"GL_EXT_texture_compression_s3tc"))          return gl_ext_texture_compression_s3tc;
+  if (!strcmp(ext,"GL_EXT_texture_cube_map"))                  return gl_ext_texture_cube_map;
+  if (!strcmp(ext,"GL_EXT_texture_edge_clamp"))                return gl_ext_texture_edge_clamp;
+  if (!strcmp(ext,"GL_EXT_texture_env_combine"))               return gl_ext_texture_env_combine;
+  if (!strcmp(ext,"GL_EXT_texture_env_dot3"))                  return gl_ext_texture_env_dot3;
+  if (!strcmp(ext,"GL_EXT_texture_filter_anisotropic"))        return gl_ext_texture_filter_anisotropic;
+  if (!strcmp(ext,"GL_EXT_texture_format_BGRA8888"))           return gl_ext_texture_format_bgra8888;
+  if (!strcmp(ext,"GL_EXT_texture_integer"))                   return gl_ext_texture_integer;
+  if (!strcmp(ext,"GL_EXT_texture_lod_bias"))                  return gl_ext_texture_lod_bias;
+  if (!strcmp(ext,"GL_EXT_texture_mirror_clamp"))              return gl_ext_texture_mirror_clamp;
+  if (!strcmp(ext,"GL_EXT_texture_object"))                    return gl_ext_texture_object;
+  if (!strcmp(ext,"GL_EXT_texture_perturb_normal"))            return gl_ext_texture_perturb_normal;
+  if (!strcmp(ext,"GL_EXT_texture_rectangle"))                 return gl_ext_texture_rectangle;
+  if (!strcmp(ext,"GL_EXT_texture_rg"))                        return gl_ext_texture_rg;
+  if (!strcmp(ext,"GL_EXT_texture_sRGB"))                      return gl_ext_texture_srgb;
+  if (!strcmp(ext,"GL_EXT_texture_sRGB_decode"))               return gl_ext_texture_srgb_decode;
+  if (!strcmp(ext,"GL_EXT_texture_shared_exponent"))           return gl_ext_texture_shared_exponent;
+  if (!strcmp(ext,"GL_EXT_texture_snorm"))                     return gl_ext_texture_snorm;
+  if (!strcmp(ext,"GL_EXT_texture_storage"))                   return gl_ext_texture_storage;
+  if (!strcmp(ext,"GL_EXT_texture_swizzle"))                   return gl_ext_texture_swizzle;
+  if (!strcmp(ext,"GL_EXT_texture_type_2_10_10_10_REV"))       return gl_ext_texture_type_2_10_10_10_rev;
+  if (!strcmp(ext,"GL_EXT_timer_query"))                       return gl_ext_timer_query;
+  if (!strcmp(ext,"GL_EXT_transform_feedback"))                return gl_ext_transform_feedback;
+  if (!strcmp(ext,"GL_EXT_unpack_subimage"))                   return gl_ext_unpack_subimage;
+  if (!strcmp(ext,"GL_EXT_vertex_array"))                      return gl_ext_vertex_array;
+  if (!strcmp(ext,"GL_EXT_vertex_attrib_64bit"))               return gl_ext_vertex_attrib_64bit;
+  if (!strcmp(ext,"GL_EXT_vertex_shader"))                     return gl_ext_vertex_shader;
+  if (!strcmp(ext,"GL_EXT_vertex_weighting"))                  return gl_ext_vertex_weighting;
+  if (!strcmp(ext,"GL_EXT_x11_sync_object"))                   return gl_ext_x11_sync_object;
+  if (!strcmp(ext,"GL_FJ_shader_binary_GCCSO"))                return gl_fj_shader_binary_gccso;
+  if (!strcmp(ext,"GL_GREMEDY_frame_terminator"))              return gl_gremedy_frame_terminator;
+  if (!strcmp(ext,"GL_GREMEDY_string_marker"))                 return gl_gremedy_string_marker;
+  if (!strcmp(ext,"GL_HP_image_transform"))                    return gl_hp_image_transform;
+  if (!strcmp(ext,"GL_HP_occlusion_test"))                     return gl_hp_occlusion_test;
+  if (!strcmp(ext,"GL_IBM_cull_vertex"))                       return gl_ibm_cull_vertex;
+  if (!strcmp(ext,"GL_IBM_multimode_draw_arrays"))             return gl_ibm_multimode_draw_arrays;
+  if (!strcmp(ext,"GL_IBM_rasterpos_clip"))                    return gl_ibm_rasterpos_clip;
+  if (!strcmp(ext,"GL_IBM_static_data"))                       return gl_ibm_static_data;
+  if (!strcmp(ext,"GL_IBM_texture_mirrored_repeat"))           return gl_ibm_texture_mirrored_repeat;
+  if (!strcmp(ext,"GL_IBM_vertex_array_lists"))                return gl_ibm_vertex_array_lists;
+  if (!strcmp(ext,"GL_IMG_multisampled_render_to_texture"))    return gl_img_multisampled_render_to_texture;
+  if (!strcmp(ext,"GL_IMG_program_binary"))                    return gl_img_program_binary;
+  if (!strcmp(ext,"GL_IMG_read_format"))                       return gl_img_read_format;
+  if (!strcmp(ext,"GL_IMG_shader_binary"))                     return gl_img_shader_binary;
+  if (!strcmp(ext,"GL_IMG_texture_compression_pvrtc"))         return gl_img_texture_compression_pvrtc;
+  if (!strcmp(ext,"GL_IMG_texture_compression_pvrtc2"))        return gl_img_texture_compression_pvrtc2;
   if (!strcmp(ext,"GL_IMG_texture_env_enhanced_fixed_function")) return gl_img_texture_env_enhanced_fixed_function;
-  if (!strcmp(ext,"GL_IMG_user_clip_plane")) return gl_img_user_clip_plane;
-  if (!strcmp(ext,"GL_INGR_blend_func_separate")) return gl_ingr_blend_func_separate;
-  if (!strcmp(ext,"GL_INGR_color_clamp")) return gl_ingr_color_clamp;
-  if (!strcmp(ext,"GL_INGR_interlace_read")) return gl_ingr_interlace_read;
-  if (!strcmp(ext,"GL_INTEL_map_texture")) return gl_intel_map_texture;
-  if (!strcmp(ext,"GL_INTEL_parallel_arrays")) return gl_intel_parallel_arrays;
-  if (!strcmp(ext,"GL_INTEL_texture_scissor")) return gl_intel_texture_scissor;
-  if (!strcmp(ext,"GL_KHR_debug")) return gl_khr_debug;
-  if (!strcmp(ext,"GL_KHR_texture_compression_astc_ldr")) return gl_khr_texture_compression_astc_ldr;
-  if (!strcmp(ext,"GL_KTX_buffer_region")) return gl_ktx_buffer_region;
-  if (!strcmp(ext,"GL_MESAX_texture_stack")) return gl_mesax_texture_stack;
-  if (!strcmp(ext,"GL_MESA_pack_invert")) return gl_mesa_pack_invert;
-  if (!strcmp(ext,"GL_MESA_resize_buffers")) return gl_mesa_resize_buffers;
-  if (!strcmp(ext,"GL_MESA_window_pos")) return gl_mesa_window_pos;
-  if (!strcmp(ext,"GL_MESA_ycbcr_texture")) return gl_mesa_ycbcr_texture;
-  if (!strcmp(ext,"GL_NVX_conditional_render")) return gl_nvx_conditional_render;
-  if (!strcmp(ext,"GL_NVX_gpu_memory_info")) return gl_nvx_gpu_memory_info;
-  if (!strcmp(ext,"GL_NV_3dvision_settings")) return gl_nv_3dvision_settings;
-  if (!strcmp(ext,"GL_NV_bgr")) return gl_nv_bgr;
-  if (!strcmp(ext,"GL_NV_bindless_texture")) return gl_nv_bindless_texture;
-  if (!strcmp(ext,"GL_NV_blend_equation_advanced")) return gl_nv_blend_equation_advanced;
-  if (!strcmp(ext,"GL_NV_blend_square")) return gl_nv_blend_square;
-  if (!strcmp(ext,"GL_NV_compute_program5")) return gl_nv_compute_program5;
-  if (!strcmp(ext,"GL_NV_conditional_render")) return gl_nv_conditional_render;
-  if (!strcmp(ext,"GL_NV_copy_buffer")) return gl_nv_copy_buffer;
-  if (!strcmp(ext,"GL_NV_copy_depth_to_color")) return gl_nv_copy_depth_to_color;
-  if (!strcmp(ext,"GL_NV_copy_image")) return gl_nv_copy_image;
-  if (!strcmp(ext,"GL_NV_coverage_sample")) return gl_nv_coverage_sample;
-  if (!strcmp(ext,"GL_NV_deep_texture3D")) return gl_nv_deep_texture3d;
-  if (!strcmp(ext,"GL_NV_depth_buffer_float")) return gl_nv_depth_buffer_float;
-  if (!strcmp(ext,"GL_NV_depth_clamp")) return gl_nv_depth_clamp;
-  if (!strcmp(ext,"GL_NV_depth_nonlinear")) return gl_nv_depth_nonlinear;
-  if (!strcmp(ext,"GL_NV_depth_range_unclamped")) return gl_nv_depth_range_unclamped;
-  if (!strcmp(ext,"GL_NV_draw_buffers")) return gl_nv_draw_buffers;
-  if (!strcmp(ext,"GL_NV_draw_texture")) return gl_nv_draw_texture;
-  if (!strcmp(ext,"GL_NV_evaluators")) return gl_nv_evaluators;
-  if (!strcmp(ext,"GL_NV_explicit_multisample")) return gl_nv_explicit_multisample;
-  if (!strcmp(ext,"GL_NV_fbo_color_attachments")) return gl_nv_fbo_color_attachments;
-  if (!strcmp(ext,"GL_NV_fence")) return gl_nv_fence;
-  if (!strcmp(ext,"GL_NV_float_buffer")) return gl_nv_float_buffer;
-  if (!strcmp(ext,"GL_NV_fog_distance")) return gl_nv_fog_distance;
-  if (!strcmp(ext,"GL_NV_fragment_program")) return gl_nv_fragment_program;
-  if (!strcmp(ext,"GL_NV_fragment_program2")) return gl_nv_fragment_program2;
-  if (!strcmp(ext,"GL_NV_framebuffer_blit")) return gl_nv_framebuffer_blit;
-  if (!strcmp(ext,"GL_NV_framebuffer_multisample")) return gl_nv_framebuffer_multisample;
-  if (!strcmp(ext,"GL_NV_framebuffer_multisample_coverage")) return gl_nv_framebuffer_multisample_coverage;
-  if (!strcmp(ext,"GL_NV_geometry_program4")) return gl_nv_geometry_program4;
-  if (!strcmp(ext,"GL_NV_gpu_program4")) return gl_nv_gpu_program4;
-  if (!strcmp(ext,"GL_NV_gpu_program5")) return gl_nv_gpu_program5;
-  if (!strcmp(ext,"GL_NV_gpu_shader5")) return gl_nv_gpu_shader5;
-  if (!strcmp(ext,"GL_NV_half_float")) return gl_nv_half_float;
-  if (!strcmp(ext,"GL_NV_instanced_arrays")) return gl_nv_instanced_arrays;
-  if (!strcmp(ext,"GL_NV_light_max_exponent")) return gl_nv_light_max_exponent;
-  if (!strcmp(ext,"GL_NV_multisample_coverage")) return gl_nv_multisample_coverage;
-  if (!strcmp(ext,"GL_NV_multisample_filter_hint")) return gl_nv_multisample_filter_hint;
-  if (!strcmp(ext,"GL_NV_non_square_matrices")) return gl_nv_non_square_matrices;
-  if (!strcmp(ext,"GL_NV_occlusion_query")) return gl_nv_occlusion_query;
-  if (!strcmp(ext,"GL_NV_pack_subimage")) return gl_nv_pack_subimage;
-  if (!strcmp(ext,"GL_NV_packed_depth_stencil")) return gl_nv_packed_depth_stencil;
-  if (!strcmp(ext,"GL_NV_packed_float_linear")) return gl_nv_packed_float_linear;
-  if (!strcmp(ext,"GL_NV_parameter_buffer_object")) return gl_nv_parameter_buffer_object;
-  if (!strcmp(ext,"GL_NV_path_rendering")) return gl_nv_path_rendering;
-  if (!strcmp(ext,"GL_NV_pixel_buffer_object")) return gl_nv_pixel_buffer_object;
-  if (!strcmp(ext,"GL_NV_pixel_data_range")) return gl_nv_pixel_data_range;
-  if (!strcmp(ext,"GL_NV_platform_binary")) return gl_nv_platform_binary;
-  if (!strcmp(ext,"GL_NV_point_sprite")) return gl_nv_point_sprite;
-  if (!strcmp(ext,"GL_NV_present_video")) return gl_nv_present_video;
-  if (!strcmp(ext,"GL_NV_primitive_restart")) return gl_nv_primitive_restart;
-  if (!strcmp(ext,"GL_NV_read_buffer")) return gl_nv_read_buffer;
-  if (!strcmp(ext,"GL_NV_read_buffer_front")) return gl_nv_read_buffer_front;
-  if (!strcmp(ext,"GL_NV_register_combiners")) return gl_nv_register_combiners;
-  if (!strcmp(ext,"GL_NV_register_combiners2")) return gl_nv_register_combiners2;
-  if (!strcmp(ext,"GL_NV_sRGB_formats")) return gl_nv_srgb_formats;
-  if (!strcmp(ext,"GL_NV_shader_buffer_load")) return gl_nv_shader_buffer_load;
-  if (!strcmp(ext,"GL_NV_shadow_samplers_array")) return gl_nv_shadow_samplers_array;
-  if (!strcmp(ext,"GL_NV_shadow_samplers_cube")) return gl_nv_shadow_samplers_cube;
-  if (!strcmp(ext,"GL_NV_tessellation_program5")) return gl_nv_tessellation_program5;
-  if (!strcmp(ext,"GL_NV_texgen_emboss")) return gl_nv_texgen_emboss;
-  if (!strcmp(ext,"GL_NV_texgen_reflection")) return gl_nv_texgen_reflection;
-  if (!strcmp(ext,"GL_NV_texture_array")) return gl_nv_texture_array;
-  if (!strcmp(ext,"GL_NV_texture_barrier")) return gl_nv_texture_barrier;
-  if (!strcmp(ext,"GL_NV_texture_border_clamp")) return gl_nv_texture_border_clamp;
-  if (!strcmp(ext,"GL_NV_texture_compression_latc")) return gl_nv_texture_compression_latc;
-  if (!strcmp(ext,"GL_NV_texture_compression_s3tc")) return gl_nv_texture_compression_s3tc;
-  if (!strcmp(ext,"GL_NV_texture_env_combine4")) return gl_nv_texture_env_combine4;
-  if (!strcmp(ext,"GL_NV_texture_expand_normal")) return gl_nv_texture_expand_normal;
-  if (!strcmp(ext,"GL_NV_texture_multisample")) return gl_nv_texture_multisample;
-  if (!strcmp(ext,"GL_NV_texture_rectangle")) return gl_nv_texture_rectangle;
-  if (!strcmp(ext,"GL_NV_texture_shader")) return gl_nv_texture_shader;
-  if (!strcmp(ext,"GL_NV_texture_shader2")) return gl_nv_texture_shader2;
-  if (!strcmp(ext,"GL_NV_texture_shader3")) return gl_nv_texture_shader3;
-  if (!strcmp(ext,"GL_NV_transform_feedback")) return gl_nv_transform_feedback;
-  if (!strcmp(ext,"GL_NV_transform_feedback2")) return gl_nv_transform_feedback2;
-  if (!strcmp(ext,"GL_NV_vdpau_interop")) return gl_nv_vdpau_interop;
-  if (!strcmp(ext,"GL_NV_vertex_array_range")) return gl_nv_vertex_array_range;
-  if (!strcmp(ext,"GL_NV_vertex_array_range2")) return gl_nv_vertex_array_range2;
-  if (!strcmp(ext,"GL_NV_vertex_attrib_integer_64bit")) return gl_nv_vertex_attrib_integer_64bit;
-  if (!strcmp(ext,"GL_NV_vertex_buffer_unified_memory")) return gl_nv_vertex_buffer_unified_memory;
-  if (!strcmp(ext,"GL_NV_vertex_program")) return gl_nv_vertex_program;
-  if (!strcmp(ext,"GL_NV_vertex_program2_option")) return gl_nv_vertex_program2_option;
-  if (!strcmp(ext,"GL_NV_vertex_program3")) return gl_nv_vertex_program3;
-  if (!strcmp(ext,"GL_NV_vertex_program4")) return gl_nv_vertex_program4;
-  if (!strcmp(ext,"GL_NV_video_capture")) return gl_nv_video_capture;
-  if (!strcmp(ext,"GL_OES_EGL_image_external")) return gl_oes_egl_image_external;
-  if (!strcmp(ext,"GL_OES_blend_equation_separate")) return gl_oes_blend_equation_separate;
-  if (!strcmp(ext,"GL_OES_blend_func_separate")) return gl_oes_blend_func_separate;
-  if (!strcmp(ext,"GL_OES_blend_subtract")) return gl_oes_blend_subtract;
-  if (!strcmp(ext,"GL_OES_compressed_ETC1_RGB8_texture")) return gl_oes_compressed_etc1_rgb8_texture;
-  if (!strcmp(ext,"GL_OES_compressed_paletted_texture")) return gl_oes_compressed_paletted_texture;
-  if (!strcmp(ext,"GL_OES_depth_texture")) return gl_oes_depth_texture;
-  if (!strcmp(ext,"GL_OES_draw_texture")) return gl_oes_draw_texture;
-  if (!strcmp(ext,"GL_OES_element_index_uint")) return gl_oes_element_index_uint;
-  if (!strcmp(ext,"GL_OES_fbo_render_mipmap")) return gl_oes_fbo_render_mipmap;
-  if (!strcmp(ext,"GL_OES_framebuffer_object")) return gl_oes_framebuffer_object;
-  if (!strcmp(ext,"GL_OES_get_program_binary")) return gl_oes_get_program_binary;
-  if (!strcmp(ext,"GL_OES_mapbuffer")) return gl_oes_mapbuffer;
-  if (!strcmp(ext,"GL_OES_matrix_get")) return gl_oes_matrix_get;
-  if (!strcmp(ext,"GL_OES_matrix_palette")) return gl_oes_matrix_palette;
-  if (!strcmp(ext,"GL_OES_packed_depth_stencil")) return gl_oes_packed_depth_stencil;
-  if (!strcmp(ext,"GL_OES_point_size_array")) return gl_oes_point_size_array;
-  if (!strcmp(ext,"GL_OES_point_sprite")) return gl_oes_point_sprite;
-  if (!strcmp(ext,"GL_OES_read_format")) return gl_oes_read_format;
-  if (!strcmp(ext,"GL_OES_required_internalformat")) return gl_oes_required_internalformat;
-  if (!strcmp(ext,"GL_OES_rgb8_rgba8")) return gl_oes_rgb8_rgba8;
-  if (!strcmp(ext,"GL_OES_single_precision")) return gl_oes_single_precision;
-  if (!strcmp(ext,"GL_OES_standard_derivatives")) return gl_oes_standard_derivatives;
-  if (!strcmp(ext,"GL_OES_stencil1")) return gl_oes_stencil1;
-  if (!strcmp(ext,"GL_OES_stencil4")) return gl_oes_stencil4;
-  if (!strcmp(ext,"GL_OES_stencil8")) return gl_oes_stencil8;
-  if (!strcmp(ext,"GL_OES_surfaceless_context")) return gl_oes_surfaceless_context;
-  if (!strcmp(ext,"GL_OES_texture_3D")) return gl_oes_texture_3d;
-  if (!strcmp(ext,"GL_OES_texture_cube_map")) return gl_oes_texture_cube_map;
-  if (!strcmp(ext,"GL_OES_texture_mirrored_repeat")) return gl_oes_texture_mirrored_repeat;
-  if (!strcmp(ext,"GL_OES_vertex_array_object")) return gl_oes_vertex_array_object;
-  if (!strcmp(ext,"GL_OES_vertex_half_float")) return gl_oes_vertex_half_float;
-  if (!strcmp(ext,"GL_OES_vertex_type_10_10_10_2")) return gl_oes_vertex_type_10_10_10_2;
-  if (!strcmp(ext,"GL_OML_interlace")) return gl_oml_interlace;
-  if (!strcmp(ext,"GL_OML_resample")) return gl_oml_resample;
-  if (!strcmp(ext,"GL_OML_subsample")) return gl_oml_subsample;
-  if (!strcmp(ext,"GL_PGI_misc_hints")) return gl_pgi_misc_hints;
-  if (!strcmp(ext,"GL_PGI_vertex_hints")) return gl_pgi_vertex_hints;
-  if (!strcmp(ext,"GL_QCOM_alpha_test")) return gl_qcom_alpha_test;
-  if (!strcmp(ext,"GL_QCOM_binning_control")) return gl_qcom_binning_control;
-  if (!strcmp(ext,"GL_QCOM_driver_control")) return gl_qcom_driver_control;
-  if (!strcmp(ext,"GL_QCOM_extended_get")) return gl_qcom_extended_get;
-  if (!strcmp(ext,"GL_QCOM_extended_get2")) return gl_qcom_extended_get2;
-  if (!strcmp(ext,"GL_QCOM_perfmon_global_mode")) return gl_qcom_perfmon_global_mode;
-  if (!strcmp(ext,"GL_QCOM_tiled_rendering")) return gl_qcom_tiled_rendering;
-  if (!strcmp(ext,"GL_QCOM_writeonly_rendering")) return gl_qcom_writeonly_rendering;
-  if (!strcmp(ext,"GL_REGAL_ES1_0_compatibility")) return gl_regal_es1_0_compatibility;
-  if (!strcmp(ext,"GL_REGAL_ES1_1_compatibility")) return gl_regal_es1_1_compatibility;
-  if (!strcmp(ext,"GL_REGAL_enable")) return gl_regal_enable;
-  if (!strcmp(ext,"GL_REGAL_error_string")) return gl_regal_error_string;
-  if (!strcmp(ext,"GL_REGAL_extension_query")) return gl_regal_extension_query;
-  if (!strcmp(ext,"GL_REGAL_log")) return gl_regal_log;
-  if (!strcmp(ext,"GL_REND_screen_coordinates")) return gl_rend_screen_coordinates;
-  if (!strcmp(ext,"GL_S3_s3tc")) return gl_s3_s3tc;
-  if (!strcmp(ext,"GL_SGIS_color_range")) return gl_sgis_color_range;
-  if (!strcmp(ext,"GL_SGIS_detail_texture")) return gl_sgis_detail_texture;
-  if (!strcmp(ext,"GL_SGIS_fog_function")) return gl_sgis_fog_function;
-  if (!strcmp(ext,"GL_SGIS_generate_mipmap")) return gl_sgis_generate_mipmap;
-  if (!strcmp(ext,"GL_SGIS_multisample")) return gl_sgis_multisample;
-  if (!strcmp(ext,"GL_SGIS_pixel_texture")) return gl_sgis_pixel_texture;
-  if (!strcmp(ext,"GL_SGIS_point_line_texgen")) return gl_sgis_point_line_texgen;
-  if (!strcmp(ext,"GL_SGIS_point_parameters")) return gl_sgis_point_parameters;
-  if (!strcmp(ext,"GL_SGIS_sharpen_texture")) return gl_sgis_sharpen_texture;
-  if (!strcmp(ext,"GL_SGIS_texture4D")) return gl_sgis_texture4d;
-  if (!strcmp(ext,"GL_SGIS_texture_border_clamp")) return gl_sgis_texture_border_clamp;
-  if (!strcmp(ext,"GL_SGIS_texture_color_mask")) return gl_sgis_texture_color_mask;
-  if (!strcmp(ext,"GL_SGIS_texture_edge_clamp")) return gl_sgis_texture_edge_clamp;
-  if (!strcmp(ext,"GL_SGIS_texture_filter4")) return gl_sgis_texture_filter4;
-  if (!strcmp(ext,"GL_SGIS_texture_lod")) return gl_sgis_texture_lod;
-  if (!strcmp(ext,"GL_SGIX_async")) return gl_sgix_async;
-  if (!strcmp(ext,"GL_SGIX_async_histogram")) return gl_sgix_async_histogram;
-  if (!strcmp(ext,"GL_SGIX_async_pixel")) return gl_sgix_async_pixel;
-  if (!strcmp(ext,"GL_SGIX_blend_alpha_minmax")) return gl_sgix_blend_alpha_minmax;
-  if (!strcmp(ext,"GL_SGIX_convolution_accuracy")) return gl_sgix_convolution_accuracy;
-  if (!strcmp(ext,"GL_SGIX_depth_texture")) return gl_sgix_depth_texture;
-  if (!strcmp(ext,"GL_SGIX_flush_raster")) return gl_sgix_flush_raster;
-  if (!strcmp(ext,"GL_SGIX_fog_offset")) return gl_sgix_fog_offset;
-  if (!strcmp(ext,"GL_SGIX_fog_texture")) return gl_sgix_fog_texture;
-  if (!strcmp(ext,"GL_SGIX_fragment_lighting")) return gl_sgix_fragment_lighting;
-  if (!strcmp(ext,"GL_SGIX_fragment_specular_lighting")) return gl_sgix_fragment_specular_lighting;
-  if (!strcmp(ext,"GL_SGIX_framezoom")) return gl_sgix_framezoom;
-  if (!strcmp(ext,"GL_SGIX_igloo_interface")) return gl_sgix_igloo_interface;
-  if (!strcmp(ext,"GL_SGIX_instruments")) return gl_sgix_instruments;
-  if (!strcmp(ext,"GL_SGIX_interlace")) return gl_sgix_interlace;
-  if (!strcmp(ext,"GL_SGIX_list_priority")) return gl_sgix_list_priority;
-  if (!strcmp(ext,"GL_SGIX_pixel_texture")) return gl_sgix_pixel_texture;
-  if (!strcmp(ext,"GL_SGIX_polynomial_ffd")) return gl_sgix_polynomial_ffd;
-  if (!strcmp(ext,"GL_SGIX_reference_plane")) return gl_sgix_reference_plane;
-  if (!strcmp(ext,"GL_SGIX_resample")) return gl_sgix_resample;
-  if (!strcmp(ext,"GL_SGIX_shadow")) return gl_sgix_shadow;
-  if (!strcmp(ext,"GL_SGIX_shadow_ambient")) return gl_sgix_shadow_ambient;
-  if (!strcmp(ext,"GL_SGIX_sprite")) return gl_sgix_sprite;
-  if (!strcmp(ext,"GL_SGIX_tag_sample_buffer")) return gl_sgix_tag_sample_buffer;
-  if (!strcmp(ext,"GL_SGIX_texture_coordinate_clamp")) return gl_sgix_texture_coordinate_clamp;
-  if (!strcmp(ext,"GL_SGIX_texture_multi_buffer")) return gl_sgix_texture_multi_buffer;
-  if (!strcmp(ext,"GL_SGIX_texture_range")) return gl_sgix_texture_range;
-  if (!strcmp(ext,"GL_SGIX_texture_scale_bias")) return gl_sgix_texture_scale_bias;
-  if (!strcmp(ext,"GL_SGIX_vertex_preclip_hint")) return gl_sgix_vertex_preclip_hint;
-  if (!strcmp(ext,"GL_SGIX_ycrcb")) return gl_sgix_ycrcb;
-  if (!strcmp(ext,"GL_SGI_color_matrix")) return gl_sgi_color_matrix;
-  if (!strcmp(ext,"GL_SGI_color_table")) return gl_sgi_color_table;
-  if (!strcmp(ext,"GL_SGI_texture_color_table")) return gl_sgi_texture_color_table;
-  if (!strcmp(ext,"GL_SUNX_constant_data")) return gl_sunx_constant_data;
-  if (!strcmp(ext,"GL_SUN_convolution_border_modes")) return gl_sun_convolution_border_modes;
-  if (!strcmp(ext,"GL_SUN_global_alpha")) return gl_sun_global_alpha;
-  if (!strcmp(ext,"GL_SUN_mesh_array")) return gl_sun_mesh_array;
-  if (!strcmp(ext,"GL_SUN_read_video_pixels")) return gl_sun_read_video_pixels;
-  if (!strcmp(ext,"GL_SUN_slice_accum")) return gl_sun_slice_accum;
-  if (!strcmp(ext,"GL_SUN_triangle_list")) return gl_sun_triangle_list;
-  if (!strcmp(ext,"GL_SUN_vertex")) return gl_sun_vertex;
-  if (!strcmp(ext,"GL_VIV_shader_binary")) return gl_viv_shader_binary;
-  if (!strcmp(ext,"GL_WIN_phong_shading")) return gl_win_phong_shading;
-  if (!strcmp(ext,"GL_WIN_specular_fog")) return gl_win_specular_fog;
-  if (!strcmp(ext,"GL_WIN_swap_hint")) return gl_win_swap_hint;
+  if (!strcmp(ext,"GL_IMG_user_clip_plane"))                   return gl_img_user_clip_plane;
+  if (!strcmp(ext,"GL_INGR_blend_func_separate"))              return gl_ingr_blend_func_separate;
+  if (!strcmp(ext,"GL_INGR_color_clamp"))                      return gl_ingr_color_clamp;
+  if (!strcmp(ext,"GL_INGR_interlace_read"))                   return gl_ingr_interlace_read;
+  if (!strcmp(ext,"GL_INTEL_map_texture"))                     return gl_intel_map_texture;
+  if (!strcmp(ext,"GL_INTEL_parallel_arrays"))                 return gl_intel_parallel_arrays;
+  if (!strcmp(ext,"GL_INTEL_texture_scissor"))                 return gl_intel_texture_scissor;
+  if (!strcmp(ext,"GL_KHR_debug"))                             return gl_khr_debug;
+  if (!strcmp(ext,"GL_KHR_texture_compression_astc_ldr"))      return gl_khr_texture_compression_astc_ldr;
+  if (!strcmp(ext,"GL_KTX_buffer_region"))                     return gl_ktx_buffer_region;
+  if (!strcmp(ext,"GL_MESAX_texture_stack"))                   return gl_mesax_texture_stack;
+  if (!strcmp(ext,"GL_MESA_pack_invert"))                      return gl_mesa_pack_invert;
+  if (!strcmp(ext,"GL_MESA_resize_buffers"))                   return gl_mesa_resize_buffers;
+  if (!strcmp(ext,"GL_MESA_window_pos"))                       return gl_mesa_window_pos;
+  if (!strcmp(ext,"GL_MESA_ycbcr_texture"))                    return gl_mesa_ycbcr_texture;
+  if (!strcmp(ext,"GL_NVX_conditional_render"))                return gl_nvx_conditional_render;
+  if (!strcmp(ext,"GL_NVX_gpu_memory_info"))                   return gl_nvx_gpu_memory_info;
+  if (!strcmp(ext,"GL_NV_3dvision_settings"))                  return gl_nv_3dvision_settings;
+  if (!strcmp(ext,"GL_NV_bgr"))                                return gl_nv_bgr;
+  if (!strcmp(ext,"GL_NV_bindless_texture"))                   return gl_nv_bindless_texture;
+  if (!strcmp(ext,"GL_NV_blend_equation_advanced"))            return gl_nv_blend_equation_advanced;
+  if (!strcmp(ext,"GL_NV_blend_square"))                       return gl_nv_blend_square;
+  if (!strcmp(ext,"GL_NV_compute_program5"))                   return gl_nv_compute_program5;
+  if (!strcmp(ext,"GL_NV_conditional_render"))                 return gl_nv_conditional_render;
+  if (!strcmp(ext,"GL_NV_copy_buffer"))                        return gl_nv_copy_buffer;
+  if (!strcmp(ext,"GL_NV_copy_depth_to_color"))                return gl_nv_copy_depth_to_color;
+  if (!strcmp(ext,"GL_NV_copy_image"))                         return gl_nv_copy_image;
+  if (!strcmp(ext,"GL_NV_coverage_sample"))                    return gl_nv_coverage_sample;
+  if (!strcmp(ext,"GL_NV_deep_texture3D"))                     return gl_nv_deep_texture3d;
+  if (!strcmp(ext,"GL_NV_depth_buffer_float"))                 return gl_nv_depth_buffer_float;
+  if (!strcmp(ext,"GL_NV_depth_clamp"))                        return gl_nv_depth_clamp;
+  if (!strcmp(ext,"GL_NV_depth_nonlinear"))                    return gl_nv_depth_nonlinear;
+  if (!strcmp(ext,"GL_NV_depth_range_unclamped"))              return gl_nv_depth_range_unclamped;
+  if (!strcmp(ext,"GL_NV_draw_buffers"))                       return gl_nv_draw_buffers;
+  if (!strcmp(ext,"GL_NV_draw_texture"))                       return gl_nv_draw_texture;
+  if (!strcmp(ext,"GL_NV_evaluators"))                         return gl_nv_evaluators;
+  if (!strcmp(ext,"GL_NV_explicit_multisample"))               return gl_nv_explicit_multisample;
+  if (!strcmp(ext,"GL_NV_fbo_color_attachments"))              return gl_nv_fbo_color_attachments;
+  if (!strcmp(ext,"GL_NV_fence"))                              return gl_nv_fence;
+  if (!strcmp(ext,"GL_NV_float_buffer"))                       return gl_nv_float_buffer;
+  if (!strcmp(ext,"GL_NV_fog_distance"))                       return gl_nv_fog_distance;
+  if (!strcmp(ext,"GL_NV_fragment_program"))                   return gl_nv_fragment_program;
+  if (!strcmp(ext,"GL_NV_fragment_program2"))                  return gl_nv_fragment_program2;
+  if (!strcmp(ext,"GL_NV_framebuffer_blit"))                   return gl_nv_framebuffer_blit;
+  if (!strcmp(ext,"GL_NV_framebuffer_multisample"))            return gl_nv_framebuffer_multisample;
+  if (!strcmp(ext,"GL_NV_framebuffer_multisample_coverage"))   return gl_nv_framebuffer_multisample_coverage;
+  if (!strcmp(ext,"GL_NV_geometry_program4"))                  return gl_nv_geometry_program4;
+  if (!strcmp(ext,"GL_NV_gpu_program4"))                       return gl_nv_gpu_program4;
+  if (!strcmp(ext,"GL_NV_gpu_program5"))                       return gl_nv_gpu_program5;
+  if (!strcmp(ext,"GL_NV_gpu_shader5"))                        return gl_nv_gpu_shader5;
+  if (!strcmp(ext,"GL_NV_half_float"))                         return gl_nv_half_float;
+  if (!strcmp(ext,"GL_NV_instanced_arrays"))                   return gl_nv_instanced_arrays;
+  if (!strcmp(ext,"GL_NV_light_max_exponent"))                 return gl_nv_light_max_exponent;
+  if (!strcmp(ext,"GL_NV_multisample_coverage"))               return gl_nv_multisample_coverage;
+  if (!strcmp(ext,"GL_NV_multisample_filter_hint"))            return gl_nv_multisample_filter_hint;
+  if (!strcmp(ext,"GL_NV_non_square_matrices"))                return gl_nv_non_square_matrices;
+  if (!strcmp(ext,"GL_NV_occlusion_query"))                    return gl_nv_occlusion_query;
+  if (!strcmp(ext,"GL_NV_pack_subimage"))                      return gl_nv_pack_subimage;
+  if (!strcmp(ext,"GL_NV_packed_depth_stencil"))               return gl_nv_packed_depth_stencil;
+  if (!strcmp(ext,"GL_NV_packed_float_linear"))                return gl_nv_packed_float_linear;
+  if (!strcmp(ext,"GL_NV_parameter_buffer_object"))            return gl_nv_parameter_buffer_object;
+  if (!strcmp(ext,"GL_NV_path_rendering"))                     return gl_nv_path_rendering;
+  if (!strcmp(ext,"GL_NV_pixel_buffer_object"))                return gl_nv_pixel_buffer_object;
+  if (!strcmp(ext,"GL_NV_pixel_data_range"))                   return gl_nv_pixel_data_range;
+  if (!strcmp(ext,"GL_NV_platform_binary"))                    return gl_nv_platform_binary;
+  if (!strcmp(ext,"GL_NV_point_sprite"))                       return gl_nv_point_sprite;
+  if (!strcmp(ext,"GL_NV_present_video"))                      return gl_nv_present_video;
+  if (!strcmp(ext,"GL_NV_primitive_restart"))                  return gl_nv_primitive_restart;
+  if (!strcmp(ext,"GL_NV_read_buffer"))                        return gl_nv_read_buffer;
+  if (!strcmp(ext,"GL_NV_read_buffer_front"))                  return gl_nv_read_buffer_front;
+  if (!strcmp(ext,"GL_NV_register_combiners"))                 return gl_nv_register_combiners;
+  if (!strcmp(ext,"GL_NV_register_combiners2"))                return gl_nv_register_combiners2;
+  if (!strcmp(ext,"GL_NV_sRGB_formats"))                       return gl_nv_srgb_formats;
+  if (!strcmp(ext,"GL_NV_shader_buffer_load"))                 return gl_nv_shader_buffer_load;
+  if (!strcmp(ext,"GL_NV_shadow_samplers_array"))              return gl_nv_shadow_samplers_array;
+  if (!strcmp(ext,"GL_NV_shadow_samplers_cube"))               return gl_nv_shadow_samplers_cube;
+  if (!strcmp(ext,"GL_NV_tessellation_program5"))              return gl_nv_tessellation_program5;
+  if (!strcmp(ext,"GL_NV_texgen_emboss"))                      return gl_nv_texgen_emboss;
+  if (!strcmp(ext,"GL_NV_texgen_reflection"))                  return gl_nv_texgen_reflection;
+  if (!strcmp(ext,"GL_NV_texture_array"))                      return gl_nv_texture_array;
+  if (!strcmp(ext,"GL_NV_texture_barrier"))                    return gl_nv_texture_barrier;
+  if (!strcmp(ext,"GL_NV_texture_border_clamp"))               return gl_nv_texture_border_clamp;
+  if (!strcmp(ext,"GL_NV_texture_compression_latc"))           return gl_nv_texture_compression_latc;
+  if (!strcmp(ext,"GL_NV_texture_compression_s3tc"))           return gl_nv_texture_compression_s3tc;
+  if (!strcmp(ext,"GL_NV_texture_env_combine4"))               return gl_nv_texture_env_combine4;
+  if (!strcmp(ext,"GL_NV_texture_expand_normal"))              return gl_nv_texture_expand_normal;
+  if (!strcmp(ext,"GL_NV_texture_multisample"))                return gl_nv_texture_multisample;
+  if (!strcmp(ext,"GL_NV_texture_rectangle"))                  return gl_nv_texture_rectangle;
+  if (!strcmp(ext,"GL_NV_texture_shader"))                     return gl_nv_texture_shader;
+  if (!strcmp(ext,"GL_NV_texture_shader2"))                    return gl_nv_texture_shader2;
+  if (!strcmp(ext,"GL_NV_texture_shader3"))                    return gl_nv_texture_shader3;
+  if (!strcmp(ext,"GL_NV_transform_feedback"))                 return gl_nv_transform_feedback;
+  if (!strcmp(ext,"GL_NV_transform_feedback2"))                return gl_nv_transform_feedback2;
+  if (!strcmp(ext,"GL_NV_vdpau_interop"))                      return gl_nv_vdpau_interop;
+  if (!strcmp(ext,"GL_NV_vertex_array_range"))                 return gl_nv_vertex_array_range;
+  if (!strcmp(ext,"GL_NV_vertex_array_range2"))                return gl_nv_vertex_array_range2;
+  if (!strcmp(ext,"GL_NV_vertex_attrib_integer_64bit"))        return gl_nv_vertex_attrib_integer_64bit;
+  if (!strcmp(ext,"GL_NV_vertex_buffer_unified_memory"))       return gl_nv_vertex_buffer_unified_memory;
+  if (!strcmp(ext,"GL_NV_vertex_program"))                     return gl_nv_vertex_program;
+  if (!strcmp(ext,"GL_NV_vertex_program2_option"))             return gl_nv_vertex_program2_option;
+  if (!strcmp(ext,"GL_NV_vertex_program3"))                    return gl_nv_vertex_program3;
+  if (!strcmp(ext,"GL_NV_vertex_program4"))                    return gl_nv_vertex_program4;
+  if (!strcmp(ext,"GL_NV_video_capture"))                      return gl_nv_video_capture;
+  if (!strcmp(ext,"GL_OES_EGL_image_external"))                return gl_oes_egl_image_external;
+  if (!strcmp(ext,"GL_OES_blend_equation_separate"))           return gl_oes_blend_equation_separate;
+  if (!strcmp(ext,"GL_OES_blend_func_separate"))               return gl_oes_blend_func_separate;
+  if (!strcmp(ext,"GL_OES_blend_subtract"))                    return gl_oes_blend_subtract;
+  if (!strcmp(ext,"GL_OES_compressed_ETC1_RGB8_texture"))      return gl_oes_compressed_etc1_rgb8_texture;
+  if (!strcmp(ext,"GL_OES_compressed_paletted_texture"))       return gl_oes_compressed_paletted_texture;
+  if (!strcmp(ext,"GL_OES_depth_texture"))                     return gl_oes_depth_texture;
+  if (!strcmp(ext,"GL_OES_draw_texture"))                      return gl_oes_draw_texture;
+  if (!strcmp(ext,"GL_OES_element_index_uint"))                return gl_oes_element_index_uint;
+  if (!strcmp(ext,"GL_OES_fbo_render_mipmap"))                 return gl_oes_fbo_render_mipmap;
+  if (!strcmp(ext,"GL_OES_framebuffer_object"))                return gl_oes_framebuffer_object;
+  if (!strcmp(ext,"GL_OES_get_program_binary"))                return gl_oes_get_program_binary;
+  if (!strcmp(ext,"GL_OES_mapbuffer"))                         return gl_oes_mapbuffer;
+  if (!strcmp(ext,"GL_OES_matrix_get"))                        return gl_oes_matrix_get;
+  if (!strcmp(ext,"GL_OES_matrix_palette"))                    return gl_oes_matrix_palette;
+  if (!strcmp(ext,"GL_OES_packed_depth_stencil"))              return gl_oes_packed_depth_stencil;
+  if (!strcmp(ext,"GL_OES_point_size_array"))                  return gl_oes_point_size_array;
+  if (!strcmp(ext,"GL_OES_point_sprite"))                      return gl_oes_point_sprite;
+  if (!strcmp(ext,"GL_OES_read_format"))                       return gl_oes_read_format;
+  if (!strcmp(ext,"GL_OES_required_internalformat"))           return gl_oes_required_internalformat;
+  if (!strcmp(ext,"GL_OES_rgb8_rgba8"))                        return gl_oes_rgb8_rgba8;
+  if (!strcmp(ext,"GL_OES_single_precision"))                  return gl_oes_single_precision;
+  if (!strcmp(ext,"GL_OES_standard_derivatives"))              return gl_oes_standard_derivatives;
+  if (!strcmp(ext,"GL_OES_stencil1"))                          return gl_oes_stencil1;
+  if (!strcmp(ext,"GL_OES_stencil4"))                          return gl_oes_stencil4;
+  if (!strcmp(ext,"GL_OES_stencil8"))                          return gl_oes_stencil8;
+  if (!strcmp(ext,"GL_OES_surfaceless_context"))               return gl_oes_surfaceless_context;
+  if (!strcmp(ext,"GL_OES_texture_3D"))                        return gl_oes_texture_3d;
+  if (!strcmp(ext,"GL_OES_texture_cube_map"))                  return gl_oes_texture_cube_map;
+  if (!strcmp(ext,"GL_OES_texture_mirrored_repeat"))           return gl_oes_texture_mirrored_repeat;
+  if (!strcmp(ext,"GL_OES_vertex_array_object"))               return gl_oes_vertex_array_object;
+  if (!strcmp(ext,"GL_OES_vertex_half_float"))                 return gl_oes_vertex_half_float;
+  if (!strcmp(ext,"GL_OES_vertex_type_10_10_10_2"))            return gl_oes_vertex_type_10_10_10_2;
+  if (!strcmp(ext,"GL_OML_interlace"))                         return gl_oml_interlace;
+  if (!strcmp(ext,"GL_OML_resample"))                          return gl_oml_resample;
+  if (!strcmp(ext,"GL_OML_subsample"))                         return gl_oml_subsample;
+  if (!strcmp(ext,"GL_PGI_misc_hints"))                        return gl_pgi_misc_hints;
+  if (!strcmp(ext,"GL_PGI_vertex_hints"))                      return gl_pgi_vertex_hints;
+  if (!strcmp(ext,"GL_QCOM_alpha_test"))                       return gl_qcom_alpha_test;
+  if (!strcmp(ext,"GL_QCOM_binning_control"))                  return gl_qcom_binning_control;
+  if (!strcmp(ext,"GL_QCOM_driver_control"))                   return gl_qcom_driver_control;
+  if (!strcmp(ext,"GL_QCOM_extended_get"))                     return gl_qcom_extended_get;
+  if (!strcmp(ext,"GL_QCOM_extended_get2"))                    return gl_qcom_extended_get2;
+  if (!strcmp(ext,"GL_QCOM_perfmon_global_mode"))              return gl_qcom_perfmon_global_mode;
+  if (!strcmp(ext,"GL_QCOM_tiled_rendering"))                  return gl_qcom_tiled_rendering;
+  if (!strcmp(ext,"GL_QCOM_writeonly_rendering"))              return gl_qcom_writeonly_rendering;
+  if (!strcmp(ext,"GL_REGAL_ES1_0_compatibility"))             return gl_regal_es1_0_compatibility;
+  if (!strcmp(ext,"GL_REGAL_ES1_1_compatibility"))             return gl_regal_es1_1_compatibility;
+  if (!strcmp(ext,"GL_REGAL_enable"))                          return gl_regal_enable;
+  if (!strcmp(ext,"GL_REGAL_error_string"))                    return gl_regal_error_string;
+  if (!strcmp(ext,"GL_REGAL_extension_query"))                 return gl_regal_extension_query;
+  if (!strcmp(ext,"GL_REGAL_log"))                             return gl_regal_log;
+  if (!strcmp(ext,"GL_REND_screen_coordinates"))               return gl_rend_screen_coordinates;
+  if (!strcmp(ext,"GL_S3_s3tc"))                               return gl_s3_s3tc;
+  if (!strcmp(ext,"GL_SGIS_color_range"))                      return gl_sgis_color_range;
+  if (!strcmp(ext,"GL_SGIS_detail_texture"))                   return gl_sgis_detail_texture;
+  if (!strcmp(ext,"GL_SGIS_fog_function"))                     return gl_sgis_fog_function;
+  if (!strcmp(ext,"GL_SGIS_generate_mipmap"))                  return gl_sgis_generate_mipmap;
+  if (!strcmp(ext,"GL_SGIS_multisample"))                      return gl_sgis_multisample;
+  if (!strcmp(ext,"GL_SGIS_pixel_texture"))                    return gl_sgis_pixel_texture;
+  if (!strcmp(ext,"GL_SGIS_point_line_texgen"))                return gl_sgis_point_line_texgen;
+  if (!strcmp(ext,"GL_SGIS_point_parameters"))                 return gl_sgis_point_parameters;
+  if (!strcmp(ext,"GL_SGIS_sharpen_texture"))                  return gl_sgis_sharpen_texture;
+  if (!strcmp(ext,"GL_SGIS_texture4D"))                        return gl_sgis_texture4d;
+  if (!strcmp(ext,"GL_SGIS_texture_border_clamp"))             return gl_sgis_texture_border_clamp;
+  if (!strcmp(ext,"GL_SGIS_texture_color_mask"))               return gl_sgis_texture_color_mask;
+  if (!strcmp(ext,"GL_SGIS_texture_edge_clamp"))               return gl_sgis_texture_edge_clamp;
+  if (!strcmp(ext,"GL_SGIS_texture_filter4"))                  return gl_sgis_texture_filter4;
+  if (!strcmp(ext,"GL_SGIS_texture_lod"))                      return gl_sgis_texture_lod;
+  if (!strcmp(ext,"GL_SGIX_async"))                            return gl_sgix_async;
+  if (!strcmp(ext,"GL_SGIX_async_histogram"))                  return gl_sgix_async_histogram;
+  if (!strcmp(ext,"GL_SGIX_async_pixel"))                      return gl_sgix_async_pixel;
+  if (!strcmp(ext,"GL_SGIX_blend_alpha_minmax"))               return gl_sgix_blend_alpha_minmax;
+  if (!strcmp(ext,"GL_SGIX_convolution_accuracy"))             return gl_sgix_convolution_accuracy;
+  if (!strcmp(ext,"GL_SGIX_depth_texture"))                    return gl_sgix_depth_texture;
+  if (!strcmp(ext,"GL_SGIX_flush_raster"))                     return gl_sgix_flush_raster;
+  if (!strcmp(ext,"GL_SGIX_fog_offset"))                       return gl_sgix_fog_offset;
+  if (!strcmp(ext,"GL_SGIX_fog_texture"))                      return gl_sgix_fog_texture;
+  if (!strcmp(ext,"GL_SGIX_fragment_lighting"))                return gl_sgix_fragment_lighting;
+  if (!strcmp(ext,"GL_SGIX_fragment_specular_lighting"))       return gl_sgix_fragment_specular_lighting;
+  if (!strcmp(ext,"GL_SGIX_framezoom"))                        return gl_sgix_framezoom;
+  if (!strcmp(ext,"GL_SGIX_igloo_interface"))                  return gl_sgix_igloo_interface;
+  if (!strcmp(ext,"GL_SGIX_instruments"))                      return gl_sgix_instruments;
+  if (!strcmp(ext,"GL_SGIX_interlace"))                        return gl_sgix_interlace;
+  if (!strcmp(ext,"GL_SGIX_list_priority"))                    return gl_sgix_list_priority;
+  if (!strcmp(ext,"GL_SGIX_pixel_texture"))                    return gl_sgix_pixel_texture;
+  if (!strcmp(ext,"GL_SGIX_polynomial_ffd"))                   return gl_sgix_polynomial_ffd;
+  if (!strcmp(ext,"GL_SGIX_reference_plane"))                  return gl_sgix_reference_plane;
+  if (!strcmp(ext,"GL_SGIX_resample"))                         return gl_sgix_resample;
+  if (!strcmp(ext,"GL_SGIX_shadow"))                           return gl_sgix_shadow;
+  if (!strcmp(ext,"GL_SGIX_shadow_ambient"))                   return gl_sgix_shadow_ambient;
+  if (!strcmp(ext,"GL_SGIX_sprite"))                           return gl_sgix_sprite;
+  if (!strcmp(ext,"GL_SGIX_tag_sample_buffer"))                return gl_sgix_tag_sample_buffer;
+  if (!strcmp(ext,"GL_SGIX_texture_coordinate_clamp"))         return gl_sgix_texture_coordinate_clamp;
+  if (!strcmp(ext,"GL_SGIX_texture_multi_buffer"))             return gl_sgix_texture_multi_buffer;
+  if (!strcmp(ext,"GL_SGIX_texture_range"))                    return gl_sgix_texture_range;
+  if (!strcmp(ext,"GL_SGIX_texture_scale_bias"))               return gl_sgix_texture_scale_bias;
+  if (!strcmp(ext,"GL_SGIX_vertex_preclip_hint"))              return gl_sgix_vertex_preclip_hint;
+  if (!strcmp(ext,"GL_SGIX_ycrcb"))                            return gl_sgix_ycrcb;
+  if (!strcmp(ext,"GL_SGI_color_matrix"))                      return gl_sgi_color_matrix;
+  if (!strcmp(ext,"GL_SGI_color_table"))                       return gl_sgi_color_table;
+  if (!strcmp(ext,"GL_SGI_texture_color_table"))               return gl_sgi_texture_color_table;
+  if (!strcmp(ext,"GL_SUNX_constant_data"))                    return gl_sunx_constant_data;
+  if (!strcmp(ext,"GL_SUN_convolution_border_modes"))          return gl_sun_convolution_border_modes;
+  if (!strcmp(ext,"GL_SUN_global_alpha"))                      return gl_sun_global_alpha;
+  if (!strcmp(ext,"GL_SUN_mesh_array"))                        return gl_sun_mesh_array;
+  if (!strcmp(ext,"GL_SUN_read_video_pixels"))                 return gl_sun_read_video_pixels;
+  if (!strcmp(ext,"GL_SUN_slice_accum"))                       return gl_sun_slice_accum;
+  if (!strcmp(ext,"GL_SUN_triangle_list"))                     return gl_sun_triangle_list;
+  if (!strcmp(ext,"GL_SUN_vertex"))                            return gl_sun_vertex;
+  if (!strcmp(ext,"GL_VIV_shader_binary"))                     return gl_viv_shader_binary;
+  if (!strcmp(ext,"GL_WIN_phong_shading"))                     return gl_win_phong_shading;
+  if (!strcmp(ext,"GL_WIN_specular_fog"))                      return gl_win_specular_fog;
+  if (!strcmp(ext,"GL_WIN_swap_hint"))                         return gl_win_swap_hint;
 
 #if REGAL_SYS_WGL
-  if (!strcmp(ext,"WGL_3DL_stereo_control")) return wgl_3dl_stereo_control;
-  if (!strcmp(ext,"WGL_AMD_gpu_association")) return wgl_amd_gpu_association;
-  if (!strcmp(ext,"WGL_ARB_buffer_region")) return wgl_arb_buffer_region;
-  if (!strcmp(ext,"WGL_ARB_create_context")) return wgl_arb_create_context;
-  if (!strcmp(ext,"WGL_ARB_create_context_profile")) return wgl_arb_create_context_profile;
-  if (!strcmp(ext,"WGL_ARB_create_context_robustness")) return wgl_arb_create_context_robustness;
-  if (!strcmp(ext,"WGL_ARB_extensions_string")) return wgl_arb_extensions_string;
-  if (!strcmp(ext,"WGL_ARB_framebuffer_sRGB")) return wgl_arb_framebuffer_srgb;
-  if (!strcmp(ext,"WGL_ARB_make_current_read")) return wgl_arb_make_current_read;
-  if (!strcmp(ext,"WGL_ARB_multisample")) return wgl_arb_multisample;
-  if (!strcmp(ext,"WGL_ARB_pbuffer")) return wgl_arb_pbuffer;
-  if (!strcmp(ext,"WGL_ARB_pixel_format")) return wgl_arb_pixel_format;
-  if (!strcmp(ext,"WGL_ARB_pixel_format_float")) return wgl_arb_pixel_format_float;
-  if (!strcmp(ext,"WGL_ARB_render_texture")) return wgl_arb_render_texture;
+  if (!strcmp(ext,"WGL_3DL_stereo_control"))                   return wgl_3dl_stereo_control;
+  if (!strcmp(ext,"WGL_AMD_gpu_association"))                  return wgl_amd_gpu_association;
+  if (!strcmp(ext,"WGL_ARB_buffer_region"))                    return wgl_arb_buffer_region;
+  if (!strcmp(ext,"WGL_ARB_create_context"))                   return wgl_arb_create_context;
+  if (!strcmp(ext,"WGL_ARB_create_context_profile"))           return wgl_arb_create_context_profile;
+  if (!strcmp(ext,"WGL_ARB_create_context_robustness"))        return wgl_arb_create_context_robustness;
+  if (!strcmp(ext,"WGL_ARB_extensions_string"))                return wgl_arb_extensions_string;
+  if (!strcmp(ext,"WGL_ARB_framebuffer_sRGB"))                 return wgl_arb_framebuffer_srgb;
+  if (!strcmp(ext,"WGL_ARB_make_current_read"))                return wgl_arb_make_current_read;
+  if (!strcmp(ext,"WGL_ARB_multisample"))                      return wgl_arb_multisample;
+  if (!strcmp(ext,"WGL_ARB_pbuffer"))                          return wgl_arb_pbuffer;
+  if (!strcmp(ext,"WGL_ARB_pixel_format"))                     return wgl_arb_pixel_format;
+  if (!strcmp(ext,"WGL_ARB_pixel_format_float"))               return wgl_arb_pixel_format_float;
+  if (!strcmp(ext,"WGL_ARB_render_texture"))                   return wgl_arb_render_texture;
   if (!strcmp(ext,"WGL_ARB_robustness_share_group_isolation")) return wgl_arb_robustness_share_group_isolation;
-  if (!strcmp(ext,"WGL_ATI_pixel_format_float")) return wgl_ati_pixel_format_float;
-  if (!strcmp(ext,"WGL_ATI_render_texture_rectangle")) return wgl_ati_render_texture_rectangle;
-  if (!strcmp(ext,"WGL_EXT_create_context_es2_profile")) return wgl_ext_create_context_es2_profile;
-  if (!strcmp(ext,"WGL_EXT_create_context_es_profile")) return wgl_ext_create_context_es_profile;
-  if (!strcmp(ext,"WGL_EXT_depth_float")) return wgl_ext_depth_float;
-  if (!strcmp(ext,"WGL_EXT_display_color_table")) return wgl_ext_display_color_table;
-  if (!strcmp(ext,"WGL_EXT_extensions_string")) return wgl_ext_extensions_string;
-  if (!strcmp(ext,"WGL_EXT_framebuffer_sRGB")) return wgl_ext_framebuffer_srgb;
-  if (!strcmp(ext,"WGL_EXT_make_current_read")) return wgl_ext_make_current_read;
-  if (!strcmp(ext,"WGL_EXT_multisample")) return wgl_ext_multisample;
-  if (!strcmp(ext,"WGL_EXT_pbuffer")) return wgl_ext_pbuffer;
-  if (!strcmp(ext,"WGL_EXT_pixel_format")) return wgl_ext_pixel_format;
-  if (!strcmp(ext,"WGL_EXT_pixel_format_packed_float")) return wgl_ext_pixel_format_packed_float;
-  if (!strcmp(ext,"WGL_EXT_swap_control")) return wgl_ext_swap_control;
-  if (!strcmp(ext,"WGL_GDI")) return wgl_gdi;
-  if (!strcmp(ext,"WGL_I3D_digital_video_control")) return wgl_i3d_digital_video_control;
-  if (!strcmp(ext,"WGL_I3D_gamma")) return wgl_i3d_gamma;
-  if (!strcmp(ext,"WGL_I3D_genlock")) return wgl_i3d_genlock;
-  if (!strcmp(ext,"WGL_I3D_image_buffer")) return wgl_i3d_image_buffer;
-  if (!strcmp(ext,"WGL_I3D_swap_frame_lock")) return wgl_i3d_swap_frame_lock;
-  if (!strcmp(ext,"WGL_I3D_swap_frame_usage")) return wgl_i3d_swap_frame_usage;
-  if (!strcmp(ext,"WGL_NV_DX_interop")) return wgl_nv_dx_interop;
-  if (!strcmp(ext,"WGL_NV_copy_image")) return wgl_nv_copy_image;
-  if (!strcmp(ext,"WGL_NV_float_buffer")) return wgl_nv_float_buffer;
-  if (!strcmp(ext,"WGL_NV_gpu_affinity")) return wgl_nv_gpu_affinity;
-  if (!strcmp(ext,"WGL_NV_multisample_coverage")) return wgl_nv_multisample_coverage;
-  if (!strcmp(ext,"WGL_NV_present_video")) return wgl_nv_present_video;
-  if (!strcmp(ext,"WGL_NV_render_depth_texture")) return wgl_nv_render_depth_texture;
-  if (!strcmp(ext,"WGL_NV_render_texture_rectangle")) return wgl_nv_render_texture_rectangle;
-  if (!strcmp(ext,"WGL_NV_swap_group")) return wgl_nv_swap_group;
-  if (!strcmp(ext,"WGL_NV_vertex_array_range")) return wgl_nv_vertex_array_range;
-  if (!strcmp(ext,"WGL_NV_video_capture")) return wgl_nv_video_capture;
-  if (!strcmp(ext,"WGL_NV_video_output")) return wgl_nv_video_output;
-  if (!strcmp(ext,"WGL_OML_sync_control")) return wgl_oml_sync_control;
-#endif
+  if (!strcmp(ext,"WGL_ATI_pixel_format_float"))               return wgl_ati_pixel_format_float;
+  if (!strcmp(ext,"WGL_ATI_render_texture_rectangle"))         return wgl_ati_render_texture_rectangle;
+  if (!strcmp(ext,"WGL_EXT_create_context_es2_profile"))       return wgl_ext_create_context_es2_profile;
+  if (!strcmp(ext,"WGL_EXT_create_context_es_profile"))        return wgl_ext_create_context_es_profile;
+  if (!strcmp(ext,"WGL_EXT_depth_float"))                      return wgl_ext_depth_float;
+  if (!strcmp(ext,"WGL_EXT_display_color_table"))              return wgl_ext_display_color_table;
+  if (!strcmp(ext,"WGL_EXT_extensions_string"))                return wgl_ext_extensions_string;
+  if (!strcmp(ext,"WGL_EXT_framebuffer_sRGB"))                 return wgl_ext_framebuffer_srgb;
+  if (!strcmp(ext,"WGL_EXT_make_current_read"))                return wgl_ext_make_current_read;
+  if (!strcmp(ext,"WGL_EXT_multisample"))                      return wgl_ext_multisample;
+  if (!strcmp(ext,"WGL_EXT_pbuffer"))                          return wgl_ext_pbuffer;
+  if (!strcmp(ext,"WGL_EXT_pixel_format"))                     return wgl_ext_pixel_format;
+  if (!strcmp(ext,"WGL_EXT_pixel_format_packed_float"))        return wgl_ext_pixel_format_packed_float;
+  if (!strcmp(ext,"WGL_EXT_swap_control"))                     return wgl_ext_swap_control;
+  if (!strcmp(ext,"WGL_GDI"))                                  return wgl_gdi;
+  if (!strcmp(ext,"WGL_I3D_digital_video_control"))            return wgl_i3d_digital_video_control;
+  if (!strcmp(ext,"WGL_I3D_gamma"))                            return wgl_i3d_gamma;
+  if (!strcmp(ext,"WGL_I3D_genlock"))                          return wgl_i3d_genlock;
+  if (!strcmp(ext,"WGL_I3D_image_buffer"))                     return wgl_i3d_image_buffer;
+  if (!strcmp(ext,"WGL_I3D_swap_frame_lock"))                  return wgl_i3d_swap_frame_lock;
+  if (!strcmp(ext,"WGL_I3D_swap_frame_usage"))                 return wgl_i3d_swap_frame_usage;
+  if (!strcmp(ext,"WGL_NV_DX_interop"))                        return wgl_nv_dx_interop;
+  if (!strcmp(ext,"WGL_NV_copy_image"))                        return wgl_nv_copy_image;
+  if (!strcmp(ext,"WGL_NV_float_buffer"))                      return wgl_nv_float_buffer;
+  if (!strcmp(ext,"WGL_NV_gpu_affinity"))                      return wgl_nv_gpu_affinity;
+  if (!strcmp(ext,"WGL_NV_multisample_coverage"))              return wgl_nv_multisample_coverage;
+  if (!strcmp(ext,"WGL_NV_present_video"))                     return wgl_nv_present_video;
+  if (!strcmp(ext,"WGL_NV_render_depth_texture"))              return wgl_nv_render_depth_texture;
+  if (!strcmp(ext,"WGL_NV_render_texture_rectangle"))          return wgl_nv_render_texture_rectangle;
+  if (!strcmp(ext,"WGL_NV_swap_group"))                        return wgl_nv_swap_group;
+  if (!strcmp(ext,"WGL_NV_vertex_array_range"))                return wgl_nv_vertex_array_range;
+  if (!strcmp(ext,"WGL_NV_video_capture"))                     return wgl_nv_video_capture;
+  if (!strcmp(ext,"WGL_NV_video_output"))                      return wgl_nv_video_output;
+  if (!strcmp(ext,"WGL_OML_sync_control"))                     return wgl_oml_sync_control;
+#endif /* REGAL_SYS_WGL */
 
 #if REGAL_SYS_GLX
-  if (!strcmp(ext,"GLX_3DFX_multisample")) return glx_3dfx_multisample;
-  if (!strcmp(ext,"GLX_AMD_gpu_association")) return glx_amd_gpu_association;
-  if (!strcmp(ext,"GLX_ARB_create_context")) return glx_arb_create_context;
-  if (!strcmp(ext,"GLX_ARB_create_context_profile")) return glx_arb_create_context_profile;
-  if (!strcmp(ext,"GLX_ARB_create_context_robustness")) return glx_arb_create_context_robustness;
-  if (!strcmp(ext,"GLX_ARB_fbconfig_float")) return glx_arb_fbconfig_float;
-  if (!strcmp(ext,"GLX_ARB_framebuffer_sRGB")) return glx_arb_framebuffer_srgb;
-  if (!strcmp(ext,"GLX_ARB_get_proc_address")) return glx_arb_get_proc_address;
-  if (!strcmp(ext,"GLX_ARB_multisample")) return glx_arb_multisample;
+  if (!strcmp(ext,"GLX_3DFX_multisample"))                     return glx_3dfx_multisample;
+  if (!strcmp(ext,"GLX_AMD_gpu_association"))                  return glx_amd_gpu_association;
+  if (!strcmp(ext,"GLX_ARB_create_context"))                   return glx_arb_create_context;
+  if (!strcmp(ext,"GLX_ARB_create_context_profile"))           return glx_arb_create_context_profile;
+  if (!strcmp(ext,"GLX_ARB_create_context_robustness"))        return glx_arb_create_context_robustness;
+  if (!strcmp(ext,"GLX_ARB_fbconfig_float"))                   return glx_arb_fbconfig_float;
+  if (!strcmp(ext,"GLX_ARB_framebuffer_sRGB"))                 return glx_arb_framebuffer_srgb;
+  if (!strcmp(ext,"GLX_ARB_get_proc_address"))                 return glx_arb_get_proc_address;
+  if (!strcmp(ext,"GLX_ARB_multisample"))                      return glx_arb_multisample;
   if (!strcmp(ext,"GLX_ARB_robustness_share_group_isolation")) return glx_arb_robustness_share_group_isolation;
-  if (!strcmp(ext,"GLX_ARB_vertex_buffer_object")) return glx_arb_vertex_buffer_object;
-  if (!strcmp(ext,"GLX_ATI_pixel_format_float")) return glx_ati_pixel_format_float;
-  if (!strcmp(ext,"GLX_ATI_render_texture")) return glx_ati_render_texture;
-  if (!strcmp(ext,"GLX_EXT_create_context_es2_profile")) return glx_ext_create_context_es2_profile;
-  if (!strcmp(ext,"GLX_EXT_create_context_es_profile")) return glx_ext_create_context_es_profile;
-  if (!strcmp(ext,"GLX_EXT_fbconfig_packed_float")) return glx_ext_fbconfig_packed_float;
-  if (!strcmp(ext,"GLX_EXT_framebuffer_sRGB")) return glx_ext_framebuffer_srgb;
-  if (!strcmp(ext,"GLX_EXT_import_context")) return glx_ext_import_context;
-  if (!strcmp(ext,"GLX_EXT_swap_control")) return glx_ext_swap_control;
-  if (!strcmp(ext,"GLX_EXT_swap_control_tear")) return glx_ext_swap_control_tear;
-  if (!strcmp(ext,"GLX_EXT_texture_from_pixmap")) return glx_ext_texture_from_pixmap;
-  if (!strcmp(ext,"GLX_EXT_visual_info")) return glx_ext_visual_info;
-  if (!strcmp(ext,"GLX_EXT_visual_rating")) return glx_ext_visual_rating;
-  if (!strcmp(ext,"GLX_INTEL_swap_event")) return glx_intel_swap_event;
-  if (!strcmp(ext,"GLX_MESA_agp_offset")) return glx_mesa_agp_offset;
-  if (!strcmp(ext,"GLX_MESA_copy_sub_buffer")) return glx_mesa_copy_sub_buffer;
-  if (!strcmp(ext,"GLX_MESA_pixmap_colormap")) return glx_mesa_pixmap_colormap;
-  if (!strcmp(ext,"GLX_MESA_release_buffers")) return glx_mesa_release_buffers;
-  if (!strcmp(ext,"GLX_MESA_set_3dfx_mode")) return glx_mesa_set_3dfx_mode;
-  if (!strcmp(ext,"GLX_MESA_swap_control")) return glx_mesa_swap_control;
-  if (!strcmp(ext,"GLX_NV_copy_image")) return glx_nv_copy_image;
-  if (!strcmp(ext,"GLX_NV_float_buffer")) return glx_nv_float_buffer;
-  if (!strcmp(ext,"GLX_NV_multisample_coverage")) return glx_nv_multisample_coverage;
-  if (!strcmp(ext,"GLX_NV_present_video")) return glx_nv_present_video;
-  if (!strcmp(ext,"GLX_NV_swap_group")) return glx_nv_swap_group;
-  if (!strcmp(ext,"GLX_NV_vertex_array_range")) return glx_nv_vertex_array_range;
-  if (!strcmp(ext,"GLX_NV_video_capture")) return glx_nv_video_capture;
-  if (!strcmp(ext,"GLX_NV_video_output")) return glx_nv_video_output;
-  if (!strcmp(ext,"GLX_OML_swap_method")) return glx_oml_swap_method;
-  if (!strcmp(ext,"GLX_OML_sync_control")) return glx_oml_sync_control;
-  if (!strcmp(ext,"GLX_SGIS_blended_overlay")) return glx_sgis_blended_overlay;
-  if (!strcmp(ext,"GLX_SGIS_color_range")) return glx_sgis_color_range;
-  if (!strcmp(ext,"GLX_SGIS_multisample")) return glx_sgis_multisample;
-  if (!strcmp(ext,"GLX_SGIS_shared_multisample")) return glx_sgis_shared_multisample;
-  if (!strcmp(ext,"GLX_SGIX_fbconfig")) return glx_sgix_fbconfig;
-  if (!strcmp(ext,"GLX_SGIX_hyperpipe")) return glx_sgix_hyperpipe;
-  if (!strcmp(ext,"GLX_SGIX_pbuffer")) return glx_sgix_pbuffer;
-  if (!strcmp(ext,"GLX_SGIX_swap_barrier")) return glx_sgix_swap_barrier;
-  if (!strcmp(ext,"GLX_SGIX_swap_group")) return glx_sgix_swap_group;
-  if (!strcmp(ext,"GLX_SGIX_video_resize")) return glx_sgix_video_resize;
-  if (!strcmp(ext,"GLX_SGIX_visual_select_group")) return glx_sgix_visual_select_group;
-  if (!strcmp(ext,"GLX_SGI_cushion")) return glx_sgi_cushion;
-  if (!strcmp(ext,"GLX_SGI_make_current_read")) return glx_sgi_make_current_read;
-  if (!strcmp(ext,"GLX_SGI_swap_control")) return glx_sgi_swap_control;
-  if (!strcmp(ext,"GLX_SGI_video_sync")) return glx_sgi_video_sync;
-  if (!strcmp(ext,"GLX_SUN_get_transparent_index")) return glx_sun_get_transparent_index;
-  if (!strcmp(ext,"GLX_SUN_video_resize")) return glx_sun_video_resize;
-#endif
+  if (!strcmp(ext,"GLX_ARB_vertex_buffer_object"))             return glx_arb_vertex_buffer_object;
+  if (!strcmp(ext,"GLX_ATI_pixel_format_float"))               return glx_ati_pixel_format_float;
+  if (!strcmp(ext,"GLX_ATI_render_texture"))                   return glx_ati_render_texture;
+  if (!strcmp(ext,"GLX_EXT_create_context_es2_profile"))       return glx_ext_create_context_es2_profile;
+  if (!strcmp(ext,"GLX_EXT_create_context_es_profile"))        return glx_ext_create_context_es_profile;
+  if (!strcmp(ext,"GLX_EXT_fbconfig_packed_float"))            return glx_ext_fbconfig_packed_float;
+  if (!strcmp(ext,"GLX_EXT_framebuffer_sRGB"))                 return glx_ext_framebuffer_srgb;
+  if (!strcmp(ext,"GLX_EXT_import_context"))                   return glx_ext_import_context;
+  if (!strcmp(ext,"GLX_EXT_swap_control"))                     return glx_ext_swap_control;
+  if (!strcmp(ext,"GLX_EXT_swap_control_tear"))                return glx_ext_swap_control_tear;
+  if (!strcmp(ext,"GLX_EXT_texture_from_pixmap"))              return glx_ext_texture_from_pixmap;
+  if (!strcmp(ext,"GLX_EXT_visual_info"))                      return glx_ext_visual_info;
+  if (!strcmp(ext,"GLX_EXT_visual_rating"))                    return glx_ext_visual_rating;
+  if (!strcmp(ext,"GLX_INTEL_swap_event"))                     return glx_intel_swap_event;
+  if (!strcmp(ext,"GLX_MESA_agp_offset"))                      return glx_mesa_agp_offset;
+  if (!strcmp(ext,"GLX_MESA_copy_sub_buffer"))                 return glx_mesa_copy_sub_buffer;
+  if (!strcmp(ext,"GLX_MESA_pixmap_colormap"))                 return glx_mesa_pixmap_colormap;
+  if (!strcmp(ext,"GLX_MESA_release_buffers"))                 return glx_mesa_release_buffers;
+  if (!strcmp(ext,"GLX_MESA_set_3dfx_mode"))                   return glx_mesa_set_3dfx_mode;
+  if (!strcmp(ext,"GLX_MESA_swap_control"))                    return glx_mesa_swap_control;
+  if (!strcmp(ext,"GLX_NV_copy_image"))                        return glx_nv_copy_image;
+  if (!strcmp(ext,"GLX_NV_float_buffer"))                      return glx_nv_float_buffer;
+  if (!strcmp(ext,"GLX_NV_multisample_coverage"))              return glx_nv_multisample_coverage;
+  if (!strcmp(ext,"GLX_NV_present_video"))                     return glx_nv_present_video;
+  if (!strcmp(ext,"GLX_NV_swap_group"))                        return glx_nv_swap_group;
+  if (!strcmp(ext,"GLX_NV_vertex_array_range"))                return glx_nv_vertex_array_range;
+  if (!strcmp(ext,"GLX_NV_video_capture"))                     return glx_nv_video_capture;
+  if (!strcmp(ext,"GLX_NV_video_output"))                      return glx_nv_video_output;
+  if (!strcmp(ext,"GLX_OML_swap_method"))                      return glx_oml_swap_method;
+  if (!strcmp(ext,"GLX_OML_sync_control"))                     return glx_oml_sync_control;
+  if (!strcmp(ext,"GLX_SGIS_blended_overlay"))                 return glx_sgis_blended_overlay;
+  if (!strcmp(ext,"GLX_SGIS_color_range"))                     return glx_sgis_color_range;
+  if (!strcmp(ext,"GLX_SGIS_multisample"))                     return glx_sgis_multisample;
+  if (!strcmp(ext,"GLX_SGIS_shared_multisample"))              return glx_sgis_shared_multisample;
+  if (!strcmp(ext,"GLX_SGIX_fbconfig"))                        return glx_sgix_fbconfig;
+  if (!strcmp(ext,"GLX_SGIX_hyperpipe"))                       return glx_sgix_hyperpipe;
+  if (!strcmp(ext,"GLX_SGIX_pbuffer"))                         return glx_sgix_pbuffer;
+  if (!strcmp(ext,"GLX_SGIX_swap_barrier"))                    return glx_sgix_swap_barrier;
+  if (!strcmp(ext,"GLX_SGIX_swap_group"))                      return glx_sgix_swap_group;
+  if (!strcmp(ext,"GLX_SGIX_video_resize"))                    return glx_sgix_video_resize;
+  if (!strcmp(ext,"GLX_SGIX_visual_select_group"))             return glx_sgix_visual_select_group;
+  if (!strcmp(ext,"GLX_SGI_cushion"))                          return glx_sgi_cushion;
+  if (!strcmp(ext,"GLX_SGI_make_current_read"))                return glx_sgi_make_current_read;
+  if (!strcmp(ext,"GLX_SGI_swap_control"))                     return glx_sgi_swap_control;
+  if (!strcmp(ext,"GLX_SGI_video_sync"))                       return glx_sgi_video_sync;
+  if (!strcmp(ext,"GLX_SUN_get_transparent_index"))            return glx_sun_get_transparent_index;
+  if (!strcmp(ext,"GLX_SUN_video_resize"))                     return glx_sun_video_resize;
+#endif /* REGAL_SYS_GLX */
 
 #if REGAL_SYS_EGL
-  if (!strcmp(ext,"EGL_ANGLE_query_surface_pointer")) return egl_angle_query_surface_pointer;
+  if (!strcmp(ext,"EGL_ANGLE_query_surface_pointer"))          return egl_angle_query_surface_pointer;
   if (!strcmp(ext,"EGL_ANGLE_surface_d3d_texture_2d_share_handle")) return egl_angle_surface_d3d_texture_2d_share_handle;
-  if (!strcmp(ext,"EGL_EXT_create_context_robustness")) return egl_ext_create_context_robustness;
-  if (!strcmp(ext,"EGL_EXT_multiview_window")) return egl_ext_multiview_window;
-  if (!strcmp(ext,"EGL_HI_colorformats")) return egl_hi_colorformats;
-  if (!strcmp(ext,"EGL_IMG_context_priority")) return egl_img_context_priority;
-  if (!strcmp(ext,"EGL_KHR_config_attribs")) return egl_khr_config_attribs;
-  if (!strcmp(ext,"EGL_KHR_create_context")) return egl_khr_create_context;
-  if (!strcmp(ext,"EGL_KHR_fence_sync")) return egl_khr_fence_sync;
-  if (!strcmp(ext,"EGL_KHR_gl_texture_cubemap_image")) return egl_khr_gl_texture_cubemap_image;
-  if (!strcmp(ext,"EGL_KHR_image_base")) return egl_khr_image_base;
-  if (!strcmp(ext,"EGL_KHR_image_pixmap")) return egl_khr_image_pixmap;
-  if (!strcmp(ext,"EGL_KHR_lock_surface")) return egl_khr_lock_surface;
-  if (!strcmp(ext,"EGL_KHR_lock_surface2")) return egl_khr_lock_surface2;
-  if (!strcmp(ext,"EGL_KHR_reusable_sync")) return egl_khr_reusable_sync;
-  if (!strcmp(ext,"EGL_KHR_stream")) return egl_khr_stream;
-  if (!strcmp(ext,"EGL_KHR_stream_consumer_gltexture")) return egl_khr_stream_consumer_gltexture;
-  if (!strcmp(ext,"EGL_KHR_stream_cross_process_fd")) return egl_khr_stream_cross_process_fd;
-  if (!strcmp(ext,"EGL_KHR_stream_fifo")) return egl_khr_stream_fifo;
-  if (!strcmp(ext,"EGL_KHR_stream_producer_eglsurface")) return egl_khr_stream_producer_eglsurface;
-  if (!strcmp(ext,"EGL_KHR_vg_parent_image")) return egl_khr_vg_parent_image;
-  if (!strcmp(ext,"EGL_KHR_wait_sync")) return egl_khr_wait_sync;
-  if (!strcmp(ext,"EGL_MESA_drm_image")) return egl_mesa_drm_image;
-  if (!strcmp(ext,"EGL_NV_coverage_sample")) return egl_nv_coverage_sample;
-  if (!strcmp(ext,"EGL_NV_coverage_sample_resolve")) return egl_nv_coverage_sample_resolve;
-  if (!strcmp(ext,"EGL_NV_post_sub_buffer")) return egl_nv_post_sub_buffer;
-  if (!strcmp(ext,"EGL_NV_sync")) return egl_nv_sync;
-  if (!strcmp(ext,"EGL_NV_system_time")) return egl_nv_system_time;
-#endif
+  if (!strcmp(ext,"EGL_EXT_create_context_robustness"))        return egl_ext_create_context_robustness;
+  if (!strcmp(ext,"EGL_EXT_multiview_window"))                 return egl_ext_multiview_window;
+  if (!strcmp(ext,"EGL_HI_colorformats"))                      return egl_hi_colorformats;
+  if (!strcmp(ext,"EGL_IMG_context_priority"))                 return egl_img_context_priority;
+  if (!strcmp(ext,"EGL_KHR_config_attribs"))                   return egl_khr_config_attribs;
+  if (!strcmp(ext,"EGL_KHR_create_context"))                   return egl_khr_create_context;
+  if (!strcmp(ext,"EGL_KHR_fence_sync"))                       return egl_khr_fence_sync;
+  if (!strcmp(ext,"EGL_KHR_gl_texture_cubemap_image"))         return egl_khr_gl_texture_cubemap_image;
+  if (!strcmp(ext,"EGL_KHR_image_base"))                       return egl_khr_image_base;
+  if (!strcmp(ext,"EGL_KHR_image_pixmap"))                     return egl_khr_image_pixmap;
+  if (!strcmp(ext,"EGL_KHR_lock_surface"))                     return egl_khr_lock_surface;
+  if (!strcmp(ext,"EGL_KHR_lock_surface2"))                    return egl_khr_lock_surface2;
+  if (!strcmp(ext,"EGL_KHR_reusable_sync"))                    return egl_khr_reusable_sync;
+  if (!strcmp(ext,"EGL_KHR_stream"))                           return egl_khr_stream;
+  if (!strcmp(ext,"EGL_KHR_stream_consumer_gltexture"))        return egl_khr_stream_consumer_gltexture;
+  if (!strcmp(ext,"EGL_KHR_stream_cross_process_fd"))          return egl_khr_stream_cross_process_fd;
+  if (!strcmp(ext,"EGL_KHR_stream_fifo"))                      return egl_khr_stream_fifo;
+  if (!strcmp(ext,"EGL_KHR_stream_producer_eglsurface"))       return egl_khr_stream_producer_eglsurface;
+  if (!strcmp(ext,"EGL_KHR_vg_parent_image"))                  return egl_khr_vg_parent_image;
+  if (!strcmp(ext,"EGL_KHR_wait_sync"))                        return egl_khr_wait_sync;
+  if (!strcmp(ext,"EGL_MESA_drm_image"))                       return egl_mesa_drm_image;
+  if (!strcmp(ext,"EGL_NV_coverage_sample"))                   return egl_nv_coverage_sample;
+  if (!strcmp(ext,"EGL_NV_coverage_sample_resolve"))           return egl_nv_coverage_sample_resolve;
+  if (!strcmp(ext,"EGL_NV_post_sub_buffer"))                   return egl_nv_post_sub_buffer;
+  if (!strcmp(ext,"EGL_NV_sync"))                              return egl_nv_sync;
+  if (!strcmp(ext,"EGL_NV_system_time"))                       return egl_nv_system_time;
+#endif /* REGAL_SYS_EGL */
 
-return false;
+  return false;
 }
 
 REGAL_NAMESPACE_END
diff --git a/src/regal/RegalContextInfo.h b/src/regal/RegalContextInfo.h
index a5e3afa..e45f180 100644
--- a/src/regal/RegalContextInfo.h
+++ b/src/regal/RegalContextInfo.h
@@ -710,7 +710,7 @@
   GLboolean wgl_nv_video_capture : 1;
   GLboolean wgl_nv_video_output : 1;
   GLboolean wgl_oml_sync_control : 1;
-#endif
+#endif /* REGAL_SYS_WGL */
 
 #if REGAL_SYS_GLX
   GLboolean glx_3dfx_multisample : 1;
@@ -770,7 +770,7 @@
   GLboolean glx_sgi_video_sync : 1;
   GLboolean glx_sun_get_transparent_index : 1;
   GLboolean glx_sun_video_resize : 1;
-#endif
+#endif /* REGAL_SYS_GLX */
 
 #if REGAL_SYS_EGL
   GLboolean egl_angle_query_surface_pointer : 1;
@@ -801,7 +801,7 @@
   GLboolean egl_nv_post_sub_buffer : 1;
   GLboolean egl_nv_sync : 1;
   GLboolean egl_nv_system_time : 1;
-#endif
+#endif /* REGAL_SYS_EGL */
 
   // Driver context limits
 
diff --git a/src/regal/RegalEmuInfo.cpp b/src/regal/RegalEmuInfo.cpp
index 86018c7..870ea6e 100644
--- a/src/regal/RegalEmuInfo.cpp
+++ b/src/regal/RegalEmuInfo.cpp
@@ -243,6 +243,8 @@
 {
   Internal("EmuInfo::getExtension ",boost::print::quote(ext,'"'));
 
+  // If the context supports it, we're done.
+
   if (contextInfo.getExtension(ext))
     return true;
 
@@ -276,7 +278,7 @@
   if (!strcmp(ext,"GL_REGAL_extension_query"))          return true;
   if (!strcmp(ext,"GL_REGAL_log"))                      return true;
 
-return false;
+  return false;
 }
 
 bool
diff --git a/src/regal/RegalJson.cpp b/src/regal/RegalJson.cpp
index 8aa5c47..18c1316 100644
--- a/src/regal/RegalJson.cpp
+++ b/src/regal/RegalJson.cpp
@@ -136,6 +136,10 @@
   JSON_REGAL_CONFIG_FRAME_SAVE_PREFIX,
   JSON_REGAL_CONFIG_FRAME_SAVE_PREFIX,
   JSON_REGAL_CONFIG,
+  JSON_REGAL_CONFIG_LOAD,
+  JSON_REGAL_CONFIG_LOAD,
+  JSON_REGAL_CONFIG_LOAD,
+  JSON_REGAL_CONFIG,
   JSON_REGAL_CONFIG_SYSTEM,
   JSON_REGAL_CONFIG_SYSTEM,
   JSON_REGAL_CONFIG_SYSTEM,
@@ -202,6 +206,7 @@
       if (name=="dispatch"    ) { current = JSON_REGAL_CONFIG_DISPATCH;                        return; }
       if (name=="force"       ) { current = JSON_REGAL_CONFIG_FORCE;                           return; }
       if (name=="frame"       ) { current = JSON_REGAL_CONFIG_FRAME;                           return; }
+      if (name=="load"        ) { current = JSON_REGAL_CONFIG_LOAD;                            return; }
       if (name=="system"      ) { current = JSON_REGAL_CONFIG_SYSTEM;                          return; }
       if (name=="trace"       ) { current = JSON_REGAL_CONFIG_TRACE;                           return; }
       break;
@@ -326,6 +331,12 @@
       if (name=="stencil"     ) { current = JSON_REGAL_CONFIG_FRAME_SAVE_PREFIX_STENCIL;       return; }
       break;
 
+    case JSON_REGAL_CONFIG_LOAD:
+      if (name=="EGL"         ) { current = JSON_REGAL_CONFIG_LOAD_EGL;                        return; }
+      if (name=="ES2"         ) { current = JSON_REGAL_CONFIG_LOAD_ES2;                        return; }
+      if (name=="GL"          ) { current = JSON_REGAL_CONFIG_LOAD_GL;                         return; }
+      break;
+
     case JSON_REGAL_CONFIG_SYSTEM:
       if (name=="EGL"         ) { current = JSON_REGAL_CONFIG_SYSTEM_EGL;                      return; }
       if (name=="ES1"         ) { current = JSON_REGAL_CONFIG_SYSTEM_ES1;                      return; }
@@ -522,6 +533,9 @@
     case JSON_REGAL_CONFIG_FRAME_SAVE_PREFIX_COLOR         : { set_json_regal_config_frame_save_prefix_color(value);        return; }
     case JSON_REGAL_CONFIG_FRAME_SAVE_PREFIX_DEPTH         : { set_json_regal_config_frame_save_prefix_depth(value);        return; }
     case JSON_REGAL_CONFIG_FRAME_SAVE_PREFIX_STENCIL       : { set_json_regal_config_frame_save_prefix_stencil(value);      return; }
+    case JSON_REGAL_CONFIG_LOAD_EGL                        : { set_json_regal_config_load_egl(value);                       return; }
+    case JSON_REGAL_CONFIG_LOAD_ES2                        : { set_json_regal_config_load_es2(value);                       return; }
+    case JSON_REGAL_CONFIG_LOAD_GL                         : { set_json_regal_config_load_gl(value);                        return; }
     case JSON_REGAL_CONFIG_TRACE_FILE                      : { set_json_regal_config_trace_file(value);                     return; }
     case JSON_REGAL_LOGGING_FILENAME                       : { set_json_regal_logging_filename(value);                      return; }
     case JSON_REGAL_LOGGING_JSONFILE                       : { set_json_regal_logging_jsonfile(value);                      return; }
diff --git a/src/regal/RegalJson.h b/src/regal/RegalJson.h
index 2ef5c2e..2563e6f 100644
--- a/src/regal/RegalJson.h
+++ b/src/regal/RegalJson.h
@@ -131,6 +131,10 @@
   JSON_REGAL_CONFIG_FRAME_SAVE_PREFIX_COLOR,
   JSON_REGAL_CONFIG_FRAME_SAVE_PREFIX_DEPTH,
   JSON_REGAL_CONFIG_FRAME_SAVE_PREFIX_STENCIL,
+  JSON_REGAL_CONFIG_LOAD,
+  JSON_REGAL_CONFIG_LOAD_EGL,
+  JSON_REGAL_CONFIG_LOAD_ES2,
+  JSON_REGAL_CONFIG_LOAD_GL,
   JSON_REGAL_CONFIG_SYSTEM,
   JSON_REGAL_CONFIG_SYSTEM_EGL,
   JSON_REGAL_CONFIG_SYSTEM_ES1,
diff --git a/src/regal/RegalJson.inl b/src/regal/RegalJson.inl
index 1eb0361..40bade9 100644
--- a/src/regal/RegalJson.inl
+++ b/src/regal/RegalJson.inl
@@ -67,6 +67,9 @@
 #define set_json_regal_config_frame_save_prefix_color(value)             Config::frameSaveColorPrefix = value
 #define set_json_regal_config_frame_save_prefix_depth(value)             Config::frameSaveDepthPrefix = value
 #define set_json_regal_config_frame_save_prefix_stencil(value)           Config::frameSaveStencilPrefix = value
+#define set_json_regal_config_load_egl(value)                            Config::loadEGL = value
+#define set_json_regal_config_load_es2(value)                            Config::loadES2 = value
+#define set_json_regal_config_load_gl(value)                             Config::loadGL = value
 #define set_json_regal_config_system_egl(value)                          Config::sysEGL = value
 #define set_json_regal_config_system_es1(value)                          Config::sysES1 = value
 #define set_json_regal_config_system_es2(value)                          Config::sysES2 = value
diff --git a/src/regal/RegalLookup.cpp b/src/regal/RegalLookup.cpp
index fd971dc..8147196 100644
--- a/src/regal/RegalLookup.cpp
+++ b/src/regal/RegalLookup.cpp
@@ -8607,8 +8607,7 @@
   0
 };
 
-#endif
-
+#endif /* REGAL_SYS_WGL */
 #if REGAL_SYS_GLX
 const char * const glx_Name[123] = {
   "glXAllocateMemoryNV",
@@ -8988,8 +8987,7 @@
   0
 };
 
-#endif
-
+#endif /* REGAL_SYS_GLX */
 #if REGAL_SYS_OSX
 const char * const cgl_Name[53] = {
   "CGLChoosePixelFormat",
@@ -9159,8 +9157,7 @@
   0
 };
 
-#endif
-
+#endif /* REGAL_SYS_OSX */
 #if REGAL_SYS_EGL
 const char * const egl_Name[64] = {
   "eglBindAPI",
@@ -9363,7 +9360,7 @@
   0
 };
 
-#endif
+#endif /* REGAL_SYS_EGL */
 
 }
 
diff --git a/src/regal/RegalLookup.h b/src/regal/RegalLookup.h
index 2f49b56..1d9ad20 100644
--- a/src/regal/RegalLookup.h
+++ b/src/regal/RegalLookup.h
@@ -61,7 +61,6 @@
 
 extern const char * const gl_Name[2701];
 extern const void *gl_Value[2701];
-extern const size_t gl_Offset[2701];
 
 template<typename T>
 T
@@ -71,6 +70,8 @@
   return res ? reinterpret_cast<T>(const_cast<void *>(gl_Value[(size_t) (res - gl_Name)])) : def;
 }
 
+extern const size_t gl_Offset[2701];
+
 inline size_t gl_LookupOffset(const char *name)
 {
   const char **res = (const char **) std::bsearch(&name, gl_Name, 2700, sizeof(const char *), NameCmp);
@@ -81,7 +82,6 @@
 
 extern const char * const wgl_Name[144];
 extern const void *wgl_Value[144];
-extern const size_t wgl_Offset[144];
 
 template<typename T>
 T
@@ -91,19 +91,19 @@
   return res ? reinterpret_cast<T>(const_cast<void *>(wgl_Value[(size_t) (res - wgl_Name)])) : def;
 }
 
+extern const size_t wgl_Offset[144];
+
 inline size_t wgl_LookupOffset(const char *name)
 {
   const char **res = (const char **) std::bsearch(&name, wgl_Name, 143, sizeof(const char *), NameCmp);
   return res ? wgl_Offset[(size_t) (res - wgl_Name)] : 0;
 }
 
-#endif
-
+#endif /* REGAL_SYS_WGL */
 #if REGAL_SYS_GLX
 
 extern const char * const glx_Name[123];
 extern const void *glx_Value[123];
-extern const size_t glx_Offset[123];
 
 template<typename T>
 T
@@ -113,19 +113,19 @@
   return res ? reinterpret_cast<T>(const_cast<void *>(glx_Value[(size_t) (res - glx_Name)])) : def;
 }
 
+extern const size_t glx_Offset[123];
+
 inline size_t glx_LookupOffset(const char *name)
 {
   const char **res = (const char **) std::bsearch(&name, glx_Name, 122, sizeof(const char *), NameCmp);
   return res ? glx_Offset[(size_t) (res - glx_Name)] : 0;
 }
 
-#endif
-
+#endif /* REGAL_SYS_GLX */
 #if REGAL_SYS_OSX
 
 extern const char * const cgl_Name[53];
 extern const void *cgl_Value[53];
-extern const size_t cgl_Offset[53];
 
 template<typename T>
 T
@@ -135,19 +135,19 @@
   return res ? reinterpret_cast<T>(const_cast<void *>(cgl_Value[(size_t) (res - cgl_Name)])) : def;
 }
 
+extern const size_t cgl_Offset[53];
+
 inline size_t cgl_LookupOffset(const char *name)
 {
   const char **res = (const char **) std::bsearch(&name, cgl_Name, 52, sizeof(const char *), NameCmp);
   return res ? cgl_Offset[(size_t) (res - cgl_Name)] : 0;
 }
 
-#endif
-
+#endif /* REGAL_SYS_OSX */
 #if REGAL_SYS_EGL
 
 extern const char * const egl_Name[64];
 extern const void *egl_Value[64];
-extern const size_t egl_Offset[64];
 
 template<typename T>
 T
@@ -157,13 +157,15 @@
   return res ? reinterpret_cast<T>(const_cast<void *>(egl_Value[(size_t) (res - egl_Name)])) : def;
 }
 
+extern const size_t egl_Offset[64];
+
 inline size_t egl_LookupOffset(const char *name)
 {
   const char **res = (const char **) std::bsearch(&name, egl_Name, 63, sizeof(const char *), NameCmp);
   return res ? egl_Offset[(size_t) (res - egl_Name)] : 0;
 }
 
-#endif
+#endif /* REGAL_SYS_EGL */
 
 }
 
diff --git a/src/regal/RegalUtil.cpp b/src/regal/RegalUtil.cpp
index a8d672b..1015525 100644
--- a/src/regal/RegalUtil.cpp
+++ b/src/regal/RegalUtil.cpp
@@ -143,7 +143,9 @@
 
   if (library==LIBRARY_GL || library==LIBRARY_WGL || library==LIBRARY_GLX)
   {
-    // First, try ... variable
+    // First, try configured variable
+
+    ret = Config::loadGL.length() ? Config::loadGL.c_str() : NULL;
 
     // Second, try default installation location
 
@@ -251,7 +253,9 @@
 
   if (library==LIBRARY_ES2)
   {
-    // First, try ... variable
+    // First, try configured variable
+
+    ret = Config::loadES2.length() ? Config::loadES2.c_str() : NULL;
 
     // Second, try default installation location
 
@@ -273,7 +277,9 @@
 
   if (library==LIBRARY_EGL)
   {
-    // First, try ... variable
+    // First, try configured variable
+
+    ret = Config::loadEGL.length() ? Config::loadEGL.c_str() : NULL;
 
     // Second, try default installation location